{"version":3,"file":"446.js","mappings":"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","sources":["webpack://new_ui/./node_modules/draft-js/lib/AtomicBlockUtils.js","webpack://new_ui/./node_modules/draft-js/lib/BlockMapBuilder.js","webpack://new_ui/./node_modules/draft-js/lib/BlockTree.js","webpack://new_ui/./node_modules/draft-js/lib/CharacterMetadata.js","webpack://new_ui/./node_modules/draft-js/lib/CompositeDraftDecorator.js","webpack://new_ui/./node_modules/draft-js/lib/ContentBlock.js","webpack://new_ui/./node_modules/draft-js/lib/ContentBlockNode.js","webpack://new_ui/./node_modules/draft-js/lib/ContentState.js","webpack://new_ui/./node_modules/draft-js/lib/ContentStateInlineStyle.js","webpack://new_ui/./node_modules/draft-js/lib/DOMObserver.js","webpack://new_ui/./node_modules/draft-js/lib/DefaultDraftBlockRenderMap.js","webpack://new_ui/./node_modules/draft-js/lib/DefaultDraftInlineStyle.js","webpack://new_ui/./node_modules/draft-js/lib/Draft.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditor.react.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorBlock.react.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorBlockNode.react.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorCompositionHandler.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorContents-core.react.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorContents.react.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorContentsExperimental.react.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorDecoratedLeaves.react.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorDragHandler.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorEditHandler.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorFlushControlled.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorLeaf.react.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorNode.react.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorPlaceholder.react.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEditorTextNode.react.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEffects.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEntity.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEntityInstance.js","webpack://new_ui/./node_modules/draft-js/lib/DraftEntitySegments.js","webpack://new_ui/./node_modules/draft-js/lib/DraftJsDebugLogging.js","webpack://new_ui/./node_modules/draft-js/lib/DraftModifier.js","webpack://new_ui/./node_modules/draft-js/lib/DraftOffsetKey.js","webpack://new_ui/./node_modules/draft-js/lib/DraftPasteProcessor.js","webpack://new_ui/./node_modules/draft-js/lib/DraftRemovableWord.js","webpack://new_ui/./node_modules/draft-js/lib/DraftStringKey.js","webpack://new_ui/./node_modules/draft-js/lib/DraftTreeAdapter.js","webpack://new_ui/./node_modules/draft-js/lib/DraftTreeInvariants.js","webpack://new_ui/./node_modules/draft-js/lib/EditorBidiService.js","webpack://new_ui/./node_modules/draft-js/lib/EditorState.js","webpack://new_ui/./node_modules/draft-js/lib/KeyBindingUtil.js","webpack://new_ui/./node_modules/draft-js/lib/RichTextEditorUtil.js","webpack://new_ui/./node_modules/draft-js/lib/SecondaryClipboard.js","webpack://new_ui/./node_modules/draft-js/lib/SelectionState.js","webpack://new_ui/./node_modules/draft-js/lib/adjustBlockDepthForContentState.js","webpack://new_ui/./node_modules/draft-js/lib/applyEntityToContentBlock.js","webpack://new_ui/./node_modules/draft-js/lib/applyEntityToContentState.js","webpack://new_ui/./node_modules/draft-js/lib/convertFromDraftStateToRaw.js","webpack://new_ui/./node_modules/draft-js/lib/convertFromHTMLToContentBlocks.js","webpack://new_ui/./node_modules/draft-js/lib/convertFromRawToDraftState.js","webpack://new_ui/./node_modules/draft-js/lib/createCharacterList.js","webpack://new_ui/./node_modules/draft-js/lib/decodeEntityRanges.js","webpack://new_ui/./node_modules/draft-js/lib/decodeInlineStyleRanges.js","webpack://new_ui/./node_modules/draft-js/lib/draftKeyUtils.js","webpack://new_ui/./node_modules/draft-js/lib/editOnBeforeInput.js","webpack://new_ui/./node_modules/draft-js/lib/editOnBlur.js","webpack://new_ui/./node_modules/draft-js/lib/editOnCompositionStart.js","webpack://new_ui/./node_modules/draft-js/lib/editOnCopy.js","webpack://new_ui/./node_modules/draft-js/lib/editOnCut.js","webpack://new_ui/./node_modules/draft-js/lib/editOnDragOver.js","webpack://new_ui/./node_modules/draft-js/lib/editOnDragStart.js","webpack://new_ui/./node_modules/draft-js/lib/editOnFocus.js","webpack://new_ui/./node_modules/draft-js/lib/editOnInput.js","webpack://new_ui/./node_modules/draft-js/lib/editOnKeyDown.js","webpack://new_ui/./node_modules/draft-js/lib/editOnPaste.js","webpack://new_ui/./node_modules/draft-js/lib/editOnSelect.js","webpack://new_ui/./node_modules/draft-js/lib/encodeEntityRanges.js","webpack://new_ui/./node_modules/draft-js/lib/encodeInlineStyleRanges.js","webpack://new_ui/./node_modules/draft-js/lib/expandRangeToStartOfLine.js","webpack://new_ui/./node_modules/draft-js/lib/findAncestorOffsetKey.js","webpack://new_ui/./node_modules/draft-js/lib/findRangesImmutable.js","webpack://new_ui/./node_modules/draft-js/lib/generateRandomKey.js","webpack://new_ui/./node_modules/draft-js/lib/getCharacterRemovalRange.js","webpack://new_ui/./node_modules/draft-js/lib/getContentEditableContainer.js","webpack://new_ui/./node_modules/draft-js/lib/getContentStateFragment.js","webpack://new_ui/./node_modules/draft-js/lib/getCorrectDocumentFromNode.js","webpack://new_ui/./node_modules/draft-js/lib/getDefaultKeyBinding.js","webpack://new_ui/./node_modules/draft-js/lib/getDraftEditorSelection.js","webpack://new_ui/./node_modules/draft-js/lib/getDraftEditorSelectionWithNodes.js","webpack://new_ui/./node_modules/draft-js/lib/getEntityKeyForSelection.js","webpack://new_ui/./node_modules/draft-js/lib/getFragmentFromSelection.js","webpack://new_ui/./node_modules/draft-js/lib/getNextDelimiterBlockKey.js","webpack://new_ui/./node_modules/draft-js/lib/getOwnObjectValues.js","webpack://new_ui/./node_modules/draft-js/lib/getRangeBoundingClientRect.js","webpack://new_ui/./node_modules/draft-js/lib/getRangeClientRects.js","webpack://new_ui/./node_modules/draft-js/lib/getRangesForDraftEntity.js","webpack://new_ui/./node_modules/draft-js/lib/getSafeBodyFromHTML.js","webpack://new_ui/./node_modules/draft-js/lib/getSelectionOffsetKeyForNode.js","webpack://new_ui/./node_modules/draft-js/lib/getTextContentFromFiles.js","webpack://new_ui/./node_modules/draft-js/lib/getUpdatedSelectionState.js","webpack://new_ui/./node_modules/draft-js/lib/getVisibleSelectionRect.js","webpack://new_ui/./node_modules/draft-js/lib/getWindowForNode.js","webpack://new_ui/./node_modules/draft-js/lib/gkx.js","webpack://new_ui/./node_modules/draft-js/lib/insertFragmentIntoContentState.js","webpack://new_ui/./node_modules/draft-js/lib/insertIntoList.js","webpack://new_ui/./node_modules/draft-js/lib/insertTextIntoContentState.js","webpack://new_ui/./node_modules/draft-js/lib/isElement.js","webpack://new_ui/./node_modules/draft-js/lib/isEventHandled.js","webpack://new_ui/./node_modules/draft-js/lib/isHTMLAnchorElement.js","webpack://new_ui/./node_modules/draft-js/lib/isHTMLBRElement.js","webpack://new_ui/./node_modules/draft-js/lib/isHTMLElement.js","webpack://new_ui/./node_modules/draft-js/lib/isHTMLImageElement.js","webpack://new_ui/./node_modules/draft-js/lib/isInstanceOfNode.js","webpack://new_ui/./node_modules/draft-js/lib/isSelectionAtLeafStart.js","webpack://new_ui/./node_modules/draft-js/lib/isSoftNewlineEvent.js","webpack://new_ui/./node_modules/draft-js/lib/keyCommandBackspaceToStartOfLine.js","webpack://new_ui/./node_modules/draft-js/lib/keyCommandBackspaceWord.js","webpack://new_ui/./node_modules/draft-js/lib/keyCommandDeleteWord.js","webpack://new_ui/./node_modules/draft-js/lib/keyCommandInsertNewline.js","webpack://new_ui/./node_modules/draft-js/lib/keyCommandMoveSelectionToEndOfBlock.js","webpack://new_ui/./node_modules/draft-js/lib/keyCommandMoveSelectionToStartOfBlock.js","webpack://new_ui/./node_modules/draft-js/lib/keyCommandPlainBackspace.js","webpack://new_ui/./node_modules/draft-js/lib/keyCommandPlainDelete.js","webpack://new_ui/./node_modules/draft-js/lib/keyCommandTransposeCharacters.js","webpack://new_ui/./node_modules/draft-js/lib/keyCommandUndo.js","webpack://new_ui/./node_modules/draft-js/lib/modifyBlockForContentState.js","webpack://new_ui/./node_modules/draft-js/lib/moveBlockInContentState.js","webpack://new_ui/./node_modules/draft-js/lib/moveSelectionBackward.js","webpack://new_ui/./node_modules/draft-js/lib/moveSelectionForward.js","webpack://new_ui/./node_modules/draft-js/lib/randomizeBlockMapKeys.js","webpack://new_ui/./node_modules/draft-js/lib/removeEntitiesAtEdges.js","webpack://new_ui/./node_modules/draft-js/lib/removeRangeFromContentState.js","webpack://new_ui/./node_modules/draft-js/lib/removeTextWithStrategy.js","webpack://new_ui/./node_modules/draft-js/lib/sanitizeDraftText.js","webpack://new_ui/./node_modules/draft-js/lib/setDraftEditorSelection.js","webpack://new_ui/./node_modules/draft-js/lib/splitBlockInContentState.js","webpack://new_ui/./node_modules/draft-js/lib/splitTextIntoTextBlocks.js","webpack://new_ui/./node_modules/draft-js/lib/uuid.js","webpack://new_ui/./node_modules/fbjs/lib/DataTransfer.js","webpack://new_ui/./node_modules/fbjs/lib/Keys.js","webpack://new_ui/./node_modules/fbjs/lib/PhotosMimeType.js","webpack://new_ui/./node_modules/fbjs/lib/Scroll.js","webpack://new_ui/./node_modules/fbjs/lib/Style.js","webpack://new_ui/./node_modules/fbjs/lib/TokenizeUtil.js","webpack://new_ui/./node_modules/fbjs/lib/URI.js","webpack://new_ui/./node_modules/fbjs/lib/UnicodeBidi.js","webpack://new_ui/./node_modules/fbjs/lib/UnicodeBidiDirection.js","webpack://new_ui/./node_modules/fbjs/lib/UnicodeBidiService.js","webpack://new_ui/./node_modules/fbjs/lib/UnicodeUtils.js","webpack://new_ui/./node_modules/fbjs/lib/UserAgent.js","webpack://new_ui/./node_modules/fbjs/lib/UserAgentData.js","webpack://new_ui/./node_modules/fbjs/lib/VersionRange.js","webpack://new_ui/./node_modules/fbjs/lib/camelize.js","webpack://new_ui/./node_modules/fbjs/lib/containsNode.js","webpack://new_ui/./node_modules/fbjs/lib/createArrayFromMixed.js","webpack://new_ui/./node_modules/fbjs/lib/cx.js","webpack://new_ui/./node_modules/fbjs/lib/emptyFunction.js","webpack://new_ui/./node_modules/fbjs/lib/getActiveElement.js","webpack://new_ui/./node_modules/fbjs/lib/getDocumentScrollElement.js","webpack://new_ui/./node_modules/fbjs/lib/getElementPosition.js","webpack://new_ui/./node_modules/fbjs/lib/getElementRect.js","webpack://new_ui/./node_modules/fbjs/lib/getScrollPosition.js","webpack://new_ui/./node_modules/fbjs/lib/getStyleProperty.js","webpack://new_ui/./node_modules/fbjs/lib/getUnboundedScrollPosition.js","webpack://new_ui/./node_modules/fbjs/lib/getViewportDimensions.js","webpack://new_ui/./node_modules/fbjs/lib/hyphenate.js","webpack://new_ui/./node_modules/fbjs/lib/invariant.js","webpack://new_ui/./node_modules/fbjs/lib/isNode.js","webpack://new_ui/./node_modules/fbjs/lib/isTextNode.js","webpack://new_ui/./node_modules/fbjs/lib/joinClasses.js","webpack://new_ui/./node_modules/fbjs/lib/mapObject.js","webpack://new_ui/./node_modules/fbjs/lib/memoizeStringOnly.js","webpack://new_ui/./node_modules/fbjs/lib/nullthrows.js","webpack://new_ui/./node_modules/fbjs/lib/setImmediate.js","webpack://new_ui/./node_modules/fbjs/lib/warning.js","webpack://new_ui/./node_modules/immutable/dist/immutable.js","webpack://new_ui/./node_modules/object-assign/index.js","webpack://new_ui/./node_modules/react-highlight-within-textarea/lib/esm/Selection.js","webpack://new_ui/./node_modules/react-highlight-within-textarea/lib/esm/highlightToStrategyAndComponents.js","webpack://new_ui/./node_modules/react-highlight-within-textarea/lib/esm/createDecorator.js","webpack://new_ui/./node_modules/react-highlight-within-textarea/lib/esm/HighlightWithinTextarea.js","webpack://new_ui/./node_modules/setimmediate/setImmediate.js","webpack://new_ui/./node_modules/ua-parser-js/src/ua-parser.js"],"sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar moveBlockInContentState = require(\"./moveBlockInContentState\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\nvar List = Immutable.List,\n Repeat = Immutable.Repeat;\nvar AtomicBlockUtils = {\n insertAtomicBlock: function insertAtomicBlock(editorState, entityKey, character) {\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n var afterRemoval = DraftModifier.removeRange(contentState, selectionState, 'backward');\n var targetSelection = afterRemoval.getSelectionAfter();\n var afterSplit = DraftModifier.splitBlock(afterRemoval, targetSelection);\n var insertionTarget = afterSplit.getSelectionAfter();\n var asAtomicBlock = DraftModifier.setBlockType(afterSplit, insertionTarget, 'atomic');\n var charData = CharacterMetadata.create({\n entity: entityKey\n });\n var atomicBlockConfig = {\n key: generateRandomKey(),\n type: 'atomic',\n text: character,\n characterList: List(Repeat(charData, character.length))\n };\n var atomicDividerBlockConfig = {\n key: generateRandomKey(),\n type: 'unstyled'\n };\n\n if (experimentalTreeDataSupport) {\n atomicBlockConfig = _objectSpread({}, atomicBlockConfig, {\n nextSibling: atomicDividerBlockConfig.key\n });\n atomicDividerBlockConfig = _objectSpread({}, atomicDividerBlockConfig, {\n prevSibling: atomicBlockConfig.key\n });\n }\n\n var fragmentArray = [new ContentBlockRecord(atomicBlockConfig), new ContentBlockRecord(atomicDividerBlockConfig)];\n var fragment = BlockMapBuilder.createFromArray(fragmentArray);\n var withAtomicBlock = DraftModifier.replaceWithFragment(asAtomicBlock, insertionTarget, fragment);\n var newContent = withAtomicBlock.merge({\n selectionBefore: selectionState,\n selectionAfter: withAtomicBlock.getSelectionAfter().set('hasFocus', true)\n });\n return EditorState.push(editorState, newContent, 'insert-fragment');\n },\n moveAtomicBlock: function moveAtomicBlock(editorState, atomicBlock, targetRange, insertionMode) {\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n var withMovedAtomicBlock;\n\n if (insertionMode === 'before' || insertionMode === 'after') {\n var targetBlock = contentState.getBlockForKey(insertionMode === 'before' ? targetRange.getStartKey() : targetRange.getEndKey());\n withMovedAtomicBlock = moveBlockInContentState(contentState, atomicBlock, targetBlock, insertionMode);\n } else {\n var afterRemoval = DraftModifier.removeRange(contentState, targetRange, 'backward');\n var selectionAfterRemoval = afterRemoval.getSelectionAfter();\n\n var _targetBlock = afterRemoval.getBlockForKey(selectionAfterRemoval.getFocusKey());\n\n if (selectionAfterRemoval.getStartOffset() === 0) {\n withMovedAtomicBlock = moveBlockInContentState(afterRemoval, atomicBlock, _targetBlock, 'before');\n } else if (selectionAfterRemoval.getEndOffset() === _targetBlock.getLength()) {\n withMovedAtomicBlock = moveBlockInContentState(afterRemoval, atomicBlock, _targetBlock, 'after');\n } else {\n var afterSplit = DraftModifier.splitBlock(afterRemoval, selectionAfterRemoval);\n var selectionAfterSplit = afterSplit.getSelectionAfter();\n\n var _targetBlock2 = afterSplit.getBlockForKey(selectionAfterSplit.getFocusKey());\n\n withMovedAtomicBlock = moveBlockInContentState(afterSplit, atomicBlock, _targetBlock2, 'before');\n }\n }\n\n var newContent = withMovedAtomicBlock.merge({\n selectionBefore: selectionState,\n selectionAfter: withMovedAtomicBlock.getSelectionAfter().set('hasFocus', true)\n });\n return EditorState.push(editorState, newContent, 'move-block');\n }\n};\nmodule.exports = AtomicBlockUtils;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\nvar BlockMapBuilder = {\n createFromArray: function createFromArray(blocks) {\n return OrderedMap(blocks.map(function (block) {\n return [block.getKey(), block];\n }));\n }\n};\nmodule.exports = BlockMapBuilder;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar getOwnObjectValues = require(\"./getOwnObjectValues\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Repeat = Immutable.Repeat,\n Record = Immutable.Record;\n\nvar returnTrue = function returnTrue() {\n return true;\n};\n\nvar defaultLeafRange = {\n start: null,\n end: null\n};\nvar LeafRange = Record(defaultLeafRange);\nvar defaultDecoratorRange = {\n start: null,\n end: null,\n decoratorKey: null,\n leaves: null\n};\nvar DecoratorRange = Record(defaultDecoratorRange);\nvar BlockTree = {\n /**\n * Generate a block tree for a given ContentBlock/decorator pair.\n */\n generate: function generate(contentState, block, decorator) {\n var textLength = block.getLength();\n\n if (!textLength) {\n return List.of(new DecoratorRange({\n start: 0,\n end: 0,\n decoratorKey: null,\n leaves: List.of(new LeafRange({\n start: 0,\n end: 0\n }))\n }));\n }\n\n var leafSets = [];\n var decorations = decorator ? decorator.getDecorations(block, contentState) : List(Repeat(null, textLength));\n var chars = block.getCharacterList();\n findRangesImmutable(decorations, areEqual, returnTrue, function (start, end) {\n leafSets.push(new DecoratorRange({\n start: start,\n end: end,\n decoratorKey: decorations.get(start),\n leaves: generateLeaves(chars.slice(start, end).toList(), start)\n }));\n });\n return List(leafSets);\n },\n fromJS: function fromJS(_ref) {\n var leaves = _ref.leaves,\n other = _objectWithoutPropertiesLoose(_ref, [\"leaves\"]);\n\n return new DecoratorRange(_objectSpread({}, other, {\n leaves: leaves != null ? List(Array.isArray(leaves) ? leaves : getOwnObjectValues(leaves)).map(function (leaf) {\n return LeafRange(leaf);\n }) : null\n }));\n }\n};\n/**\n * Generate LeafRange records for a given character list.\n */\n\nfunction generateLeaves(characters, offset) {\n var leaves = [];\n var inlineStyles = characters.map(function (c) {\n return c.getStyle();\n }).toList();\n findRangesImmutable(inlineStyles, areEqual, returnTrue, function (start, end) {\n leaves.push(new LeafRange({\n start: start + offset,\n end: end + offset\n }));\n });\n return List(leaves);\n}\n\nfunction areEqual(a, b) {\n return a === b;\n}\n\nmodule.exports = BlockTree;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar _require = require(\"immutable\"),\n Map = _require.Map,\n OrderedSet = _require.OrderedSet,\n Record = _require.Record; // Immutable.map is typed such that the value for every key in the map\n// must be the same type\n\n\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n style: EMPTY_SET,\n entity: null\n};\nvar CharacterMetadataRecord = Record(defaultRecord);\n\nvar CharacterMetadata = /*#__PURE__*/function (_CharacterMetadataRec) {\n _inheritsLoose(CharacterMetadata, _CharacterMetadataRec);\n\n function CharacterMetadata() {\n return _CharacterMetadataRec.apply(this, arguments) || this;\n }\n\n var _proto = CharacterMetadata.prototype;\n\n _proto.getStyle = function getStyle() {\n return this.get('style');\n };\n\n _proto.getEntity = function getEntity() {\n return this.get('entity');\n };\n\n _proto.hasStyle = function hasStyle(style) {\n return this.getStyle().includes(style);\n };\n\n CharacterMetadata.applyStyle = function applyStyle(record, style) {\n var withStyle = record.set('style', record.getStyle().add(style));\n return CharacterMetadata.create(withStyle);\n };\n\n CharacterMetadata.removeStyle = function removeStyle(record, style) {\n var withoutStyle = record.set('style', record.getStyle().remove(style));\n return CharacterMetadata.create(withoutStyle);\n };\n\n CharacterMetadata.applyEntity = function applyEntity(record, entityKey) {\n var withEntity = record.getEntity() === entityKey ? record : record.set('entity', entityKey);\n return CharacterMetadata.create(withEntity);\n }\n /**\n * Use this function instead of the `CharacterMetadata` constructor.\n * Since most content generally uses only a very small number of\n * style/entity permutations, we can reuse these objects as often as\n * possible.\n */\n ;\n\n CharacterMetadata.create = function create(config) {\n if (!config) {\n return EMPTY;\n }\n\n var defaultConfig = {\n style: EMPTY_SET,\n entity: null\n }; // Fill in unspecified properties, if necessary.\n\n var configMap = Map(defaultConfig).merge(config);\n var existing = pool.get(configMap);\n\n if (existing) {\n return existing;\n }\n\n var newCharacter = new CharacterMetadata(configMap);\n pool = pool.set(configMap, newCharacter);\n return newCharacter;\n };\n\n CharacterMetadata.fromJS = function fromJS(_ref) {\n var style = _ref.style,\n entity = _ref.entity;\n return new CharacterMetadata({\n style: Array.isArray(style) ? OrderedSet(style) : style,\n entity: Array.isArray(entity) ? OrderedSet(entity) : entity\n });\n };\n\n return CharacterMetadata;\n}(CharacterMetadataRecord);\n\nvar EMPTY = new CharacterMetadata();\nvar pool = Map([[Map(defaultRecord), EMPTY]]);\nCharacterMetadata.EMPTY = EMPTY;\nmodule.exports = CharacterMetadata;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List;\nvar DELIMITER = '.';\n/**\n * A CompositeDraftDecorator traverses through a list of DraftDecorator\n * instances to identify sections of a ContentBlock that should be rendered\n * in a \"decorated\" manner. For example, hashtags, mentions, and links may\n * be intended to stand out visually, be rendered as anchors, etc.\n *\n * The list of decorators supplied to the constructor will be used in the\n * order they are provided. This allows the caller to specify a priority for\n * string matching, in case of match collisions among decorators.\n *\n * For instance, I may have a link with a `#` in its text. Though this section\n * of text may match our hashtag decorator, it should not be treated as a\n * hashtag. I should therefore list my link DraftDecorator\n * before my hashtag DraftDecorator when constructing this composite\n * decorator instance.\n *\n * Thus, when a collision like this is encountered, the earlier match is\n * preserved and the new match is discarded.\n */\n\nvar CompositeDraftDecorator = /*#__PURE__*/function () {\n function CompositeDraftDecorator(decorators) {\n _defineProperty(this, \"_decorators\", void 0);\n\n // Copy the decorator array, since we use this array order to determine\n // precedence of decoration matching. If the array is mutated externally,\n // we don't want to be affected here.\n this._decorators = decorators.slice();\n }\n\n var _proto = CompositeDraftDecorator.prototype;\n\n _proto.getDecorations = function getDecorations(block, contentState) {\n var decorations = Array(block.getText().length).fill(null);\n\n this._decorators.forEach(function (\n /*object*/\n decorator,\n /*number*/\n ii) {\n var counter = 0;\n var strategy = decorator.strategy;\n\n var callback = function callback(\n /*number*/\n start,\n /*number*/\n end) {\n // Find out if any of our matching range is already occupied\n // by another decorator. If so, discard the match. Otherwise, store\n // the component key for rendering.\n if (canOccupySlice(decorations, start, end)) {\n occupySlice(decorations, start, end, ii + DELIMITER + counter);\n counter++;\n }\n };\n\n strategy(block, callback, contentState);\n });\n\n return List(decorations);\n };\n\n _proto.getComponentForKey = function getComponentForKey(key) {\n var componentKey = parseInt(key.split(DELIMITER)[0], 10);\n return this._decorators[componentKey].component;\n };\n\n _proto.getPropsForKey = function getPropsForKey(key) {\n var componentKey = parseInt(key.split(DELIMITER)[0], 10);\n return this._decorators[componentKey].props;\n };\n\n return CompositeDraftDecorator;\n}();\n/**\n * Determine whether we can occupy the specified slice of the decorations\n * array.\n */\n\n\nfunction canOccupySlice(decorations, start, end) {\n for (var ii = start; ii < end; ii++) {\n if (decorations[ii] != null) {\n return false;\n }\n }\n\n return true;\n}\n/**\n * Splice the specified component into our decoration array at the desired\n * range.\n */\n\n\nfunction occupySlice(targetArr, start, end, componentKey) {\n for (var ii = start; ii < end; ii++) {\n targetArr[ii] = componentKey;\n }\n}\n\nmodule.exports = CompositeDraftDecorator;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n key: '',\n type: 'unstyled',\n text: '',\n characterList: List(),\n depth: 0,\n data: Map()\n};\nvar ContentBlockRecord = Record(defaultRecord);\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n if (!config) {\n return config;\n }\n\n var characterList = config.characterList,\n text = config.text;\n\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlock = /*#__PURE__*/function (_ContentBlockRecord) {\n _inheritsLoose(ContentBlock, _ContentBlockRecord);\n\n function ContentBlock(config) {\n return _ContentBlockRecord.call(this, decorateCharacterList(config)) || this;\n }\n\n var _proto = ContentBlock.prototype;\n\n _proto.getKey = function getKey() {\n return this.get('key');\n };\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getText = function getText() {\n return this.get('text');\n };\n\n _proto.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n _proto.getLength = function getLength() {\n return this.getText().length;\n };\n\n _proto.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n _proto.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n }\n /**\n * Execute a callback for every contiguous range of styles within the block.\n */\n ;\n\n _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n }\n /**\n * Execute a callback for every contiguous range of entities within the block.\n */\n ;\n\n _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n };\n\n return ContentBlock;\n}(ContentBlockRecord);\n\nfunction haveEqualStyle(charA, charB) {\n return charA.getStyle() === charB.getStyle();\n}\n\nfunction haveEqualEntity(charA, charB) {\n return charA.getEntity() === charB.getEntity();\n}\n\nmodule.exports = ContentBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of ContentBlock adding support for nesting references by\n * providing links to children, parent, prevSibling, and nextSibling.\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n parent: null,\n characterList: List(),\n data: Map(),\n depth: 0,\n key: '',\n text: '',\n type: 'unstyled',\n children: List(),\n prevSibling: null,\n nextSibling: null\n};\n\nvar haveEqualStyle = function haveEqualStyle(charA, charB) {\n return charA.getStyle() === charB.getStyle();\n};\n\nvar haveEqualEntity = function haveEqualEntity(charA, charB) {\n return charA.getEntity() === charB.getEntity();\n};\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n if (!config) {\n return config;\n }\n\n var characterList = config.characterList,\n text = config.text;\n\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlockNode = /*#__PURE__*/function (_ref) {\n _inheritsLoose(ContentBlockNode, _ref);\n\n function ContentBlockNode() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultRecord;\n\n /* eslint-disable-next-line constructor-super */\n return _ref.call(this, decorateCharacterList(props)) || this;\n }\n\n var _proto = ContentBlockNode.prototype;\n\n _proto.getKey = function getKey() {\n return this.get('key');\n };\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getText = function getText() {\n return this.get('text');\n };\n\n _proto.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n _proto.getLength = function getLength() {\n return this.getText().length;\n };\n\n _proto.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n _proto.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n };\n\n _proto.getChildKeys = function getChildKeys() {\n return this.get('children');\n };\n\n _proto.getParentKey = function getParentKey() {\n return this.get('parent');\n };\n\n _proto.getPrevSiblingKey = function getPrevSiblingKey() {\n return this.get('prevSibling');\n };\n\n _proto.getNextSiblingKey = function getNextSiblingKey() {\n return this.get('nextSibling');\n };\n\n _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n };\n\n _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n };\n\n return ContentBlockNode;\n}(Record(defaultRecord));\n\nmodule.exports = ContentBlockNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getOwnObjectValues = require(\"./getOwnObjectValues\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar sanitizeDraftText = require(\"./sanitizeDraftText\");\n\nvar List = Immutable.List,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat,\n ImmutableMap = Immutable.Map,\n OrderedMap = Immutable.OrderedMap;\nvar defaultRecord = {\n entityMap: null,\n blockMap: null,\n selectionBefore: null,\n selectionAfter: null\n};\nvar ContentStateRecord = Record(defaultRecord);\n/* $FlowFixMe[signature-verification-failure] Supressing a `signature-\n * verification-failure` error here. TODO: T65949050 Clean up the branch for\n * this GK */\n\nvar ContentBlockNodeRecord = gkx('draft_tree_data_support') ? ContentBlockNode : ContentBlock;\n\nvar ContentState = /*#__PURE__*/function (_ContentStateRecord) {\n _inheritsLoose(ContentState, _ContentStateRecord);\n\n function ContentState() {\n return _ContentStateRecord.apply(this, arguments) || this;\n }\n\n var _proto = ContentState.prototype;\n\n _proto.getEntityMap = function getEntityMap() {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity;\n };\n\n _proto.getBlockMap = function getBlockMap() {\n return this.get('blockMap');\n };\n\n _proto.getSelectionBefore = function getSelectionBefore() {\n return this.get('selectionBefore');\n };\n\n _proto.getSelectionAfter = function getSelectionAfter() {\n return this.get('selectionAfter');\n };\n\n _proto.getBlockForKey = function getBlockForKey(key) {\n var block = this.getBlockMap().get(key);\n return block;\n };\n\n _proto.getKeyBefore = function getKeyBefore(key) {\n return this.getBlockMap().reverse().keySeq().skipUntil(function (v) {\n return v === key;\n }).skip(1).first();\n };\n\n _proto.getKeyAfter = function getKeyAfter(key) {\n return this.getBlockMap().keySeq().skipUntil(function (v) {\n return v === key;\n }).skip(1).first();\n };\n\n _proto.getBlockAfter = function getBlockAfter(key) {\n return this.getBlockMap().skipUntil(function (_, k) {\n return k === key;\n }).skip(1).first();\n };\n\n _proto.getBlockBefore = function getBlockBefore(key) {\n return this.getBlockMap().reverse().skipUntil(function (_, k) {\n return k === key;\n }).skip(1).first();\n };\n\n _proto.getBlocksAsArray = function getBlocksAsArray() {\n return this.getBlockMap().toArray();\n };\n\n _proto.getFirstBlock = function getFirstBlock() {\n return this.getBlockMap().first();\n };\n\n _proto.getLastBlock = function getLastBlock() {\n return this.getBlockMap().last();\n };\n\n _proto.getPlainText = function getPlainText(delimiter) {\n return this.getBlockMap().map(function (block) {\n return block ? block.getText() : '';\n }).join(delimiter || '\\n');\n };\n\n _proto.getLastCreatedEntityKey = function getLastCreatedEntityKey() {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity.__getLastCreatedEntityKey();\n };\n\n _proto.hasText = function hasText() {\n var blockMap = this.getBlockMap();\n return blockMap.size > 1 || // make sure that there are no zero width space chars\n escape(blockMap.first().getText()).replace(/%u200B/g, '').length > 0;\n };\n\n _proto.createEntity = function createEntity(type, mutability, data) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__create(type, mutability, data);\n\n return this;\n };\n\n _proto.mergeEntityData = function mergeEntityData(key, toMerge) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__mergeData(key, toMerge);\n\n return this;\n };\n\n _proto.replaceEntityData = function replaceEntityData(key, newData) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__replaceData(key, newData);\n\n return this;\n };\n\n _proto.addEntity = function addEntity(instance) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__add(instance);\n\n return this;\n };\n\n _proto.getEntity = function getEntity(key) {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity.__get(key);\n };\n\n _proto.getAllEntities = function getAllEntities() {\n return DraftEntity.__getAll();\n };\n\n _proto.loadWithEntities = function loadWithEntities(entities) {\n return DraftEntity.__loadWithEntities(entities);\n };\n\n ContentState.createFromBlockArray = function createFromBlockArray( // TODO: update flow type when we completely deprecate the old entity API\n blocks, entityMap) {\n // TODO: remove this when we completely deprecate the old entity API\n var theBlocks = Array.isArray(blocks) ? blocks : blocks.contentBlocks;\n var blockMap = BlockMapBuilder.createFromArray(theBlocks);\n var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n return new ContentState({\n blockMap: blockMap,\n entityMap: entityMap || DraftEntity,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n };\n\n ContentState.createFromText = function createFromText(text) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /\\r\\n?|\\n/g;\n var strings = text.split(delimiter);\n var blocks = strings.map(function (block) {\n block = sanitizeDraftText(block);\n return new ContentBlockNodeRecord({\n key: generateRandomKey(),\n text: block,\n type: 'unstyled',\n characterList: List(Repeat(CharacterMetadata.EMPTY, block.length))\n });\n });\n return ContentState.createFromBlockArray(blocks);\n };\n\n ContentState.fromJS = function fromJS(state) {\n return new ContentState(_objectSpread({}, state, {\n blockMap: OrderedMap(state.blockMap).map(ContentState.createContentBlockFromJS),\n selectionBefore: new SelectionState(state.selectionBefore),\n selectionAfter: new SelectionState(state.selectionAfter)\n }));\n };\n\n ContentState.createContentBlockFromJS = function createContentBlockFromJS(block) {\n var characterList = block.characterList;\n return new ContentBlockNodeRecord(_objectSpread({}, block, {\n data: ImmutableMap(block.data),\n characterList: characterList != null ? List((Array.isArray(characterList) ? characterList : getOwnObjectValues(characterList)).map(function (c) {\n return CharacterMetadata.fromJS(c);\n })) : undefined\n }));\n };\n\n return ContentState;\n}(ContentStateRecord);\n\nmodule.exports = ContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar _require = require(\"immutable\"),\n Map = _require.Map;\n\nvar ContentStateInlineStyle = {\n add: function add(contentState, selectionState, inlineStyle) {\n return modifyInlineStyle(contentState, selectionState, inlineStyle, true);\n },\n remove: function remove(contentState, selectionState, inlineStyle) {\n return modifyInlineStyle(contentState, selectionState, inlineStyle, false);\n }\n};\n\nfunction modifyInlineStyle(contentState, selectionState, inlineStyle, addOrRemove) {\n var blockMap = contentState.getBlockMap();\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var newBlocks = blockMap.skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).concat(Map([[endKey, blockMap.get(endKey)]])).map(function (block, blockKey) {\n var sliceStart;\n var sliceEnd;\n\n if (startKey === endKey) {\n sliceStart = startOffset;\n sliceEnd = endOffset;\n } else {\n sliceStart = blockKey === startKey ? startOffset : 0;\n sliceEnd = blockKey === endKey ? endOffset : block.getLength();\n }\n\n var chars = block.getCharacterList();\n var current;\n\n while (sliceStart < sliceEnd) {\n current = chars.get(sliceStart);\n chars = chars.set(sliceStart, addOrRemove ? CharacterMetadata.applyStyle(current, inlineStyle) : CharacterMetadata.removeStyle(current, inlineStyle));\n sliceStart++;\n }\n\n return block.set('characterList', chars);\n });\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = ContentStateInlineStyle;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getWindowForNode = require(\"./getWindowForNode\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar Map = Immutable.Map;\n// Heavily based on Prosemirror's DOMObserver https://github.com/ProseMirror/prosemirror-view/blob/master/src/domobserver.js\nvar DOM_OBSERVER_OPTIONS = {\n subtree: true,\n characterData: true,\n childList: true,\n characterDataOldValue: false,\n attributes: false\n}; // IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\n\nvar USE_CHAR_DATA = UserAgent.isBrowser('IE <= 11');\n\nvar DOMObserver = /*#__PURE__*/function () {\n function DOMObserver(container) {\n var _this = this;\n\n _defineProperty(this, \"observer\", void 0);\n\n _defineProperty(this, \"container\", void 0);\n\n _defineProperty(this, \"mutations\", void 0);\n\n _defineProperty(this, \"onCharData\", void 0);\n\n this.container = container;\n this.mutations = Map();\n var containerWindow = getWindowForNode(container);\n\n if (containerWindow.MutationObserver && !USE_CHAR_DATA) {\n this.observer = new containerWindow.MutationObserver(function (mutations) {\n return _this.registerMutations(mutations);\n });\n } else {\n this.onCharData = function (e) {\n !(e.target instanceof Node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected target to be an instance of Node') : invariant(false) : void 0;\n\n _this.registerMutation({\n type: 'characterData',\n target: e.target\n });\n };\n }\n }\n\n var _proto = DOMObserver.prototype;\n\n _proto.start = function start() {\n if (this.observer) {\n this.observer.observe(this.container, DOM_OBSERVER_OPTIONS);\n } else {\n /* $FlowFixMe[incompatible-call] (>=0.68.0 site=www,mobile) This event\n * type is not defined by Flow's standard library */\n this.container.addEventListener('DOMCharacterDataModified', this.onCharData);\n }\n };\n\n _proto.stopAndFlushMutations = function stopAndFlushMutations() {\n var observer = this.observer;\n\n if (observer) {\n this.registerMutations(observer.takeRecords());\n observer.disconnect();\n } else {\n /* $FlowFixMe[incompatible-call] (>=0.68.0 site=www,mobile) This event\n * type is not defined by Flow's standard library */\n this.container.removeEventListener('DOMCharacterDataModified', this.onCharData);\n }\n\n var mutations = this.mutations;\n this.mutations = Map();\n return mutations;\n };\n\n _proto.registerMutations = function registerMutations(mutations) {\n for (var i = 0; i < mutations.length; i++) {\n this.registerMutation(mutations[i]);\n }\n };\n\n _proto.getMutationTextContent = function getMutationTextContent(mutation) {\n var type = mutation.type,\n target = mutation.target,\n removedNodes = mutation.removedNodes;\n\n if (type === 'characterData') {\n // When `textContent` is '', there is a race condition that makes\n // getting the offsetKey from the target not possible.\n // These events are also followed by a `childList`, which is the one\n // we are able to retrieve the offsetKey and apply the '' text.\n if (target.textContent !== '') {\n // IE 11 considers the enter keypress that concludes the composition\n // as an input char. This strips that newline character so the draft\n // state does not receive spurious newlines.\n if (USE_CHAR_DATA) {\n return target.textContent.replace('\\n', '');\n }\n\n return target.textContent;\n }\n } else if (type === 'childList') {\n if (removedNodes && removedNodes.length) {\n // `characterData` events won't happen or are ignored when\n // removing the last character of a leaf node, what happens\n // instead is a `childList` event with a `removedNodes` array.\n // For this case the textContent should be '' and\n // `DraftModifier.replaceText` will make sure the content is\n // updated properly.\n return '';\n } else if (target.textContent !== '') {\n // Typing Chinese in an empty block in MS Edge results in a\n // `childList` event with non-empty textContent.\n // See https://github.com/facebook/draft-js/issues/2082\n return target.textContent;\n }\n }\n\n return null;\n };\n\n _proto.registerMutation = function registerMutation(mutation) {\n var textContent = this.getMutationTextContent(mutation);\n\n if (textContent != null) {\n var offsetKey = nullthrows(findAncestorOffsetKey(mutation.target));\n this.mutations = this.mutations.set(offsetKey, textContent);\n }\n };\n\n return DOMObserver;\n}();\n\nmodule.exports = DOMObserver;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar _require = require(\"immutable\"),\n Map = _require.Map;\n\nvar UL_WRAP = React.createElement(\"ul\", {\n className: cx('public/DraftStyleDefault/ul')\n});\nvar OL_WRAP = React.createElement(\"ol\", {\n className: cx('public/DraftStyleDefault/ol')\n});\nvar PRE_WRAP = React.createElement(\"pre\", {\n className: cx('public/DraftStyleDefault/pre')\n});\nvar DefaultDraftBlockRenderMap = Map({\n 'header-one': {\n element: 'h1'\n },\n 'header-two': {\n element: 'h2'\n },\n 'header-three': {\n element: 'h3'\n },\n 'header-four': {\n element: 'h4'\n },\n 'header-five': {\n element: 'h5'\n },\n 'header-six': {\n element: 'h6'\n },\n section: {\n element: 'section'\n },\n article: {\n element: 'article'\n },\n 'unordered-list-item': {\n element: 'li',\n wrapper: UL_WRAP\n },\n 'ordered-list-item': {\n element: 'li',\n wrapper: OL_WRAP\n },\n blockquote: {\n element: 'blockquote'\n },\n atomic: {\n element: 'figure'\n },\n 'code-block': {\n element: 'pre',\n wrapper: PRE_WRAP\n },\n unstyled: {\n element: 'div',\n aliasedElements: ['p']\n }\n});\nmodule.exports = DefaultDraftBlockRenderMap;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nmodule.exports = {\n BOLD: {\n fontWeight: 'bold'\n },\n CODE: {\n fontFamily: 'monospace',\n wordWrap: 'break-word'\n },\n ITALIC: {\n fontStyle: 'italic'\n },\n STRIKETHROUGH: {\n textDecoration: 'line-through'\n },\n UNDERLINE: {\n textDecoration: 'underline'\n }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nvar AtomicBlockUtils = require(\"./AtomicBlockUtils\");\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar CompositeDraftDecorator = require(\"./CompositeDraftDecorator\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DefaultDraftInlineStyle = require(\"./DefaultDraftInlineStyle\");\n\nvar DraftEditor = require(\"./DraftEditor.react\");\n\nvar DraftEditorBlock = require(\"./DraftEditorBlock.react\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar RawDraftContentState = require(\"./RawDraftContentState\");\n\nvar RichTextEditorUtil = require(\"./RichTextEditorUtil\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar convertFromDraftStateToRaw = require(\"./convertFromDraftStateToRaw\");\n\nvar convertFromRawToDraftState = require(\"./convertFromRawToDraftState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getDefaultKeyBinding = require(\"./getDefaultKeyBinding\");\n\nvar getVisibleSelectionRect = require(\"./getVisibleSelectionRect\");\n\nvar convertFromHTML = require(\"./convertFromHTMLToContentBlocks\");\n\nvar DraftPublic = {\n Editor: DraftEditor,\n EditorBlock: DraftEditorBlock,\n EditorState: EditorState,\n CompositeDecorator: CompositeDraftDecorator,\n Entity: DraftEntity,\n EntityInstance: DraftEntityInstance,\n BlockMapBuilder: BlockMapBuilder,\n CharacterMetadata: CharacterMetadata,\n ContentBlock: ContentBlock,\n ContentState: ContentState,\n RawDraftContentState: RawDraftContentState,\n SelectionState: SelectionState,\n AtomicBlockUtils: AtomicBlockUtils,\n KeyBindingUtil: KeyBindingUtil,\n Modifier: DraftModifier,\n RichUtils: RichTextEditorUtil,\n DefaultDraftBlockRenderMap: DefaultDraftBlockRenderMap,\n DefaultDraftInlineStyle: DefaultDraftInlineStyle,\n convertFromHTML: convertFromHTML,\n convertFromRaw: convertFromRawToDraftState,\n convertToRaw: convertFromDraftStateToRaw,\n genKey: generateRandomKey,\n getDefaultKeyBinding: getDefaultKeyBinding,\n getVisibleSelectionRect: getVisibleSelectionRect\n};\nmodule.exports = DraftPublic;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @preventMunge\n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DefaultDraftInlineStyle = require(\"./DefaultDraftInlineStyle\");\n\nvar DraftEditorCompositionHandler = require(\"./DraftEditorCompositionHandler\");\n\nvar DraftEditorContents = require(\"./DraftEditorContents.react\");\n\nvar DraftEditorDragHandler = require(\"./DraftEditorDragHandler\");\n\nvar DraftEditorEditHandler = require(\"./DraftEditorEditHandler\");\n\nvar flushControlled = require(\"./DraftEditorFlushControlled\");\n\nvar DraftEditorPlaceholder = require(\"./DraftEditorPlaceholder.react\");\n\nvar DraftEffects = require(\"./DraftEffects\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getDefaultKeyBinding = require(\"./getDefaultKeyBinding\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar gkx = require(\"./gkx\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isIE = UserAgent.isBrowser('IE'); // IE does not support the `input` event on contentEditable, so we can't\n// observe spellcheck behavior.\n\nvar allowSpellCheck = !isIE; // Define a set of handler objects to correspond to each possible `mode`\n// of editor behavior.\n\nvar handlerMap = {\n edit: DraftEditorEditHandler,\n composite: DraftEditorCompositionHandler,\n drag: DraftEditorDragHandler,\n cut: null,\n render: null\n};\nvar didInitODS = false;\n\nvar UpdateDraftEditorFlags = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(UpdateDraftEditorFlags, _React$Component);\n\n function UpdateDraftEditorFlags() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = UpdateDraftEditorFlags.prototype;\n\n _proto.render = function render() {\n return null;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._update();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this._update();\n };\n\n _proto._update = function _update() {\n var editor = this.props.editor;\n /**\n * Sometimes a render triggers a 'focus' or other event, and that will\n * schedule a second render pass.\n * In order to make sure the second render pass gets the latest editor\n * state, we update it here.\n * Example:\n * render #1\n * +\n * |\n * | cWU -> Nothing ... latestEditorState = STALE_STATE :(\n * |\n * | render -> this.props.editorState = FRESH_STATE\n * | + *and* set latestEditorState = FRESH_STATE\n * |\n * | |\n * | +--> triggers 'focus' event, calling 'handleFocus' with latestEditorState\n * | +\n * | |\n * +>cdU -> latestEditorState = FRESH_STATE | the 'handleFocus' call schedules render #2\n * | with latestEditorState, which is FRESH_STATE\n * |\n * render #2 <--------------------------------------+\n * +\n * |\n * | cwU -> nothing updates\n * |\n * | render -> this.props.editorState = FRESH_STATE which was passed in above\n * |\n * +>cdU fires and resets latestEditorState = FRESH_STATE\n * ---\n * Note that if we don't set latestEditorState in 'render' in the above\n * diagram, then STALE_STATE gets passed to render #2.\n */\n\n editor._latestEditorState = this.props.editorState;\n /**\n * The reason we set this 'blockSelectEvents' flag is that IE will fire a\n * 'selectionChange' event when we programmatically change the selection,\n * meaning it would trigger a new select event while we are in the middle\n * of updating.\n * We found that the 'selection.addRange' was what triggered the stray\n * selectionchange event in IE.\n * To be clear - we have not been able to reproduce specific bugs related\n * to this stray selection event, but have recorded logs that some\n * conditions do cause it to get bumped into during editOnSelect.\n */\n\n editor._blockSelectEvents = true;\n };\n\n return UpdateDraftEditorFlags;\n}(React.Component);\n/**\n * `DraftEditor` is the root editor component. It composes a `contentEditable`\n * div, and provides a wide variety of useful function props for managing the\n * state of the editor. See `DraftEditorProps` for details.\n */\n\n\nvar DraftEditor = /*#__PURE__*/function (_React$Component2) {\n _inheritsLoose(DraftEditor, _React$Component2);\n\n /**\n * Define proxies that can route events to the current handler.\n */\n function DraftEditor(props) {\n var _this;\n\n _this = _React$Component2.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"_blockSelectEvents\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_clipboard\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_handler\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_dragCount\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_internalDrag\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_editorKey\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_placeholderAccessibilityID\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_latestEditorState\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_latestCommittedEditorState\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_pendingStateFromBeforeInput\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onBeforeInput\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onBlur\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCharacterData\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCompositionEnd\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCompositionStart\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCopy\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCut\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragEnd\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragOver\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragStart\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDrop\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onInput\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onFocus\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyPress\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyUp\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onMouseDown\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onMouseUp\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onPaste\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onSelect\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"editor\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"editorContainer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"focus\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"blur\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"setMode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"exitCurrentMode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"restoreEditorDOM\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"setClipboard\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"getClipboard\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"getEditorKey\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"update\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_handleEditorContainerRef\", function (node) {\n _this.editorContainer = node; // Instead of having a direct ref on the child, we'll grab it here.\n // This is safe as long as the rendered structure is static (which it is).\n // This lets the child support ref={props.editorRef} without merging refs.\n\n _this.editor = node !== null ? node.firstChild : null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"focus\", function (scrollPosition) {\n var editorState = _this.props.editorState;\n var alreadyHasFocus = editorState.getSelection().getHasFocus();\n var editorNode = _this.editor;\n\n if (!editorNode) {\n // once in a while people call 'focus' in a setTimeout, and the node has\n // been deleted, so it can be null in that case.\n return;\n }\n\n var scrollParent = Style.getScrollParent(editorNode);\n\n var _ref = scrollPosition || getScrollPosition(scrollParent),\n x = _ref.x,\n y = _ref.y;\n\n !isHTMLElement(editorNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n editorNode.focus(); // Restore scroll position\n\n if (scrollParent === window) {\n window.scrollTo(x, y);\n } else {\n Scroll.setTop(scrollParent, y);\n } // On Chrome and Safari, calling focus on contenteditable focuses the\n // cursor at the first character. This is something you don't expect when\n // you're clicking on an input element but not directly on a character.\n // Put the cursor back where it was before the blur.\n\n\n if (!alreadyHasFocus) {\n _this.update(EditorState.forceSelection(editorState, editorState.getSelection()));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"blur\", function () {\n var editorNode = _this.editor;\n\n if (!editorNode) {\n return;\n }\n\n !isHTMLElement(editorNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n editorNode.blur();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setMode\", function (mode) {\n var _this$props = _this.props,\n onPaste = _this$props.onPaste,\n onCut = _this$props.onCut,\n onCopy = _this$props.onCopy;\n\n var editHandler = _objectSpread({}, handlerMap.edit);\n\n if (onPaste) {\n /* $FlowFixMe[incompatible-type] (>=0.117.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.117 was deployed. To see the\n * error delete this comment and run Flow. */\n editHandler.onPaste = onPaste;\n }\n\n if (onCut) {\n editHandler.onCut = onCut;\n }\n\n if (onCopy) {\n editHandler.onCopy = onCopy;\n }\n\n var handler = _objectSpread({}, handlerMap, {\n edit: editHandler\n });\n\n _this._handler = handler[mode];\n });\n\n _defineProperty(_assertThisInitialized(_this), \"exitCurrentMode\", function () {\n _this.setMode('edit');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"restoreEditorDOM\", function (scrollPosition) {\n _this.setState({\n contentsKey: _this.state.contentsKey + 1\n }, function () {\n _this.focus(scrollPosition);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setClipboard\", function (clipboard) {\n _this._clipboard = clipboard;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getClipboard\", function () {\n return _this._clipboard;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"update\", function (editorState) {\n _this._latestEditorState = editorState;\n\n _this.props.onChange(editorState);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", function () {\n _this._dragCount++;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", function () {\n _this._dragCount--;\n\n if (_this._dragCount === 0) {\n _this.exitCurrentMode();\n }\n });\n\n _this._blockSelectEvents = false;\n _this._clipboard = null;\n _this._handler = null;\n _this._dragCount = 0;\n _this._editorKey = props.editorKey || generateRandomKey();\n _this._placeholderAccessibilityID = 'placeholder-' + _this._editorKey;\n _this._latestEditorState = props.editorState;\n _this._latestCommittedEditorState = props.editorState;\n _this._onBeforeInput = _this._buildHandler('onBeforeInput');\n _this._onBlur = _this._buildHandler('onBlur');\n _this._onCharacterData = _this._buildHandler('onCharacterData');\n _this._onCompositionEnd = _this._buildHandler('onCompositionEnd');\n _this._onCompositionStart = _this._buildHandler('onCompositionStart');\n _this._onCopy = _this._buildHandler('onCopy');\n _this._onCut = _this._buildHandler('onCut');\n _this._onDragEnd = _this._buildHandler('onDragEnd');\n _this._onDragOver = _this._buildHandler('onDragOver');\n _this._onDragStart = _this._buildHandler('onDragStart');\n _this._onDrop = _this._buildHandler('onDrop');\n _this._onInput = _this._buildHandler('onInput');\n _this._onFocus = _this._buildHandler('onFocus');\n _this._onKeyDown = _this._buildHandler('onKeyDown');\n _this._onKeyPress = _this._buildHandler('onKeyPress');\n _this._onKeyUp = _this._buildHandler('onKeyUp');\n _this._onMouseDown = _this._buildHandler('onMouseDown');\n _this._onMouseUp = _this._buildHandler('onMouseUp');\n _this._onPaste = _this._buildHandler('onPaste');\n _this._onSelect = _this._buildHandler('onSelect');\n\n _this.getEditorKey = function () {\n return _this._editorKey;\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n ['onDownArrow', 'onEscape', 'onLeftArrow', 'onRightArrow', 'onTab', 'onUpArrow'].forEach(function (propName) {\n if (props.hasOwnProperty(propName)) {\n // eslint-disable-next-line no-console\n console.warn(\"Supplying an `\".concat(propName, \"` prop to `DraftEditor` has \") + 'been deprecated. If your handler needs access to the keyboard ' + 'event, supply a custom `keyBindingFn` prop that falls back to ' + 'the default one (eg. https://is.gd/wHKQ3W).');\n }\n });\n } // See `restoreEditorDOM()`.\n\n\n _this.state = {\n contentsKey: 0\n };\n return _this;\n }\n /**\n * Build a method that will pass the event to the specified handler method.\n * This allows us to look up the correct handler function for the current\n * editor mode, if any has been specified.\n */\n\n\n var _proto2 = DraftEditor.prototype;\n\n _proto2._buildHandler = function _buildHandler(eventName) {\n var _this2 = this;\n\n // Wrap event handlers in `flushControlled`. In sync mode, this is\n // effectively a no-op. In async mode, this ensures all updates scheduled\n // inside the handler are flushed before React yields to the browser.\n return function (e) {\n if (!_this2.props.readOnly) {\n var method = _this2._handler && _this2._handler[eventName];\n\n if (method) {\n if (flushControlled) {\n flushControlled(function () {\n return method(_this2, e);\n });\n } else {\n method(_this2, e);\n }\n }\n }\n };\n };\n\n _proto2._showPlaceholder = function _showPlaceholder() {\n return !!this.props.placeholder && !this.props.editorState.isInCompositionMode() && !this.props.editorState.getCurrentContent().hasText();\n };\n\n _proto2._renderPlaceholder = function _renderPlaceholder() {\n if (this._showPlaceholder()) {\n var placeHolderProps = {\n text: nullthrows(this.props.placeholder),\n editorState: this.props.editorState,\n textAlignment: this.props.textAlignment,\n accessibilityID: this._placeholderAccessibilityID\n };\n /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.112 was deployed. To see the\n * error delete this comment and run Flow. */\n\n return React.createElement(DraftEditorPlaceholder, placeHolderProps);\n }\n\n return null;\n }\n /**\n * returns ariaDescribedBy prop with '{{editor_id_placeholder}}' replaced with\n * the DOM id of the placeholder (if it exists)\n * @returns aria-describedby attribute value\n */\n ;\n\n _proto2._renderARIADescribedBy = function _renderARIADescribedBy() {\n var describedBy = this.props.ariaDescribedBy || '';\n var placeholderID = this._showPlaceholder() ? this._placeholderAccessibilityID : '';\n return describedBy.replace('{{editor_id_placeholder}}', placeholderID) || undefined;\n };\n\n _proto2.render = function render() {\n var _this$props2 = this.props,\n blockRenderMap = _this$props2.blockRenderMap,\n blockRendererFn = _this$props2.blockRendererFn,\n blockStyleFn = _this$props2.blockStyleFn,\n customStyleFn = _this$props2.customStyleFn,\n customStyleMap = _this$props2.customStyleMap,\n editorState = _this$props2.editorState,\n preventScroll = _this$props2.preventScroll,\n readOnly = _this$props2.readOnly,\n textAlignment = _this$props2.textAlignment,\n textDirectionality = _this$props2.textDirectionality;\n var rootClass = cx({\n 'DraftEditor/root': true,\n 'DraftEditor/alignLeft': textAlignment === 'left',\n 'DraftEditor/alignRight': textAlignment === 'right',\n 'DraftEditor/alignCenter': textAlignment === 'center'\n });\n var contentStyle = {\n outline: 'none',\n // fix parent-draggable Safari bug. #1326\n userSelect: 'text',\n WebkitUserSelect: 'text',\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word'\n }; // The aria-expanded and aria-haspopup properties should only be rendered\n // for a combobox.\n\n /* $FlowFixMe[prop-missing] (>=0.68.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the error\n * delete this comment and run Flow. */\n\n var ariaRole = this.props.role || 'textbox';\n var ariaExpanded = ariaRole === 'combobox' ? !!this.props.ariaExpanded : null;\n var editorContentsProps = {\n blockRenderMap: blockRenderMap,\n blockRendererFn: blockRendererFn,\n blockStyleFn: blockStyleFn,\n customStyleMap: _objectSpread({}, DefaultDraftInlineStyle, customStyleMap),\n customStyleFn: customStyleFn,\n editorKey: this._editorKey,\n editorState: editorState,\n preventScroll: preventScroll,\n textDirectionality: textDirectionality\n };\n return React.createElement(\"div\", {\n className: rootClass\n }, this._renderPlaceholder(), React.createElement(\"div\", {\n className: cx('DraftEditor/editorContainer'),\n ref: this._handleEditorContainerRef\n }, React.createElement(\"div\", {\n \"aria-activedescendant\": readOnly ? null : this.props.ariaActiveDescendantID,\n \"aria-autocomplete\": readOnly ? null : this.props.ariaAutoComplete,\n \"aria-controls\": readOnly ? null : this.props.ariaControls,\n \"aria-describedby\": this._renderARIADescribedBy(),\n \"aria-expanded\": readOnly ? null : ariaExpanded,\n \"aria-label\": this.props.ariaLabel,\n \"aria-labelledby\": this.props.ariaLabelledBy,\n \"aria-multiline\": this.props.ariaMultiline,\n \"aria-owns\": readOnly ? null : this.props.ariaOwneeID,\n autoCapitalize: this.props.autoCapitalize,\n autoComplete: this.props.autoComplete,\n autoCorrect: this.props.autoCorrect,\n className: cx({\n // Chrome's built-in translation feature mutates the DOM in ways\n // that Draft doesn't expect (ex: adding tags inside\n // DraftEditorLeaf spans) and causes problems. We add notranslate\n // here which makes its autotranslation skip over this subtree.\n notranslate: !readOnly,\n 'public/DraftEditor/content': true\n }),\n contentEditable: !readOnly,\n \"data-testid\": this.props.webDriverTestID,\n onBeforeInput: this._onBeforeInput,\n onBlur: this._onBlur,\n onCompositionEnd: this._onCompositionEnd,\n onCompositionStart: this._onCompositionStart,\n onCopy: this._onCopy,\n onCut: this._onCut,\n onDragEnd: this._onDragEnd,\n onDragEnter: this.onDragEnter,\n onDragLeave: this.onDragLeave,\n onDragOver: this._onDragOver,\n onDragStart: this._onDragStart,\n onDrop: this._onDrop,\n onFocus: this._onFocus,\n onInput: this._onInput,\n onKeyDown: this._onKeyDown,\n onKeyPress: this._onKeyPress,\n onKeyUp: this._onKeyUp,\n onMouseUp: this._onMouseUp,\n onPaste: this._onPaste,\n onSelect: this._onSelect,\n ref: this.props.editorRef,\n role: readOnly ? null : ariaRole,\n spellCheck: allowSpellCheck && this.props.spellCheck,\n style: contentStyle,\n suppressContentEditableWarning: true,\n tabIndex: this.props.tabIndex\n }, React.createElement(UpdateDraftEditorFlags, {\n editor: this,\n editorState: editorState\n }), React.createElement(DraftEditorContents, _extends({}, editorContentsProps, {\n key: 'contents' + this.state.contentsKey\n })))));\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n this._blockSelectEvents = false;\n\n if (!didInitODS && gkx('draft_ods_enabled')) {\n didInitODS = true;\n DraftEffects.initODS();\n }\n\n this.setMode('edit');\n /**\n * IE has a hardcoded \"feature\" that attempts to convert link text into\n * anchors in contentEditable DOM. This breaks the editor's expectations of\n * the DOM, and control is lost. Disable it to make IE behave.\n * See: http://blogs.msdn.com/b/ieinternals/archive/2010/09/15/\n * ie9-beta-minor-change-list.aspx\n */\n\n if (isIE) {\n // editor can be null after mounting\n // https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback\n if (!this.editor) {\n global.execCommand('AutoUrlDetect', false, false);\n } else {\n this.editor.ownerDocument.execCommand('AutoUrlDetect', false, false);\n }\n }\n };\n\n _proto2.componentDidUpdate = function componentDidUpdate() {\n this._blockSelectEvents = false;\n this._latestEditorState = this.props.editorState;\n this._latestCommittedEditorState = this.props.editorState;\n }\n /**\n * Used via `this.focus()`.\n *\n * Force focus back onto the editor node.\n *\n * We attempt to preserve scroll position when focusing. You can also pass\n * a specified scroll position (for cases like `cut` behavior where it should\n * be restored to a known position).\n */\n ;\n\n return DraftEditor;\n}(React.Component);\n\n_defineProperty(DraftEditor, \"defaultProps\", {\n ariaDescribedBy: '{{editor_id_placeholder}}',\n blockRenderMap: DefaultDraftBlockRenderMap,\n blockRendererFn: function blockRendererFn() {\n return null;\n },\n blockStyleFn: function blockStyleFn() {\n return '';\n },\n keyBindingFn: getDefaultKeyBinding,\n readOnly: false,\n spellCheck: false,\n stripPastedStyles: false\n});\n\nmodule.exports = DraftEditor;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorLeaf = require(\"./DraftEditorLeaf.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar UnicodeBidi = require(\"fbjs/lib/UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"fbjs/lib/UnicodeBidiDirection\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar getElementPosition = require(\"fbjs/lib/getElementPosition\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar getViewportDimensions = require(\"fbjs/lib/getViewportDimensions\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar SCROLL_BUFFER = 10;\n\n/**\n * Return whether a block overlaps with either edge of the `SelectionState`.\n */\nvar isBlockOnSelectionEdge = function isBlockOnSelectionEdge(selection, key) {\n return selection.getAnchorKey() === key || selection.getFocusKey() === key;\n};\n/**\n * The default block renderer for a `DraftEditor` component.\n *\n * A `DraftEditorBlock` is able to render a given `ContentBlock` to its\n * appropriate decorator and inline style components.\n */\n\n\nvar DraftEditorBlock = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorBlock, _React$Component);\n\n function DraftEditorBlock() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"_node\", void 0);\n\n return _this;\n }\n\n var _proto = DraftEditorBlock.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return this.props.block !== nextProps.block || this.props.tree !== nextProps.tree || this.props.direction !== nextProps.direction || isBlockOnSelectionEdge(nextProps.selection, nextProps.block.getKey()) && nextProps.forceSelection;\n }\n /**\n * When a block is mounted and overlaps the selection state, we need to make\n * sure that the cursor is visible to match native behavior. This may not\n * be the case if the user has pressed `RETURN` or pasted some content, since\n * programmatically creating these new blocks and setting the DOM selection\n * will miss out on the browser natively scrolling to that position.\n *\n * To replicate native behavior, if the block overlaps the selection state\n * on mount, force the scroll position. Check the scroll state of the scroll\n * parent, and adjust it to align the entire block to the bottom of the\n * scroll parent.\n */\n ;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.preventScroll) {\n return;\n }\n\n var selection = this.props.selection;\n var endKey = selection.getEndKey();\n\n if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n return;\n }\n\n var blockNode = this._node;\n\n if (blockNode == null) {\n return;\n }\n\n var scrollParent = Style.getScrollParent(blockNode);\n var scrollPosition = getScrollPosition(scrollParent);\n var scrollDelta;\n\n if (scrollParent === window) {\n var nodePosition = getElementPosition(blockNode);\n var nodeBottom = nodePosition.y + nodePosition.height;\n var viewportHeight = getViewportDimensions().height;\n scrollDelta = nodeBottom - viewportHeight;\n\n if (scrollDelta > 0) {\n window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n }\n } else {\n !isHTMLElement(blockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'blockNode is not an HTMLElement') : invariant(false) : void 0;\n var blockBottom = blockNode.offsetHeight + blockNode.offsetTop;\n var pOffset = scrollParent.offsetTop + scrollParent.offsetHeight;\n var scrollBottom = pOffset + scrollPosition.y;\n scrollDelta = blockBottom - scrollBottom;\n\n if (scrollDelta > 0) {\n Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n }\n }\n };\n\n _proto._renderChildren = function _renderChildren() {\n var _this2 = this;\n\n var block = this.props.block;\n var blockKey = block.getKey();\n var text = block.getText();\n var lastLeafSet = this.props.tree.size - 1;\n var hasSelection = isBlockOnSelectionEdge(this.props.selection, blockKey);\n return this.props.tree.map(function (leafSet, ii) {\n var leavesForLeafSet = leafSet.get('leaves'); // T44088704\n\n if (leavesForLeafSet.size === 0) {\n return null;\n }\n\n var lastLeaf = leavesForLeafSet.size - 1;\n var leaves = leavesForLeafSet.map(function (leaf, jj) {\n var offsetKey = DraftOffsetKey.encode(blockKey, ii, jj);\n var start = leaf.get('start');\n var end = leaf.get('end');\n return React.createElement(DraftEditorLeaf, {\n key: offsetKey,\n offsetKey: offsetKey,\n block: block,\n start: start,\n selection: hasSelection ? _this2.props.selection : null,\n forceSelection: _this2.props.forceSelection,\n text: text.slice(start, end),\n styleSet: block.getInlineStyleAt(start),\n customStyleMap: _this2.props.customStyleMap,\n customStyleFn: _this2.props.customStyleFn,\n isLast: ii === lastLeafSet && jj === lastLeaf\n });\n }).toArray();\n var decoratorKey = leafSet.get('decoratorKey');\n\n if (decoratorKey == null) {\n return leaves;\n }\n\n if (!_this2.props.decorator) {\n return leaves;\n }\n\n var decorator = nullthrows(_this2.props.decorator);\n var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n\n if (!DecoratorComponent) {\n return leaves;\n }\n\n var decoratorProps = decorator.getPropsForKey(decoratorKey);\n var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, ii, 0);\n var start = leavesForLeafSet.first().get('start');\n var end = leavesForLeafSet.last().get('end');\n var decoratedText = text.slice(start, end);\n var entityKey = block.getEntityAt(leafSet.get('start')); // Resetting dir to the same value on a child node makes Chrome/Firefox\n // confused on cursor movement. See http://jsfiddle.net/d157kLck/3/\n\n var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), _this2.props.direction);\n var commonProps = {\n contentState: _this2.props.contentState,\n decoratedText: decoratedText,\n dir: dir,\n start: start,\n end: end,\n blockKey: blockKey,\n entityKey: entityKey,\n offsetKey: decoratorOffsetKey\n };\n return React.createElement(DecoratorComponent, _extends({}, decoratorProps, commonProps, {\n key: decoratorOffsetKey\n }), leaves);\n }).toArray();\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n direction = _this$props.direction,\n offsetKey = _this$props.offsetKey;\n var className = cx({\n 'public/DraftStyleDefault/block': true,\n 'public/DraftStyleDefault/ltr': direction === 'LTR',\n 'public/DraftStyleDefault/rtl': direction === 'RTL'\n });\n return React.createElement(\"div\", {\n \"data-offset-key\": offsetKey,\n className: className,\n ref: function ref(_ref) {\n return _this3._node = _ref;\n }\n }, this._renderChildren());\n };\n\n return DraftEditorBlock;\n}(React.Component);\n\nmodule.exports = DraftEditorBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of DraftEditorBlock.react.js and DraftEditorContents.react.js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorNode = require(\"./DraftEditorNode.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar getElementPosition = require(\"fbjs/lib/getElementPosition\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar getViewportDimensions = require(\"fbjs/lib/getViewportDimensions\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar SCROLL_BUFFER = 10;\nvar List = Immutable.List; // we should harden up the bellow flow types to make them more strict\n\n/**\n * Return whether a block overlaps with either edge of the `SelectionState`.\n */\nvar isBlockOnSelectionEdge = function isBlockOnSelectionEdge(selection, key) {\n return selection.getAnchorKey() === key || selection.getFocusKey() === key;\n};\n/**\n * We will use this helper to identify blocks that need to be wrapped but have siblings that\n * also share the same wrapper element, this way we can do the wrapping once the last sibling\n * is added.\n */\n\n\nvar shouldNotAddWrapperElement = function shouldNotAddWrapperElement(block, contentState) {\n var nextSiblingKey = block.getNextSiblingKey();\n return nextSiblingKey ? contentState.getBlockForKey(nextSiblingKey).getType() === block.getType() : false;\n};\n\nvar applyWrapperElementToSiblings = function applyWrapperElementToSiblings(wrapperTemplate, Element, nodes) {\n var wrappedSiblings = []; // we check back until we find a sibling that does not have same wrapper\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = nodes.reverse()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var sibling = _step.value;\n\n if (sibling.type !== Element) {\n break;\n }\n\n wrappedSiblings.push(sibling);\n } // we now should remove from acc the wrappedSiblings and add them back under same wrap\n\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n nodes.splice(nodes.indexOf(wrappedSiblings[0]), wrappedSiblings.length + 1);\n var childrenIs = wrappedSiblings.reverse();\n var key = childrenIs[0].key;\n nodes.push(React.cloneElement(wrapperTemplate, {\n key: \"\".concat(key, \"-wrap\"),\n 'data-offset-key': DraftOffsetKey.encode(key, 0, 0)\n }, childrenIs));\n return nodes;\n};\n\nvar getDraftRenderConfig = function getDraftRenderConfig(block, blockRenderMap) {\n var configForType = blockRenderMap.get(block.getType()) || blockRenderMap.get('unstyled');\n var wrapperTemplate = configForType.wrapper;\n var Element = configForType.element || blockRenderMap.get('unstyled').element;\n return {\n Element: Element,\n wrapperTemplate: wrapperTemplate\n };\n};\n\nvar getCustomRenderConfig = function getCustomRenderConfig(block, blockRendererFn) {\n var customRenderer = blockRendererFn(block);\n\n if (!customRenderer) {\n return {};\n }\n\n var CustomComponent = customRenderer.component,\n customProps = customRenderer.props,\n customEditable = customRenderer.editable;\n return {\n CustomComponent: CustomComponent,\n customProps: customProps,\n customEditable: customEditable\n };\n};\n\nvar getElementPropsConfig = function getElementPropsConfig(block, editorKey, offsetKey, blockStyleFn, customConfig, ref) {\n var elementProps = {\n 'data-block': true,\n 'data-editor': editorKey,\n 'data-offset-key': offsetKey,\n key: block.getKey(),\n ref: ref\n };\n var customClass = blockStyleFn(block);\n\n if (customClass) {\n elementProps.className = customClass;\n }\n\n if (customConfig.customEditable !== undefined) {\n elementProps = _objectSpread({}, elementProps, {\n contentEditable: customConfig.customEditable,\n suppressContentEditableWarning: true\n });\n }\n\n return elementProps;\n};\n\nvar DraftEditorBlockNode = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorBlockNode, _React$Component);\n\n function DraftEditorBlockNode() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"wrapperRef\", React.createRef());\n\n return _this;\n }\n\n var _proto = DraftEditorBlockNode.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var _this$props = this.props,\n block = _this$props.block,\n direction = _this$props.direction,\n tree = _this$props.tree;\n var isContainerNode = !block.getChildKeys().isEmpty();\n var blockHasChanged = block !== nextProps.block || tree !== nextProps.tree || direction !== nextProps.direction || isBlockOnSelectionEdge(nextProps.selection, nextProps.block.getKey()) && nextProps.forceSelection; // if we have children at this stage we always re-render container nodes\n // else if its a root node we avoid re-rendering by checking for block updates\n\n return isContainerNode || blockHasChanged;\n }\n /**\n * When a block is mounted and overlaps the selection state, we need to make\n * sure that the cursor is visible to match native behavior. This may not\n * be the case if the user has pressed `RETURN` or pasted some content, since\n * programatically creating these new blocks and setting the DOM selection\n * will miss out on the browser natively scrolling to that position.\n *\n * To replicate native behavior, if the block overlaps the selection state\n * on mount, force the scroll position. Check the scroll state of the scroll\n * parent, and adjust it to align the entire block to the bottom of the\n * scroll parent.\n */\n ;\n\n _proto.componentDidMount = function componentDidMount() {\n var selection = this.props.selection;\n var endKey = selection.getEndKey();\n\n if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n return;\n }\n\n var blockNode = this.wrapperRef.current;\n\n if (!blockNode) {\n // This Block Node was rendered without a wrapper element.\n return;\n }\n\n var scrollParent = Style.getScrollParent(blockNode);\n var scrollPosition = getScrollPosition(scrollParent);\n var scrollDelta;\n\n if (scrollParent === window) {\n var nodePosition = getElementPosition(blockNode);\n var nodeBottom = nodePosition.y + nodePosition.height;\n var viewportHeight = getViewportDimensions().height;\n scrollDelta = nodeBottom - viewportHeight;\n\n if (scrollDelta > 0) {\n window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n }\n } else {\n !isHTMLElement(blockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'blockNode is not an HTMLElement') : invariant(false) : void 0;\n var htmlBlockNode = blockNode;\n var blockBottom = htmlBlockNode.offsetHeight + htmlBlockNode.offsetTop;\n var scrollBottom = scrollParent.offsetHeight + scrollPosition.y;\n scrollDelta = blockBottom - scrollBottom;\n\n if (scrollDelta > 0) {\n Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n }\n }\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n block = _this$props2.block,\n blockRenderMap = _this$props2.blockRenderMap,\n blockRendererFn = _this$props2.blockRendererFn,\n blockStyleFn = _this$props2.blockStyleFn,\n contentState = _this$props2.contentState,\n decorator = _this$props2.decorator,\n editorKey = _this$props2.editorKey,\n editorState = _this$props2.editorState,\n customStyleFn = _this$props2.customStyleFn,\n customStyleMap = _this$props2.customStyleMap,\n direction = _this$props2.direction,\n forceSelection = _this$props2.forceSelection,\n selection = _this$props2.selection,\n tree = _this$props2.tree;\n var children = null;\n\n if (block.children.size) {\n children = block.children.reduce(function (acc, key) {\n var offsetKey = DraftOffsetKey.encode(key, 0, 0);\n var child = contentState.getBlockForKey(key);\n var customConfig = getCustomRenderConfig(child, blockRendererFn);\n var Component = customConfig.CustomComponent || DraftEditorBlockNode;\n\n var _getDraftRenderConfig = getDraftRenderConfig(child, blockRenderMap),\n Element = _getDraftRenderConfig.Element,\n wrapperTemplate = _getDraftRenderConfig.wrapperTemplate;\n\n var elementProps = getElementPropsConfig(child, editorKey, offsetKey, blockStyleFn, customConfig, null);\n\n var childProps = _objectSpread({}, _this2.props, {\n tree: editorState.getBlockTree(key),\n blockProps: customConfig.customProps,\n offsetKey: offsetKey,\n block: child\n });\n\n acc.push(React.createElement(Element, elementProps, React.createElement(Component, childProps)));\n\n if (!wrapperTemplate || shouldNotAddWrapperElement(child, contentState)) {\n return acc;\n } // if we are here it means we are the last block\n // that has a wrapperTemplate so we should wrap itself\n // and all other previous siblings that share the same wrapper\n\n\n applyWrapperElementToSiblings(wrapperTemplate, Element, acc);\n return acc;\n }, []);\n }\n\n var blockKey = block.getKey();\n var offsetKey = DraftOffsetKey.encode(blockKey, 0, 0);\n var customConfig = getCustomRenderConfig(block, blockRendererFn);\n var Component = customConfig.CustomComponent;\n var blockNode = Component != null ? React.createElement(Component, _extends({}, this.props, {\n tree: editorState.getBlockTree(blockKey),\n blockProps: customConfig.customProps,\n offsetKey: offsetKey,\n block: block\n })) : React.createElement(DraftEditorNode, {\n block: block,\n children: children,\n contentState: contentState,\n customStyleFn: customStyleFn,\n customStyleMap: customStyleMap,\n decorator: decorator,\n direction: direction,\n forceSelection: forceSelection,\n hasSelection: isBlockOnSelectionEdge(selection, blockKey),\n selection: selection,\n tree: tree\n });\n\n if (block.getParentKey()) {\n return blockNode;\n }\n\n var _getDraftRenderConfig2 = getDraftRenderConfig(block, blockRenderMap),\n Element = _getDraftRenderConfig2.Element;\n\n var elementProps = getElementPropsConfig(block, editorKey, offsetKey, blockStyleFn, customConfig, this.wrapperRef); // root block nodes needs to be wrapped\n\n return React.createElement(Element, elementProps, blockNode);\n };\n\n return DraftEditorBlockNode;\n}(React.Component);\n\nmodule.exports = DraftEditorBlockNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DOMObserver = require(\"./DOMObserver\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar editOnSelect = require(\"./editOnSelect\");\n\nvar getContentEditableContainer = require(\"./getContentEditableContainer\");\n\nvar getDraftEditorSelection = require(\"./getDraftEditorSelection\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isIE = UserAgent.isBrowser('IE');\n/**\n * Millisecond delay to allow `compositionstart` to fire again upon\n * `compositionend`.\n *\n * This is used for Korean input to ensure that typing can continue without\n * the editor trying to render too quickly. More specifically, Safari 7.1+\n * triggers `compositionstart` a little slower than Chrome/FF, which\n * leads to composed characters being resolved and re-render occurring\n * sooner than we want.\n */\n\nvar RESOLVE_DELAY = 20;\n/**\n * A handful of variables used to track the current composition and its\n * resolution status. These exist at the module level because it is not\n * possible to have compositions occurring in multiple editors simultaneously,\n * and it simplifies state management with respect to the DraftEditor component.\n */\n\nvar resolved = false;\nvar stillComposing = false;\nvar domObserver = null;\n\nfunction startDOMObserver(editor) {\n if (!domObserver) {\n domObserver = new DOMObserver(getContentEditableContainer(editor));\n domObserver.start();\n }\n}\n\nvar DraftEditorCompositionHandler = {\n /**\n * A `compositionstart` event has fired while we're still in composition\n * mode. Continue the current composition session to prevent a re-render.\n */\n onCompositionStart: function onCompositionStart(editor) {\n stillComposing = true;\n startDOMObserver(editor);\n },\n\n /**\n * Attempt to end the current composition session.\n *\n * Defer handling because browser will still insert the chars into active\n * element after `compositionend`. If a `compositionstart` event fires\n * before `resolveComposition` executes, our composition session will\n * continue.\n *\n * The `resolved` flag is useful because certain IME interfaces fire the\n * `compositionend` event multiple times, thus queueing up multiple attempts\n * at handling the composition. Since handling the same composition event\n * twice could break the DOM, we only use the first event. Example: Arabic\n * Google Input Tools on Windows 8.1 fires `compositionend` three times.\n */\n onCompositionEnd: function onCompositionEnd(editor) {\n resolved = false;\n stillComposing = false;\n setTimeout(function () {\n if (!resolved) {\n DraftEditorCompositionHandler.resolveComposition(editor);\n }\n }, RESOLVE_DELAY);\n },\n onSelect: editOnSelect,\n\n /**\n * In Safari, keydown events may fire when committing compositions. If\n * the arrow keys are used to commit, prevent default so that the cursor\n * doesn't move, otherwise it will jump back noticeably on re-render.\n */\n onKeyDown: function onKeyDown(editor, e) {\n if (!stillComposing) {\n // If a keydown event is received after compositionend but before the\n // 20ms timer expires (ex: type option-E then backspace, or type A then\n // backspace in 2-Set Korean), we should immediately resolve the\n // composition and reinterpret the key press in edit mode.\n DraftEditorCompositionHandler.resolveComposition(editor);\n\n editor._onKeyDown(e);\n\n return;\n }\n\n if (e.which === Keys.RIGHT || e.which === Keys.LEFT) {\n e.preventDefault();\n }\n },\n\n /**\n * Keypress events may fire when committing compositions. In Firefox,\n * pressing RETURN commits the composition and inserts extra newline\n * characters that we do not want. `preventDefault` allows the composition\n * to be committed while preventing the extra characters.\n */\n onKeyPress: function onKeyPress(_editor, e) {\n if (e.which === Keys.RETURN) {\n e.preventDefault();\n }\n },\n\n /**\n * Attempt to insert composed characters into the document.\n *\n * If we are still in a composition session, do nothing. Otherwise, insert\n * the characters into the document and terminate the composition session.\n *\n * If no characters were composed -- for instance, the user\n * deleted all composed characters and committed nothing new --\n * force a re-render. We also re-render when the composition occurs\n * at the beginning of a leaf, to ensure that if the browser has\n * created a new text node for the composition, we will discard it.\n *\n * Resetting innerHTML will move focus to the beginning of the editor,\n * so we update to force it back to the correct place.\n */\n resolveComposition: function resolveComposition(editor) {\n if (stillComposing) {\n return;\n }\n\n var mutations = nullthrows(domObserver).stopAndFlushMutations();\n domObserver = null;\n resolved = true;\n var editorState = EditorState.set(editor._latestEditorState, {\n inCompositionMode: false\n });\n editor.exitCurrentMode();\n\n if (!mutations.size) {\n editor.update(editorState);\n return;\n } // TODO, check if Facebook still needs this flag or if it could be removed.\n // Since there can be multiple mutations providing a `composedChars` doesn't\n // apply well on this new model.\n // if (\n // gkx('draft_handlebeforeinput_composed_text') &&\n // editor.props.handleBeforeInput &&\n // isEventHandled(\n // editor.props.handleBeforeInput(\n // composedChars,\n // editorState,\n // event.timeStamp,\n // ),\n // )\n // ) {\n // return;\n // }\n\n\n var contentState = editorState.getCurrentContent();\n mutations.forEach(function (composedChars, offsetKey) {\n var _DraftOffsetKey$decod = DraftOffsetKey.decode(offsetKey),\n blockKey = _DraftOffsetKey$decod.blockKey,\n decoratorKey = _DraftOffsetKey$decod.decoratorKey,\n leafKey = _DraftOffsetKey$decod.leafKey;\n\n var _editorState$getBlock = editorState.getBlockTree(blockKey).getIn([decoratorKey, 'leaves', leafKey]),\n start = _editorState$getBlock.start,\n end = _editorState$getBlock.end;\n\n var replacementRange = editorState.getSelection().merge({\n anchorKey: blockKey,\n focusKey: blockKey,\n anchorOffset: start,\n focusOffset: end,\n isBackward: false\n });\n var entityKey = getEntityKeyForSelection(contentState, replacementRange);\n var currentStyle = contentState.getBlockForKey(blockKey).getInlineStyleAt(start);\n contentState = DraftModifier.replaceText(contentState, replacementRange, composedChars, currentStyle, entityKey); // We need to update the editorState so the leaf node ranges are properly\n // updated and multiple mutations are correctly applied.\n\n editorState = EditorState.set(editorState, {\n currentContent: contentState\n });\n }); // When we apply the text changes to the ContentState, the selection always\n // goes to the end of the field, but it should just stay where it is\n // after compositionEnd.\n\n var documentSelection = getDraftEditorSelection(editorState, getContentEditableContainer(editor));\n var compositionEndSelectionState = documentSelection.selectionState;\n editor.restoreEditorDOM(); // See:\n // - https://github.com/facebook/draft-js/issues/2093\n // - https://github.com/facebook/draft-js/pull/2094\n // Apply this fix only in IE for now. We can test it in\n // other browsers in the future to ensure no regressions\n\n var editorStateWithUpdatedSelection = isIE ? EditorState.forceSelection(editorState, compositionEndSelectionState) : EditorState.acceptSelection(editorState, compositionEndSelectionState);\n editor.update(EditorState.push(editorStateWithUpdatedSelection, contentState, 'insert-characters'));\n }\n};\nmodule.exports = DraftEditorCompositionHandler;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorBlock = require(\"./DraftEditorBlock.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar joinClasses = require(\"fbjs/lib/joinClasses\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * Provide default styling for list items. This way, lists will be styled with\n * proper counters and indentation even if the caller does not specify\n * their own styling at all. If more than five levels of nesting are needed,\n * the necessary CSS classes can be provided via `blockStyleFn` configuration.\n */\nvar getListItemClasses = function getListItemClasses(type, depth, shouldResetCount, direction) {\n return cx({\n 'public/DraftStyleDefault/unorderedListItem': type === 'unordered-list-item',\n 'public/DraftStyleDefault/orderedListItem': type === 'ordered-list-item',\n 'public/DraftStyleDefault/reset': shouldResetCount,\n 'public/DraftStyleDefault/depth0': depth === 0,\n 'public/DraftStyleDefault/depth1': depth === 1,\n 'public/DraftStyleDefault/depth2': depth === 2,\n 'public/DraftStyleDefault/depth3': depth === 3,\n 'public/DraftStyleDefault/depth4': depth >= 4,\n 'public/DraftStyleDefault/listLTR': direction === 'LTR',\n 'public/DraftStyleDefault/listRTL': direction === 'RTL'\n });\n};\n/**\n * `DraftEditorContents` is the container component for all block components\n * rendered for a `DraftEditor`. It is optimized to aggressively avoid\n * re-rendering blocks whenever possible.\n *\n * This component is separate from `DraftEditor` because certain props\n * (for instance, ARIA props) must be allowed to update without affecting\n * the contents of the editor.\n */\n\n\nvar DraftEditorContents = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorContents, _React$Component);\n\n function DraftEditorContents() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorContents.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var prevEditorState = this.props.editorState;\n var nextEditorState = nextProps.editorState;\n var prevDirectionMap = prevEditorState.getDirectionMap();\n var nextDirectionMap = nextEditorState.getDirectionMap(); // Text direction has changed for one or more blocks. We must re-render.\n\n if (prevDirectionMap !== nextDirectionMap) {\n return true;\n }\n\n var didHaveFocus = prevEditorState.getSelection().getHasFocus();\n var nowHasFocus = nextEditorState.getSelection().getHasFocus();\n\n if (didHaveFocus !== nowHasFocus) {\n return true;\n }\n\n var nextNativeContent = nextEditorState.getNativelyRenderedContent();\n var wasComposing = prevEditorState.isInCompositionMode();\n var nowComposing = nextEditorState.isInCompositionMode(); // If the state is unchanged or we're currently rendering a natively\n // rendered state, there's nothing new to be done.\n\n if (prevEditorState === nextEditorState || nextNativeContent !== null && nextEditorState.getCurrentContent() === nextNativeContent || wasComposing && nowComposing) {\n return false;\n }\n\n var prevContent = prevEditorState.getCurrentContent();\n var nextContent = nextEditorState.getCurrentContent();\n var prevDecorator = prevEditorState.getDecorator();\n var nextDecorator = nextEditorState.getDecorator();\n return wasComposing !== nowComposing || prevContent !== nextContent || prevDecorator !== nextDecorator || nextEditorState.mustForceSelection();\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n blockRenderMap = _this$props.blockRenderMap,\n blockRendererFn = _this$props.blockRendererFn,\n blockStyleFn = _this$props.blockStyleFn,\n customStyleMap = _this$props.customStyleMap,\n customStyleFn = _this$props.customStyleFn,\n editorState = _this$props.editorState,\n editorKey = _this$props.editorKey,\n preventScroll = _this$props.preventScroll,\n textDirectionality = _this$props.textDirectionality;\n var content = editorState.getCurrentContent();\n var selection = editorState.getSelection();\n var forceSelection = editorState.mustForceSelection();\n var decorator = editorState.getDecorator();\n var directionMap = nullthrows(editorState.getDirectionMap());\n var blocksAsArray = content.getBlocksAsArray();\n var processedBlocks = [];\n var currentDepth = null;\n var lastWrapperTemplate = null;\n\n for (var ii = 0; ii < blocksAsArray.length; ii++) {\n var _block = blocksAsArray[ii];\n\n var key = _block.getKey();\n\n var blockType = _block.getType();\n\n var customRenderer = blockRendererFn(_block);\n var CustomComponent = void 0,\n customProps = void 0,\n customEditable = void 0;\n\n if (customRenderer) {\n CustomComponent = customRenderer.component;\n customProps = customRenderer.props;\n customEditable = customRenderer.editable;\n }\n\n var direction = textDirectionality ? textDirectionality : directionMap.get(key);\n var offsetKey = DraftOffsetKey.encode(key, 0, 0);\n var componentProps = {\n contentState: content,\n block: _block,\n blockProps: customProps,\n blockStyleFn: blockStyleFn,\n customStyleMap: customStyleMap,\n customStyleFn: customStyleFn,\n decorator: decorator,\n direction: direction,\n forceSelection: forceSelection,\n offsetKey: offsetKey,\n preventScroll: preventScroll,\n selection: selection,\n tree: editorState.getBlockTree(key)\n };\n var configForType = blockRenderMap.get(blockType) || blockRenderMap.get('unstyled');\n var wrapperTemplate = configForType.wrapper;\n var Element = configForType.element || blockRenderMap.get('unstyled').element;\n\n var depth = _block.getDepth();\n\n var _className = '';\n\n if (blockStyleFn) {\n _className = blockStyleFn(_block);\n } // List items are special snowflakes, since we handle nesting and\n // counters manually.\n\n\n if (Element === 'li') {\n var shouldResetCount = lastWrapperTemplate !== wrapperTemplate || currentDepth === null || depth > currentDepth;\n _className = joinClasses(_className, getListItemClasses(blockType, depth, shouldResetCount, direction));\n }\n\n var Component = CustomComponent || DraftEditorBlock;\n var childProps = {\n className: _className,\n 'data-block': true,\n 'data-editor': editorKey,\n 'data-offset-key': offsetKey,\n key: key\n };\n\n if (customEditable !== undefined) {\n childProps = _objectSpread({}, childProps, {\n contentEditable: customEditable,\n suppressContentEditableWarning: true\n });\n }\n\n var child = React.createElement(Element, childProps,\n /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This\n * comment suppresses an error found when Flow v0.112 was deployed. To\n * see the error delete this comment and run Flow. */\n React.createElement(Component, _extends({}, componentProps, {\n key: key\n })));\n processedBlocks.push({\n block: child,\n wrapperTemplate: wrapperTemplate,\n key: key,\n offsetKey: offsetKey\n });\n\n if (wrapperTemplate) {\n currentDepth = _block.getDepth();\n } else {\n currentDepth = null;\n }\n\n lastWrapperTemplate = wrapperTemplate;\n } // Group contiguous runs of blocks that have the same wrapperTemplate\n\n\n var outputBlocks = [];\n\n for (var _ii = 0; _ii < processedBlocks.length;) {\n var info = processedBlocks[_ii];\n\n if (info.wrapperTemplate) {\n var blocks = [];\n\n do {\n blocks.push(processedBlocks[_ii].block);\n _ii++;\n } while (_ii < processedBlocks.length && processedBlocks[_ii].wrapperTemplate === info.wrapperTemplate);\n\n var wrapperElement = React.cloneElement(info.wrapperTemplate, {\n key: info.key + '-wrap',\n 'data-offset-key': info.offsetKey\n }, blocks);\n outputBlocks.push(wrapperElement);\n } else {\n outputBlocks.push(info.block);\n _ii++;\n }\n }\n\n return React.createElement(\"div\", {\n \"data-contents\": \"true\"\n }, outputBlocks);\n };\n\n return DraftEditorContents;\n}(React.Component);\n\nmodule.exports = DraftEditorContents;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nvar gkx = require(\"./gkx\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nmodule.exports = experimentalTreeDataSupport ? require(\"./DraftEditorContentsExperimental.react\") : require(\"./DraftEditorContents-core.react\");","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of DraftEditorContents.react.js for tree nodes\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorBlockNode = require(\"./DraftEditorBlockNode.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * `DraftEditorContents` is the container component for all block components\n * rendered for a `DraftEditor`. It is optimized to aggressively avoid\n * re-rendering blocks whenever possible.\n *\n * This component is separate from `DraftEditor` because certain props\n * (for instance, ARIA props) must be allowed to update without affecting\n * the contents of the editor.\n */\nvar DraftEditorContentsExperimental = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorContentsExperimental, _React$Component);\n\n function DraftEditorContentsExperimental() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorContentsExperimental.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var prevEditorState = this.props.editorState;\n var nextEditorState = nextProps.editorState;\n var prevDirectionMap = prevEditorState.getDirectionMap();\n var nextDirectionMap = nextEditorState.getDirectionMap(); // Text direction has changed for one or more blocks. We must re-render.\n\n if (prevDirectionMap !== nextDirectionMap) {\n return true;\n }\n\n var didHaveFocus = prevEditorState.getSelection().getHasFocus();\n var nowHasFocus = nextEditorState.getSelection().getHasFocus();\n\n if (didHaveFocus !== nowHasFocus) {\n return true;\n }\n\n var nextNativeContent = nextEditorState.getNativelyRenderedContent();\n var wasComposing = prevEditorState.isInCompositionMode();\n var nowComposing = nextEditorState.isInCompositionMode(); // If the state is unchanged or we're currently rendering a natively\n // rendered state, there's nothing new to be done.\n\n if (prevEditorState === nextEditorState || nextNativeContent !== null && nextEditorState.getCurrentContent() === nextNativeContent || wasComposing && nowComposing) {\n return false;\n }\n\n var prevContent = prevEditorState.getCurrentContent();\n var nextContent = nextEditorState.getCurrentContent();\n var prevDecorator = prevEditorState.getDecorator();\n var nextDecorator = nextEditorState.getDecorator();\n return wasComposing !== nowComposing || prevContent !== nextContent || prevDecorator !== nextDecorator || nextEditorState.mustForceSelection();\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n blockRenderMap = _this$props.blockRenderMap,\n blockRendererFn = _this$props.blockRendererFn,\n blockStyleFn = _this$props.blockStyleFn,\n customStyleMap = _this$props.customStyleMap,\n customStyleFn = _this$props.customStyleFn,\n editorState = _this$props.editorState,\n editorKey = _this$props.editorKey,\n textDirectionality = _this$props.textDirectionality;\n var content = editorState.getCurrentContent();\n var selection = editorState.getSelection();\n var forceSelection = editorState.mustForceSelection();\n var decorator = editorState.getDecorator();\n var directionMap = nullthrows(editorState.getDirectionMap());\n var blocksAsArray = content.getBlocksAsArray();\n var rootBlock = blocksAsArray[0];\n var processedBlocks = [];\n var nodeBlock = rootBlock;\n\n while (nodeBlock) {\n var blockKey = nodeBlock.getKey();\n var blockProps = {\n blockRenderMap: blockRenderMap,\n blockRendererFn: blockRendererFn,\n blockStyleFn: blockStyleFn,\n contentState: content,\n customStyleFn: customStyleFn,\n customStyleMap: customStyleMap,\n decorator: decorator,\n editorKey: editorKey,\n editorState: editorState,\n forceSelection: forceSelection,\n selection: selection,\n block: nodeBlock,\n direction: textDirectionality ? textDirectionality : directionMap.get(blockKey),\n tree: editorState.getBlockTree(blockKey)\n };\n var configForType = blockRenderMap.get(nodeBlock.getType()) || blockRenderMap.get('unstyled');\n var wrapperTemplate = configForType.wrapper;\n processedBlocks.push({\n /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This\n * comment suppresses an error found when Flow v0.112 was deployed. To\n * see the error delete this comment and run Flow. */\n block: React.createElement(DraftEditorBlockNode, _extends({\n key: blockKey\n }, blockProps)),\n wrapperTemplate: wrapperTemplate,\n key: blockKey,\n offsetKey: DraftOffsetKey.encode(blockKey, 0, 0)\n });\n var nextBlockKey = nodeBlock.getNextSiblingKey();\n nodeBlock = nextBlockKey ? content.getBlockForKey(nextBlockKey) : null;\n } // Group contiguous runs of blocks that have the same wrapperTemplate\n\n\n var outputBlocks = [];\n\n for (var ii = 0; ii < processedBlocks.length;) {\n var info = processedBlocks[ii];\n\n if (info.wrapperTemplate) {\n var blocks = [];\n\n do {\n blocks.push(processedBlocks[ii].block);\n ii++;\n } while (ii < processedBlocks.length && processedBlocks[ii].wrapperTemplate === info.wrapperTemplate);\n\n var wrapperElement = React.cloneElement(info.wrapperTemplate, {\n key: info.key + '-wrap',\n 'data-offset-key': info.offsetKey\n }, blocks);\n outputBlocks.push(wrapperElement);\n } else {\n outputBlocks.push(info.block);\n ii++;\n }\n }\n\n return React.createElement(\"div\", {\n \"data-contents\": \"true\"\n }, outputBlocks);\n };\n\n return DraftEditorContentsExperimental;\n}(React.Component);\n\nmodule.exports = DraftEditorContentsExperimental;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar UnicodeBidi = require(\"fbjs/lib/UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"fbjs/lib/UnicodeBidiDirection\");\n\nvar DraftEditorDecoratedLeaves = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorDecoratedLeaves, _React$Component);\n\n function DraftEditorDecoratedLeaves() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorDecoratedLeaves.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n block = _this$props.block,\n children = _this$props.children,\n contentState = _this$props.contentState,\n decorator = _this$props.decorator,\n decoratorKey = _this$props.decoratorKey,\n direction = _this$props.direction,\n leafSet = _this$props.leafSet,\n text = _this$props.text;\n var blockKey = block.getKey();\n var leavesForLeafSet = leafSet.get('leaves');\n var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n var decoratorProps = decorator.getPropsForKey(decoratorKey);\n var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, parseInt(decoratorKey, 10), 0);\n var decoratedText = text.slice(leavesForLeafSet.first().get('start'), leavesForLeafSet.last().get('end')); // Resetting dir to the same value on a child node makes Chrome/Firefox\n // confused on cursor movement. See http://jsfiddle.net/d157kLck/3/\n\n var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), direction);\n return React.createElement(DecoratorComponent, _extends({}, decoratorProps, {\n contentState: contentState,\n decoratedText: decoratedText,\n dir: dir,\n key: decoratorOffsetKey,\n entityKey: block.getEntityAt(leafSet.get('start')),\n offsetKey: decoratorOffsetKey\n }), children);\n };\n\n return DraftEditorDecoratedLeaves;\n}(React.Component);\n\nmodule.exports = DraftEditorDecoratedLeaves;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DataTransfer = require(\"fbjs/lib/DataTransfer\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getTextContentFromFiles = require(\"./getTextContentFromFiles\");\n\nvar getUpdatedSelectionState = require(\"./getUpdatedSelectionState\");\n\nvar getWindowForNode = require(\"./getWindowForNode\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n/**\n * Get a SelectionState for the supplied mouse event.\n */\n\n\nfunction getSelectionForEvent(event, editorState) {\n var node = null;\n var offset = null;\n var eventTargetDocument = getCorrectDocumentFromNode(event.currentTarget);\n /* $FlowFixMe[prop-missing] (>=0.68.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the error\n * delete this comment and run Flow. */\n\n if (typeof eventTargetDocument.caretRangeFromPoint === 'function') {\n /* $FlowFixMe[incompatible-use] (>=0.68.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the error\n * delete this comment and run Flow. */\n var dropRange = eventTargetDocument.caretRangeFromPoint(event.x, event.y);\n node = dropRange.startContainer;\n offset = dropRange.startOffset;\n } else if (event.rangeParent) {\n node = event.rangeParent;\n offset = event.rangeOffset;\n } else {\n return null;\n }\n\n node = nullthrows(node);\n offset = nullthrows(offset);\n var offsetKey = nullthrows(findAncestorOffsetKey(node));\n return getUpdatedSelectionState(editorState, offsetKey, offset, offsetKey, offset);\n}\n\nvar DraftEditorDragHandler = {\n /**\n * Drag originating from input terminated.\n */\n onDragEnd: function onDragEnd(editor) {\n editor.exitCurrentMode();\n endDrag(editor);\n },\n\n /**\n * Handle data being dropped.\n */\n onDrop: function onDrop(editor, e) {\n var data = new DataTransfer(e.nativeEvent.dataTransfer);\n var editorState = editor._latestEditorState;\n var dropSelection = getSelectionForEvent(e.nativeEvent, editorState);\n e.preventDefault();\n editor._dragCount = 0;\n editor.exitCurrentMode();\n\n if (dropSelection == null) {\n return;\n }\n\n var files = data.getFiles();\n\n if (files.length > 0) {\n if (editor.props.handleDroppedFiles && isEventHandled(editor.props.handleDroppedFiles(dropSelection, files))) {\n return;\n }\n /* $FlowFixMe[incompatible-call] This comment suppresses an error found\n * DataTransfer was typed. getFiles() returns an array of , not Blob */\n\n\n getTextContentFromFiles(files, function (fileText) {\n fileText && editor.update(insertTextAtSelection(editorState, dropSelection, fileText));\n });\n return;\n }\n\n var dragType = editor._internalDrag ? 'internal' : 'external';\n\n if (editor.props.handleDrop && isEventHandled(editor.props.handleDrop(dropSelection, data, dragType))) {// handled\n } else if (editor._internalDrag) {\n editor.update(moveText(editorState, dropSelection));\n } else {\n editor.update(insertTextAtSelection(editorState, dropSelection, data.getText()));\n }\n\n endDrag(editor);\n }\n};\n\nfunction endDrag(editor) {\n editor._internalDrag = false; // Fix issue #1383\n // Prior to React v16.5.0 onDrop breaks onSelect event:\n // https://github.com/facebook/react/issues/11379.\n // Dispatching a mouseup event on DOM node will make it go back to normal.\n\n var editorNode = editor.editorContainer;\n\n if (editorNode) {\n var mouseUpEvent = new MouseEvent('mouseup', {\n view: getWindowForNode(editorNode),\n bubbles: true,\n cancelable: true\n });\n editorNode.dispatchEvent(mouseUpEvent);\n }\n}\n\nfunction moveText(editorState, targetSelection) {\n var newContentState = DraftModifier.moveText(editorState.getCurrentContent(), editorState.getSelection(), targetSelection);\n return EditorState.push(editorState, newContentState, 'insert-fragment');\n}\n/**\n * Insert text at a specified selection.\n */\n\n\nfunction insertTextAtSelection(editorState, selection, text) {\n var newContentState = DraftModifier.insertText(editorState.getCurrentContent(), selection, text, editorState.getCurrentInlineStyle());\n return EditorState.push(editorState, newContentState, 'insert-fragment');\n}\n\nmodule.exports = DraftEditorDragHandler;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar onBeforeInput = require(\"./editOnBeforeInput\");\n\nvar onBlur = require(\"./editOnBlur\");\n\nvar onCompositionStart = require(\"./editOnCompositionStart\");\n\nvar onCopy = require(\"./editOnCopy\");\n\nvar onCut = require(\"./editOnCut\");\n\nvar onDragOver = require(\"./editOnDragOver\");\n\nvar onDragStart = require(\"./editOnDragStart\");\n\nvar onFocus = require(\"./editOnFocus\");\n\nvar onInput = require(\"./editOnInput\");\n\nvar onKeyDown = require(\"./editOnKeyDown\");\n\nvar onPaste = require(\"./editOnPaste\");\n\nvar onSelect = require(\"./editOnSelect\");\n\nvar isChrome = UserAgent.isBrowser('Chrome');\nvar isFirefox = UserAgent.isBrowser('Firefox');\nvar selectionHandler = isChrome || isFirefox ? onSelect : function (e) {};\nvar DraftEditorEditHandler = {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onCompositionStart: onCompositionStart,\n onCopy: onCopy,\n onCut: onCut,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onFocus: onFocus,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect,\n // In certain cases, contenteditable on chrome does not fire the onSelect\n // event, causing problems with cursor positioning. Therefore, the selection\n // state update handler is added to more events to ensure that the selection\n // state is always synced with the actual cursor positions.\n onMouseUp: selectionHandler,\n onKeyUp: selectionHandler\n};\nmodule.exports = DraftEditorEditHandler;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar ReactDOMComet = require(\"react-dom\");\n\nvar flushControlled = ReactDOMComet.unstable_flushControlled;\nmodule.exports = flushControlled;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorTextNode = require(\"./DraftEditorTextNode.react\");\n\nvar React = require(\"react\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar setDraftEditorSelection = require(\"./setDraftEditorSelection\").setDraftEditorSelection;\n\n/**\n * All leaf nodes in the editor are spans with single text nodes. Leaf\n * elements are styled based on the merging of an optional custom style map\n * and a default style map.\n *\n * `DraftEditorLeaf` also provides a wrapper for calling into the imperative\n * DOM Selection API. In this way, top-level components can declaratively\n * maintain the selection state.\n */\nvar DraftEditorLeaf = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorLeaf, _React$Component);\n\n function DraftEditorLeaf() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"leaf\", void 0);\n\n return _this;\n }\n\n var _proto = DraftEditorLeaf.prototype;\n\n _proto._setSelection = function _setSelection() {\n var selection = this.props.selection; // If selection state is irrelevant to the parent block, no-op.\n\n if (selection == null || !selection.getHasFocus()) {\n return;\n }\n\n var _this$props = this.props,\n block = _this$props.block,\n start = _this$props.start,\n text = _this$props.text;\n var blockKey = block.getKey();\n var end = start + text.length;\n\n if (!selection.hasEdgeWithin(blockKey, start, end)) {\n return;\n } // Determine the appropriate target node for selection. If the child\n // is not a text node, it is a
spacer. In this case, use the\n // itself as the selection target.\n\n\n var node = this.leaf;\n !node ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing node') : invariant(false) : void 0;\n var child = node.firstChild;\n !child ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing child') : invariant(false) : void 0;\n var targetNode;\n\n if (child.nodeType === Node.TEXT_NODE) {\n targetNode = child;\n } else if (isHTMLBRElement(child)) {\n targetNode = node;\n } else {\n targetNode = child.firstChild;\n !targetNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing targetNode') : invariant(false) : void 0;\n }\n\n setDraftEditorSelection(selection, targetNode, blockKey, start, end);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var leafNode = this.leaf;\n !leafNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing leafNode') : invariant(false) : void 0;\n var shouldUpdate = leafNode.textContent !== nextProps.text || nextProps.styleSet !== this.props.styleSet || nextProps.forceSelection;\n return shouldUpdate;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this._setSelection();\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._setSelection();\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var block = this.props.block;\n var text = this.props.text; // If the leaf is at the end of its block and ends in a soft newline, append\n // an extra line feed character. Browsers collapse trailing newline\n // characters, which leaves the cursor in the wrong place after a\n // shift+enter. The extra character repairs this.\n\n if (text.endsWith('\\n') && this.props.isLast) {\n text += '\\n';\n }\n\n var _this$props2 = this.props,\n customStyleMap = _this$props2.customStyleMap,\n customStyleFn = _this$props2.customStyleFn,\n offsetKey = _this$props2.offsetKey,\n styleSet = _this$props2.styleSet;\n var styleObj = styleSet.reduce(function (map, styleName) {\n var mergedStyles = {};\n var style = customStyleMap[styleName];\n\n if (style !== undefined && map.textDecoration !== style.textDecoration) {\n // .trim() is necessary for IE9/10/11 and Edge\n mergedStyles.textDecoration = [map.textDecoration, style.textDecoration].join(' ').trim();\n }\n\n return _assign(map, style, mergedStyles);\n }, {});\n\n if (customStyleFn) {\n var newStyles = customStyleFn(styleSet, block);\n styleObj = _assign(styleObj, newStyles);\n }\n\n return React.createElement(\"span\", {\n \"data-offset-key\": offsetKey,\n ref: function ref(_ref) {\n return _this2.leaf = _ref;\n },\n style: styleObj\n }, React.createElement(DraftEditorTextNode, null, text));\n };\n\n return DraftEditorLeaf;\n}(React.Component);\n\nmodule.exports = DraftEditorLeaf;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorDecoratedLeaves = require(\"./DraftEditorDecoratedLeaves.react\");\n\nvar DraftEditorLeaf = require(\"./DraftEditorLeaf.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar List = Immutable.List;\n\nvar DraftEditorNode = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorNode, _React$Component);\n\n function DraftEditorNode() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorNode.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n block = _this$props.block,\n contentState = _this$props.contentState,\n customStyleFn = _this$props.customStyleFn,\n customStyleMap = _this$props.customStyleMap,\n decorator = _this$props.decorator,\n direction = _this$props.direction,\n forceSelection = _this$props.forceSelection,\n hasSelection = _this$props.hasSelection,\n selection = _this$props.selection,\n tree = _this$props.tree;\n var blockKey = block.getKey();\n var text = block.getText();\n var lastLeafSet = tree.size - 1;\n var children = this.props.children || tree.map(function (leafSet, ii) {\n var decoratorKey = leafSet.get('decoratorKey');\n var leavesForLeafSet = leafSet.get('leaves');\n var lastLeaf = leavesForLeafSet.size - 1;\n var Leaves = leavesForLeafSet.map(function (leaf, jj) {\n var offsetKey = DraftOffsetKey.encode(blockKey, ii, jj);\n var start = leaf.get('start');\n var end = leaf.get('end');\n return React.createElement(DraftEditorLeaf, {\n key: offsetKey,\n offsetKey: offsetKey,\n block: block,\n start: start,\n selection: hasSelection ? selection : null,\n forceSelection: forceSelection,\n text: text.slice(start, end),\n styleSet: block.getInlineStyleAt(start),\n customStyleMap: customStyleMap,\n customStyleFn: customStyleFn,\n isLast: decoratorKey === lastLeafSet && jj === lastLeaf\n });\n }).toArray();\n\n if (!decoratorKey || !decorator) {\n return Leaves;\n }\n\n return React.createElement(DraftEditorDecoratedLeaves, {\n block: block,\n children: Leaves,\n contentState: contentState,\n decorator: decorator,\n decoratorKey: decoratorKey,\n direction: direction,\n leafSet: leafSet,\n text: text,\n key: ii\n });\n }).toArray();\n return React.createElement(\"div\", {\n \"data-offset-key\": DraftOffsetKey.encode(blockKey, 0, 0),\n className: cx({\n 'public/DraftStyleDefault/block': true,\n 'public/DraftStyleDefault/ltr': direction === 'LTR',\n 'public/DraftStyleDefault/rtl': direction === 'RTL'\n })\n }, children);\n };\n\n return DraftEditorNode;\n}(React.Component);\n\nmodule.exports = DraftEditorNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\n/**\n * This component is responsible for rendering placeholder text for the\n * `DraftEditor` component.\n *\n * Override placeholder style via CSS.\n */\nvar DraftEditorPlaceholder = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorPlaceholder, _React$Component);\n\n function DraftEditorPlaceholder() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorPlaceholder.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return this.props.text !== nextProps.text || this.props.editorState.getSelection().getHasFocus() !== nextProps.editorState.getSelection().getHasFocus();\n };\n\n _proto.render = function render() {\n var hasFocus = this.props.editorState.getSelection().getHasFocus();\n var className = cx({\n 'public/DraftEditorPlaceholder/root': true,\n 'public/DraftEditorPlaceholder/hasFocus': hasFocus\n });\n var contentStyle = {\n whiteSpace: 'pre-wrap'\n };\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: cx('public/DraftEditorPlaceholder/inner'),\n id: this.props.accessibilityID,\n style: contentStyle\n }, this.props.text));\n };\n\n return DraftEditorPlaceholder;\n}(React.Component);\n\nmodule.exports = DraftEditorPlaceholder;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar React = require(\"react\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\"); // In IE, spans with
tags render as two newlines. By rendering a span\n// with only a newline character, we can be sure to render a single line.\n\n\nvar useNewlineChar = UserAgent.isBrowser('IE <= 11');\n/**\n * Check whether the node should be considered a newline.\n */\n\nfunction isNewline(node) {\n return useNewlineChar ? node.textContent === '\\n' : node.tagName === 'BR';\n}\n/**\n * Placeholder elements for empty text content.\n *\n * What is this `data-text` attribute, anyway? It turns out that we need to\n * put an attribute on the lowest-level text node in order to preserve correct\n * spellcheck handling. If the is naked, Chrome and Safari may do\n * bizarre things to do the DOM -- split text nodes, create extra spans, etc.\n * If the has an attribute, this appears not to happen.\n * See http://jsfiddle.net/9khdavod/ for the failure case, and\n * http://jsfiddle.net/7pg143f7/ for the fixed case.\n */\n\n\nvar NEWLINE_A = function NEWLINE_A(ref) {\n return useNewlineChar ? React.createElement(\"span\", {\n key: \"A\",\n \"data-text\": \"true\",\n ref: ref\n }, '\\n') : React.createElement(\"br\", {\n key: \"A\",\n \"data-text\": \"true\",\n ref: ref\n });\n};\n\nvar NEWLINE_B = function NEWLINE_B(ref) {\n return useNewlineChar ? React.createElement(\"span\", {\n key: \"B\",\n \"data-text\": \"true\",\n ref: ref\n }, '\\n') : React.createElement(\"br\", {\n key: \"B\",\n \"data-text\": \"true\",\n ref: ref\n });\n};\n\n/**\n * The lowest-level component in a `DraftEditor`, the text node component\n * replaces the default React text node implementation. This allows us to\n * perform custom handling of newline behavior and avoid re-rendering text\n * nodes with DOM state that already matches the expectations of our immutable\n * editor state.\n */\nvar DraftEditorTextNode = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorTextNode, _React$Component);\n\n function DraftEditorTextNode(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // By flipping this flag, we also keep flipping keys which forces\n // React to remount this node every time it rerenders.\n\n _defineProperty(_assertThisInitialized(_this), \"_forceFlag\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_node\", void 0);\n\n _this._forceFlag = false;\n return _this;\n }\n\n var _proto = DraftEditorTextNode.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var node = this._node;\n var shouldBeNewline = nextProps.children === '';\n !isElement(node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'node is not an Element') : invariant(false) : void 0;\n var elementNode = node;\n\n if (shouldBeNewline) {\n return !isNewline(elementNode);\n }\n\n return elementNode.textContent !== nextProps.children;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._forceFlag = !this._forceFlag;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this._forceFlag = !this._forceFlag;\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n if (this.props.children === '') {\n return this._forceFlag ? NEWLINE_A(function (ref) {\n return _this2._node = ref;\n }) : NEWLINE_B(function (ref) {\n return _this2._node = ref;\n });\n }\n\n return React.createElement(\"span\", {\n key: this._forceFlag ? 'A' : 'B',\n \"data-text\": \"true\",\n ref: function ref(_ref) {\n return _this2._node = _ref;\n }\n }, this.props.children);\n };\n\n return DraftEditorTextNode;\n}(React.Component);\n\nmodule.exports = DraftEditorTextNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nmodule.exports = {\n initODS: function initODS() {},\n handleExtensionCausedError: function handleExtensionCausedError() {}\n};","\"use strict\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar uuid = require(\"./uuid\");\n\nvar Map = Immutable.Map;\nvar instances = Map();\nvar instanceKey = uuid();\n/**\n * Temporary utility for generating the warnings\n */\n\nfunction logWarning(oldMethodCall, newMethodCall) {\n console.warn('WARNING: ' + oldMethodCall + ' will be deprecated soon!\\nPlease use \"' + newMethodCall + '\" instead.');\n}\n\n/**\n * A \"document entity\" is an object containing metadata associated with a\n * piece of text in a ContentBlock.\n *\n * For example, a `link` entity might include a `uri` property. When a\n * ContentBlock is rendered in the browser, text that refers to that link\n * entity may be rendered as an anchor, with the `uri` as the href value.\n *\n * In a ContentBlock, every position in the text may correspond to zero\n * or one entities. This correspondence is tracked using a key string,\n * generated via DraftEntity.create() and used to obtain entity metadata\n * via DraftEntity.get().\n */\nvar DraftEntity = {\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.getLastCreatedEntityKey' instead.\n * ---\n * Get the random key string from whatever entity was last created.\n * We need this to support the new API, as part of transitioning to put Entity\n * storage in contentState.\n */\n getLastCreatedEntityKey: function getLastCreatedEntityKey() {\n logWarning('DraftEntity.getLastCreatedEntityKey', 'contentState.getLastCreatedEntityKey');\n return DraftEntity.__getLastCreatedEntityKey();\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.createEntity' instead.\n * ---\n * Create a DraftEntityInstance and store it for later retrieval.\n *\n * A random key string will be generated and returned. This key may\n * be used to track the entity's usage in a ContentBlock, and for\n * retrieving data about the entity at render time.\n */\n create: function create(type, mutability, data) {\n logWarning('DraftEntity.create', 'contentState.createEntity');\n return DraftEntity.__create(type, mutability, data);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.addEntity' instead.\n * ---\n * Add an existing DraftEntityInstance to the DraftEntity map. This is\n * useful when restoring instances from the server.\n */\n add: function add(instance) {\n logWarning('DraftEntity.add', 'contentState.addEntity');\n return DraftEntity.__add(instance);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.getEntity' instead.\n * ---\n * Retrieve the entity corresponding to the supplied key string.\n */\n get: function get(key) {\n logWarning('DraftEntity.get', 'contentState.getEntity');\n return DraftEntity.__get(key);\n },\n\n /**\n * Get all the entities in the content state.\n */\n __getAll: function __getAll() {\n return instances;\n },\n\n /**\n * Load the entity map with the given set of entities.\n */\n __loadWithEntities: function __loadWithEntities(entities) {\n instances = entities;\n instanceKey = uuid();\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.mergeEntityData' instead.\n * ---\n * Entity instances are immutable. If you need to update the data for an\n * instance, this method will merge your data updates and return a new\n * instance.\n */\n mergeData: function mergeData(key, toMerge) {\n logWarning('DraftEntity.mergeData', 'contentState.mergeEntityData');\n return DraftEntity.__mergeData(key, toMerge);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.replaceEntityData' instead.\n * ---\n * Completely replace the data for a given instance.\n */\n replaceData: function replaceData(key, newData) {\n logWarning('DraftEntity.replaceData', 'contentState.replaceEntityData');\n return DraftEntity.__replaceData(key, newData);\n },\n // ***********************************WARNING******************************\n // --- the above public API will be deprecated in the next version of Draft!\n // The methods below this line are private - don't call them directly.\n\n /**\n * Get the random key string from whatever entity was last created.\n * We need this to support the new API, as part of transitioning to put Entity\n * storage in contentState.\n */\n __getLastCreatedEntityKey: function __getLastCreatedEntityKey() {\n return instanceKey;\n },\n\n /**\n * Create a DraftEntityInstance and store it for later retrieval.\n *\n * A random key string will be generated and returned. This key may\n * be used to track the entity's usage in a ContentBlock, and for\n * retrieving data about the entity at render time.\n */\n __create: function __create(type, mutability, data) {\n return DraftEntity.__add(new DraftEntityInstance({\n type: type,\n mutability: mutability,\n data: data || {}\n }));\n },\n\n /**\n * Add an existing DraftEntityInstance to the DraftEntity map. This is\n * useful when restoring instances from the server.\n */\n __add: function __add(instance) {\n instanceKey = uuid();\n instances = instances.set(instanceKey, instance);\n return instanceKey;\n },\n\n /**\n * Retrieve the entity corresponding to the supplied key string.\n */\n __get: function __get(key) {\n var instance = instances.get(key);\n !!!instance ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown DraftEntity key: %s.', key) : invariant(false) : void 0;\n return instance;\n },\n\n /**\n * Entity instances are immutable. If you need to update the data for an\n * instance, this method will merge your data updates and return a new\n * instance.\n */\n __mergeData: function __mergeData(key, toMerge) {\n var instance = DraftEntity.__get(key);\n\n var newData = _objectSpread({}, instance.getData(), toMerge);\n\n var newInstance = instance.set('data', newData);\n instances = instances.set(key, newInstance);\n return newInstance;\n },\n\n /**\n * Completely replace the data for a given instance.\n */\n __replaceData: function __replaceData(key, newData) {\n var instance = DraftEntity.__get(key);\n\n var newInstance = instance.set('data', newData);\n instances = instances.set(key, newInstance);\n return newInstance;\n }\n};\nmodule.exports = DraftEntity;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @legacyServerCallableInstance\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar DraftEntityInstanceRecord = Record({\n type: 'TOKEN',\n mutability: 'IMMUTABLE',\n data: Object\n});\n/**\n * An instance of a document entity, consisting of a `type` and relevant\n * `data`, metadata about the entity.\n *\n * For instance, a \"link\" entity might provide a URI, and a \"mention\"\n * entity might provide the mentioned user's ID. These pieces of data\n * may be used when rendering the entity as part of a ContentBlock DOM\n * representation. For a link, the data would be used as an href for\n * the rendered anchor. For a mention, the ID could be used to retrieve\n * a hovercard.\n */\n\nvar DraftEntityInstance = /*#__PURE__*/function (_DraftEntityInstanceR) {\n _inheritsLoose(DraftEntityInstance, _DraftEntityInstanceR);\n\n function DraftEntityInstance() {\n return _DraftEntityInstanceR.apply(this, arguments) || this;\n }\n\n var _proto = DraftEntityInstance.prototype;\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getMutability = function getMutability() {\n return this.get('mutability');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n return DraftEntityInstance;\n}(DraftEntityInstanceRecord);\n\nmodule.exports = DraftEntityInstance;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Identify the range to delete from a segmented entity.\n *\n * Rules:\n *\n * Example: 'John F. Kennedy'\n *\n * - Deletion from within any non-whitespace (i.e. ['John', 'F.', 'Kennedy'])\n * will return the range of that text.\n *\n * 'John F. Kennedy' -> 'John F.'\n * ^\n *\n * - Forward deletion of whitespace will remove the following section:\n *\n * 'John F. Kennedy' -> 'John Kennedy'\n * ^\n *\n * - Backward deletion of whitespace will remove the previous section:\n *\n * 'John F. Kennedy' -> 'F. Kennedy'\n * ^\n */\nvar DraftEntitySegments = {\n getRemovalRange: function getRemovalRange(selectionStart, selectionEnd, text, entityStart, direction) {\n var segments = text.split(' ');\n segments = segments.map(function (\n /*string*/\n segment,\n /*number*/\n ii) {\n if (direction === 'forward') {\n if (ii > 0) {\n return ' ' + segment;\n }\n } else if (ii < segments.length - 1) {\n return segment + ' ';\n }\n\n return segment;\n });\n var segmentStart = entityStart;\n var segmentEnd;\n var segment;\n var removalStart = null;\n var removalEnd = null;\n\n for (var jj = 0; jj < segments.length; jj++) {\n segment = segments[jj];\n segmentEnd = segmentStart + segment.length; // Our selection overlaps this segment.\n\n if (selectionStart < segmentEnd && segmentStart < selectionEnd) {\n if (removalStart !== null) {\n removalEnd = segmentEnd;\n } else {\n removalStart = segmentStart;\n removalEnd = segmentEnd;\n }\n } else if (removalStart !== null) {\n break;\n }\n\n segmentStart = segmentEnd;\n }\n\n var entityEnd = entityStart + text.length;\n var atStart = removalStart === entityStart;\n var atEnd = removalEnd === entityEnd;\n\n if (!atStart && atEnd || atStart && !atEnd) {\n if (direction === 'forward') {\n if (removalEnd !== entityEnd) {\n removalEnd++;\n }\n } else if (removalStart !== entityStart) {\n removalStart--;\n }\n }\n\n return {\n start: removalStart,\n end: removalEnd\n };\n }\n};\nmodule.exports = DraftEntitySegments;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nmodule.exports = {\n logBlockedSelectionEvent: function logBlockedSelectionEvent() {\n return null;\n },\n logSelectionStateFailure: function logSelectionStateFailure() {\n return null;\n }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentStateInlineStyle = require(\"./ContentStateInlineStyle\");\n\nvar applyEntityToContentState = require(\"./applyEntityToContentState\");\n\nvar getCharacterRemovalRange = require(\"./getCharacterRemovalRange\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nvar Immutable = require(\"immutable\");\n\nvar insertFragmentIntoContentState = require(\"./insertFragmentIntoContentState\");\n\nvar insertTextIntoContentState = require(\"./insertTextIntoContentState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar modifyBlockForContentState = require(\"./modifyBlockForContentState\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar removeRangeFromContentState = require(\"./removeRangeFromContentState\");\n\nvar splitBlockInContentState = require(\"./splitBlockInContentState\");\n\nvar OrderedSet = Immutable.OrderedSet;\n/**\n * `DraftModifier` provides a set of convenience methods that apply\n * modifications to a `ContentState` object based on a target `SelectionState`.\n *\n * Any change to a `ContentState` should be decomposable into a series of\n * transaction functions that apply the required changes and return output\n * `ContentState` objects.\n *\n * These functions encapsulate some of the most common transaction sequences.\n */\n\nvar DraftModifier = {\n replaceText: function replaceText(contentState, rangeToReplace, text, inlineStyle, entityKey) {\n var withoutEntities = removeEntitiesAtEdges(contentState, rangeToReplace);\n var withoutText = removeRangeFromContentState(withoutEntities, rangeToReplace);\n var character = CharacterMetadata.create({\n style: inlineStyle || OrderedSet(),\n entity: entityKey || null\n });\n return insertTextIntoContentState(withoutText, withoutText.getSelectionAfter(), text, character);\n },\n insertText: function insertText(contentState, targetRange, text, inlineStyle, entityKey) {\n !targetRange.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Target range must be collapsed for `insertText`.') : invariant(false) : void 0;\n return DraftModifier.replaceText(contentState, targetRange, text, inlineStyle, entityKey);\n },\n moveText: function moveText(contentState, removalRange, targetRange) {\n var movedFragment = getContentStateFragment(contentState, removalRange);\n var afterRemoval = DraftModifier.removeRange(contentState, removalRange, 'backward');\n return DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n },\n replaceWithFragment: function replaceWithFragment(contentState, targetRange, fragment) {\n var mergeBlockData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'REPLACE_WITH_NEW_DATA';\n var withoutEntities = removeEntitiesAtEdges(contentState, targetRange);\n var withoutText = removeRangeFromContentState(withoutEntities, targetRange);\n return insertFragmentIntoContentState(withoutText, withoutText.getSelectionAfter(), fragment, mergeBlockData);\n },\n removeRange: function removeRange(contentState, rangeToRemove, removalDirection) {\n var startKey, endKey, startBlock, endBlock;\n\n if (rangeToRemove.getIsBackward()) {\n rangeToRemove = rangeToRemove.merge({\n anchorKey: rangeToRemove.getFocusKey(),\n anchorOffset: rangeToRemove.getFocusOffset(),\n focusKey: rangeToRemove.getAnchorKey(),\n focusOffset: rangeToRemove.getAnchorOffset(),\n isBackward: false\n });\n }\n\n startKey = rangeToRemove.getAnchorKey();\n endKey = rangeToRemove.getFocusKey();\n startBlock = contentState.getBlockForKey(startKey);\n endBlock = contentState.getBlockForKey(endKey);\n var startOffset = rangeToRemove.getStartOffset();\n var endOffset = rangeToRemove.getEndOffset();\n var startEntityKey = startBlock.getEntityAt(startOffset);\n var endEntityKey = endBlock.getEntityAt(endOffset - 1); // Check whether the selection state overlaps with a single entity.\n // If so, try to remove the appropriate substring of the entity text.\n\n if (startKey === endKey) {\n if (startEntityKey && startEntityKey === endEntityKey) {\n var adjustedRemovalRange = getCharacterRemovalRange(contentState.getEntityMap(), startBlock, endBlock, rangeToRemove, removalDirection);\n return removeRangeFromContentState(contentState, adjustedRemovalRange);\n }\n }\n\n var withoutEntities = removeEntitiesAtEdges(contentState, rangeToRemove);\n return removeRangeFromContentState(withoutEntities, rangeToRemove);\n },\n splitBlock: function splitBlock(contentState, selectionState) {\n var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n var withoutText = removeRangeFromContentState(withoutEntities, selectionState);\n return splitBlockInContentState(withoutText, withoutText.getSelectionAfter());\n },\n applyInlineStyle: function applyInlineStyle(contentState, selectionState, inlineStyle) {\n return ContentStateInlineStyle.add(contentState, selectionState, inlineStyle);\n },\n removeInlineStyle: function removeInlineStyle(contentState, selectionState, inlineStyle) {\n return ContentStateInlineStyle.remove(contentState, selectionState, inlineStyle);\n },\n setBlockType: function setBlockType(contentState, selectionState, blockType) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n type: blockType,\n depth: 0\n });\n });\n },\n setBlockData: function setBlockData(contentState, selectionState, blockData) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n data: blockData\n });\n });\n },\n mergeBlockData: function mergeBlockData(contentState, selectionState, blockData) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n data: block.getData().merge(blockData)\n });\n });\n },\n applyEntity: function applyEntity(contentState, selectionState, entityKey) {\n var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n return applyEntityToContentState(withoutEntities, selectionState, entityKey);\n }\n};\nmodule.exports = DraftModifier;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KEY_DELIMITER = '-';\nvar DraftOffsetKey = {\n encode: function encode(blockKey, decoratorKey, leafKey) {\n return blockKey + KEY_DELIMITER + decoratorKey + KEY_DELIMITER + leafKey;\n },\n decode: function decode(offsetKey) {\n // Extracts the last two parts of offsetKey and captures the rest in blockKeyParts\n var _offsetKey$split$reve = offsetKey.split(KEY_DELIMITER).reverse(),\n leafKey = _offsetKey$split$reve[0],\n decoratorKey = _offsetKey$split$reve[1],\n blockKeyParts = _offsetKey$split$reve.slice(2);\n\n return {\n // Recomposes the parts of blockKey after reversing them\n blockKey: blockKeyParts.reverse().join(KEY_DELIMITER),\n decoratorKey: parseInt(decoratorKey, 10),\n leafKey: parseInt(leafKey, 10)\n };\n }\n};\nmodule.exports = DraftOffsetKey;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar convertFromHTMLToContentBlocks = require(\"./convertFromHTMLToContentBlocks\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getSafeBodyFromHTML = require(\"./getSafeBodyFromHTML\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar sanitizeDraftText = require(\"./sanitizeDraftText\");\n\nvar List = Immutable.List,\n Repeat = Immutable.Repeat;\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\nvar DraftPasteProcessor = {\n processHTML: function processHTML(html, blockRenderMap) {\n return convertFromHTMLToContentBlocks(html, getSafeBodyFromHTML, blockRenderMap);\n },\n processText: function processText(textBlocks, character, type) {\n return textBlocks.reduce(function (acc, textLine, index) {\n textLine = sanitizeDraftText(textLine);\n var key = generateRandomKey();\n var blockNodeConfig = {\n key: key,\n type: type,\n text: textLine,\n characterList: List(Repeat(character, textLine.length))\n }; // next block updates previous block\n\n if (experimentalTreeDataSupport && index !== 0) {\n var prevSiblingIndex = index - 1; // update previous block\n\n var previousBlock = acc[prevSiblingIndex] = acc[prevSiblingIndex].merge({\n nextSibling: key\n });\n blockNodeConfig = _objectSpread({}, blockNodeConfig, {\n prevSibling: previousBlock.getKey()\n });\n }\n\n acc.push(new ContentBlockRecord(blockNodeConfig));\n return acc;\n }, []);\n }\n};\nmodule.exports = DraftPasteProcessor;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar TokenizeUtil = require(\"fbjs/lib/TokenizeUtil\");\n\nvar punctuation = TokenizeUtil.getPunctuation(); // The apostrophe and curly single quotes behave in a curious way: when\n// surrounded on both sides by word characters, they behave as word chars; when\n// either neighbor is punctuation or an end of the string, they behave as\n// punctuation.\n\nvar CHAMELEON_CHARS = \"['\\u2018\\u2019]\"; // Remove the underscore, which should count as part of the removable word. The\n// \"chameleon chars\" also count as punctuation in this regex.\n\nvar WHITESPACE_AND_PUNCTUATION = '\\\\s|(?![_])' + punctuation;\nvar DELETE_STRING = '^' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)';\nvar DELETE_REGEX = new RegExp(DELETE_STRING);\nvar BACKSPACE_STRING = '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '$';\nvar BACKSPACE_REGEX = new RegExp(BACKSPACE_STRING);\n\nfunction getRemovableWord(text, isBackward) {\n var matches = isBackward ? BACKSPACE_REGEX.exec(text) : DELETE_REGEX.exec(text);\n return matches ? matches[0] : text;\n}\n\nvar DraftRemovableWord = {\n getBackward: function getBackward(text) {\n return getRemovableWord(text, true);\n },\n getForward: function getForward(text) {\n return getRemovableWord(text, false);\n }\n};\nmodule.exports = DraftRemovableWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftStringKey = {\n stringify: function stringify(key) {\n return '_' + String(key);\n },\n unstringify: function unstringify(key) {\n return key.slice(1);\n }\n};\nmodule.exports = DraftStringKey;","\"use strict\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar traverseInDepthOrder = function traverseInDepthOrder(blocks, fn) {\n var stack = [].concat(blocks).reverse();\n\n while (stack.length) {\n var _block = stack.pop();\n\n fn(_block);\n var children = _block.children;\n !Array.isArray(children) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid tree raw block') : invariant(false) : void 0;\n stack = stack.concat([].concat(children.reverse()));\n }\n};\n\nvar isListBlock = function isListBlock(block) {\n if (!(block && block.type)) {\n return false;\n }\n\n var type = block.type;\n return type === 'unordered-list-item' || type === 'ordered-list-item';\n};\n\nvar addDepthToChildren = function addDepthToChildren(block) {\n if (Array.isArray(block.children)) {\n block.children = block.children.map(function (child) {\n return child.type === block.type ? _objectSpread({}, child, {\n depth: (block.depth || 0) + 1\n }) : child;\n });\n }\n};\n/**\n * This adapter is intended to be be used as an adapter to draft tree data\n *\n * draft state <=====> draft tree state\n */\n\n\nvar DraftTreeAdapter = {\n /**\n * Converts from a tree raw state back to draft raw state\n */\n fromRawTreeStateToRawState: function fromRawTreeStateToRawState(draftTreeState) {\n var blocks = draftTreeState.blocks;\n var transformedBlocks = [];\n !Array.isArray(blocks) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid raw state') : invariant(false) : void 0;\n\n if (!Array.isArray(blocks) || !blocks.length) {\n return draftTreeState;\n }\n\n traverseInDepthOrder(blocks, function (block) {\n var newBlock = _objectSpread({}, block);\n\n if (isListBlock(block)) {\n newBlock.depth = newBlock.depth || 0;\n addDepthToChildren(block); // if it's a non-leaf node, we don't do anything else\n\n if (block.children != null && block.children.length > 0) {\n return;\n }\n }\n\n delete newBlock.children;\n transformedBlocks.push(newBlock);\n });\n draftTreeState.blocks = transformedBlocks;\n return _objectSpread({}, draftTreeState, {\n blocks: transformedBlocks\n });\n },\n\n /**\n * Converts from draft raw state to tree draft state\n */\n fromRawStateToRawTreeState: function fromRawStateToRawTreeState(draftState) {\n var transformedBlocks = [];\n var parentStack = [];\n draftState.blocks.forEach(function (block) {\n var isList = isListBlock(block);\n var depth = block.depth || 0;\n\n var treeBlock = _objectSpread({}, block, {\n children: []\n });\n\n if (!isList) {\n transformedBlocks.push(treeBlock);\n return;\n }\n\n var lastParent = parentStack[0]; // block is non-nested & there are no nested blocks, directly push block\n\n if (lastParent == null && depth === 0) {\n transformedBlocks.push(treeBlock); // block is first nested block or previous nested block is at a lower level\n } else if (lastParent == null || lastParent.depth < depth - 1) {\n // create new parent block\n var newParent = {\n key: generateRandomKey(),\n text: '',\n depth: depth - 1,\n type: block.type,\n children: [],\n entityRanges: [],\n inlineStyleRanges: []\n };\n parentStack.unshift(newParent);\n\n if (depth === 1) {\n // add as a root-level block\n transformedBlocks.push(newParent);\n } else if (lastParent != null) {\n // depth > 1 => also add as previous parent's child\n lastParent.children.push(newParent);\n }\n\n newParent.children.push(treeBlock);\n } else if (lastParent.depth === depth - 1) {\n // add as child of last parent\n lastParent.children.push(treeBlock);\n } else {\n // pop out parents at levels above this one from the parent stack\n while (lastParent != null && lastParent.depth >= depth) {\n parentStack.shift();\n lastParent = parentStack[0];\n }\n\n if (depth > 0) {\n lastParent.children.push(treeBlock);\n } else {\n transformedBlocks.push(treeBlock);\n }\n }\n });\n return _objectSpread({}, draftState, {\n blocks: transformedBlocks\n });\n }\n};\nmodule.exports = DraftTreeAdapter;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar warning = require(\"fbjs/lib/warning\");\n\nvar DraftTreeInvariants = {\n /**\n * Check if the block is valid\n */\n isValidBlock: function isValidBlock(block, blockMap) {\n var key = block.getKey(); // is its parent's child\n\n var parentKey = block.getParentKey();\n\n if (parentKey != null) {\n var parent = blockMap.get(parentKey);\n\n if (!parent.getChildKeys().includes(key)) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is missing parent -> child pointer on %s', key) : void 0;\n return false;\n }\n } // is its children's parent\n\n\n var children = block.getChildKeys().map(function (k) {\n return blockMap.get(k);\n });\n\n if (!children.every(function (c) {\n return c.getParentKey() === key;\n })) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is missing child -> parent pointer on %s', key) : void 0;\n return false;\n } // is its previous sibling's next sibling\n\n\n var prevSiblingKey = block.getPrevSiblingKey();\n\n if (prevSiblingKey != null) {\n var prevSibling = blockMap.get(prevSiblingKey);\n\n if (prevSibling.getNextSiblingKey() !== key) {\n process.env.NODE_ENV !== \"production\" ? warning(true, \"Tree is missing nextSibling pointer on %s's prevSibling\", key) : void 0;\n return false;\n }\n } // is its next sibling's previous sibling\n\n\n var nextSiblingKey = block.getNextSiblingKey();\n\n if (nextSiblingKey != null) {\n var nextSibling = blockMap.get(nextSiblingKey);\n\n if (nextSibling.getPrevSiblingKey() !== key) {\n process.env.NODE_ENV !== \"production\" ? warning(true, \"Tree is missing prevSibling pointer on %s's nextSibling\", key) : void 0;\n return false;\n }\n } // no 2-node cycles\n\n\n if (nextSiblingKey !== null && prevSiblingKey !== null) {\n if (prevSiblingKey === nextSiblingKey) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree has a two-node cycle at %s', key) : void 0;\n return false;\n }\n } // if it's a leaf node, it has text but no children\n\n\n if (block.text != '') {\n if (block.getChildKeys().size > 0) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Leaf node %s has children', key) : void 0;\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * Checks that this is a connected tree on all the blocks\n * starting from the first block, traversing nextSibling and child pointers\n * should be a tree (preorder traversal - parent, then children)\n * num of connected node === number of blocks\n */\n isConnectedTree: function isConnectedTree(blockMap) {\n // exactly one node has no previous sibling + no parent\n var eligibleFirstNodes = blockMap.toArray().filter(function (block) {\n return block.getParentKey() == null && block.getPrevSiblingKey() == null;\n });\n\n if (eligibleFirstNodes.length !== 1) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is not connected. More or less than one first node') : void 0;\n return false;\n }\n\n var firstNode = eligibleFirstNodes.shift();\n var nodesSeen = 0;\n var currentKey = firstNode.getKey();\n var visitedStack = [];\n\n while (currentKey != null) {\n var currentNode = blockMap.get(currentKey);\n var childKeys = currentNode.getChildKeys();\n var nextSiblingKey = currentNode.getNextSiblingKey(); // if the node has children, add parent's next sibling to stack and go to children\n\n if (childKeys.size > 0) {\n if (nextSiblingKey != null) {\n visitedStack.unshift(nextSiblingKey);\n }\n\n var children = childKeys.map(function (k) {\n return blockMap.get(k);\n });\n\n var _firstNode = children.find(function (block) {\n return block.getPrevSiblingKey() == null;\n });\n\n if (_firstNode == null) {\n process.env.NODE_ENV !== \"production\" ? warning(true, '%s has no first child', currentKey) : void 0;\n return false;\n }\n\n currentKey = _firstNode.getKey(); // TODO(T32490138): Deal with multi-node cycles here\n } else {\n if (currentNode.getNextSiblingKey() != null) {\n currentKey = currentNode.getNextSiblingKey();\n } else {\n currentKey = visitedStack.shift();\n }\n }\n\n nodesSeen++;\n }\n\n if (nodesSeen !== blockMap.size) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is not connected. %s nodes were seen instead of %s', nodesSeen, blockMap.size) : void 0;\n return false;\n }\n\n return true;\n },\n\n /**\n * Checks that the block map is a connected tree with valid blocks\n */\n isValidTree: function isValidTree(blockMap) {\n var _this = this;\n\n var blocks = blockMap.toArray();\n\n if (!blocks.every(function (block) {\n return _this.isValidBlock(block, blockMap);\n })) {\n return false;\n }\n\n return this.isConnectedTree(blockMap);\n }\n};\nmodule.exports = DraftTreeInvariants;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeBidiService = require(\"fbjs/lib/UnicodeBidiService\");\n\nvar Immutable = require(\"immutable\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar OrderedMap = Immutable.OrderedMap;\nvar bidiService;\nvar EditorBidiService = {\n getDirectionMap: function getDirectionMap(content, prevBidiMap) {\n if (!bidiService) {\n bidiService = new UnicodeBidiService();\n } else {\n bidiService.reset();\n }\n\n var blockMap = content.getBlockMap();\n var nextBidi = blockMap.valueSeq().map(function (block) {\n return nullthrows(bidiService).getDirection(block.getText());\n });\n var bidiMap = OrderedMap(blockMap.keySeq().zip(nextBidi));\n\n if (prevBidiMap != null && Immutable.is(prevBidiMap, bidiMap)) {\n return prevBidiMap;\n }\n\n return bidiMap;\n }\n};\nmodule.exports = EditorBidiService;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar BlockTree = require(\"./BlockTree\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar EditorBidiService = require(\"./EditorBidiService\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Stack = Immutable.Stack,\n OrderedMap = Immutable.OrderedMap,\n List = Immutable.List; // When configuring an editor, the user can chose to provide or not provide\n// basically all keys. `currentContent` varies, so this type doesn't include it.\n// (See the types defined below.)\n\nvar defaultRecord = {\n allowUndo: true,\n currentContent: null,\n decorator: null,\n directionMap: null,\n forceSelection: false,\n inCompositionMode: false,\n inlineStyleOverride: null,\n lastChangeType: null,\n nativelyRenderedContent: null,\n redoStack: Stack(),\n selection: null,\n treeMap: null,\n undoStack: Stack()\n};\nvar EditorStateRecord = Record(defaultRecord);\n\nvar EditorState = /*#__PURE__*/function () {\n EditorState.createEmpty = function createEmpty(decorator) {\n return this.createWithText('', decorator);\n };\n\n EditorState.createWithText = function createWithText(text, decorator) {\n return EditorState.createWithContent(ContentState.createFromText(text), decorator);\n };\n\n EditorState.createWithContent = function createWithContent(contentState, decorator) {\n if (contentState.getBlockMap().count() === 0) {\n return EditorState.createEmpty(decorator);\n }\n\n var firstKey = contentState.getBlockMap().first().getKey();\n return EditorState.create({\n currentContent: contentState,\n undoStack: Stack(),\n redoStack: Stack(),\n decorator: decorator || null,\n selection: SelectionState.createEmpty(firstKey)\n });\n };\n\n EditorState.create = function create(config) {\n var currentContent = config.currentContent,\n decorator = config.decorator;\n\n var recordConfig = _objectSpread({}, config, {\n treeMap: generateNewTreeMap(currentContent, decorator),\n directionMap: EditorBidiService.getDirectionMap(currentContent)\n });\n\n return new EditorState(new EditorStateRecord(recordConfig));\n };\n\n EditorState.fromJS = function fromJS(config) {\n return new EditorState(new EditorStateRecord(_objectSpread({}, config, {\n directionMap: config.directionMap != null ? OrderedMap(config.directionMap) : config.directionMap,\n inlineStyleOverride: config.inlineStyleOverride != null ? OrderedSet(config.inlineStyleOverride) : config.inlineStyleOverride,\n nativelyRenderedContent: config.nativelyRenderedContent != null ? ContentState.fromJS(config.nativelyRenderedContent) : config.nativelyRenderedContent,\n redoStack: config.redoStack != null ? Stack(config.redoStack.map(function (v) {\n return ContentState.fromJS(v);\n })) : config.redoStack,\n selection: config.selection != null ? new SelectionState(config.selection) : config.selection,\n treeMap: config.treeMap != null ? OrderedMap(config.treeMap).map(function (v) {\n return List(v).map(function (v) {\n return BlockTree.fromJS(v);\n });\n }) : config.treeMap,\n undoStack: config.undoStack != null ? Stack(config.undoStack.map(function (v) {\n return ContentState.fromJS(v);\n })) : config.undoStack,\n currentContent: ContentState.fromJS(config.currentContent)\n })));\n };\n\n EditorState.set = function set(editorState, put) {\n var map = editorState.getImmutable().withMutations(function (state) {\n var existingDecorator = state.get('decorator');\n var decorator = existingDecorator;\n\n if (put.decorator === null) {\n decorator = null;\n } else if (put.decorator) {\n decorator = put.decorator;\n }\n\n var newContent = put.currentContent || editorState.getCurrentContent();\n\n if (decorator !== existingDecorator) {\n var treeMap = state.get('treeMap');\n var newTreeMap;\n\n if (decorator && existingDecorator) {\n newTreeMap = regenerateTreeForNewDecorator(newContent, newContent.getBlockMap(), treeMap, decorator, existingDecorator);\n } else {\n newTreeMap = generateNewTreeMap(newContent, decorator);\n }\n\n state.merge({\n decorator: decorator,\n treeMap: newTreeMap,\n nativelyRenderedContent: null\n });\n return;\n }\n\n var existingContent = editorState.getCurrentContent();\n\n if (newContent !== existingContent) {\n state.set('treeMap', regenerateTreeForNewBlocks(editorState, newContent.getBlockMap(), newContent.getEntityMap(), decorator));\n }\n\n state.merge(put);\n });\n return new EditorState(map);\n };\n\n var _proto = EditorState.prototype;\n\n _proto.toJS = function toJS() {\n return this.getImmutable().toJS();\n };\n\n _proto.getAllowUndo = function getAllowUndo() {\n return this.getImmutable().get('allowUndo');\n };\n\n _proto.getCurrentContent = function getCurrentContent() {\n return this.getImmutable().get('currentContent');\n };\n\n _proto.getUndoStack = function getUndoStack() {\n return this.getImmutable().get('undoStack');\n };\n\n _proto.getRedoStack = function getRedoStack() {\n return this.getImmutable().get('redoStack');\n };\n\n _proto.getSelection = function getSelection() {\n return this.getImmutable().get('selection');\n };\n\n _proto.getDecorator = function getDecorator() {\n return this.getImmutable().get('decorator');\n };\n\n _proto.isInCompositionMode = function isInCompositionMode() {\n return this.getImmutable().get('inCompositionMode');\n };\n\n _proto.mustForceSelection = function mustForceSelection() {\n return this.getImmutable().get('forceSelection');\n };\n\n _proto.getNativelyRenderedContent = function getNativelyRenderedContent() {\n return this.getImmutable().get('nativelyRenderedContent');\n };\n\n _proto.getLastChangeType = function getLastChangeType() {\n return this.getImmutable().get('lastChangeType');\n }\n /**\n * While editing, the user may apply inline style commands with a collapsed\n * cursor, intending to type text that adopts the specified style. In this\n * case, we track the specified style as an \"override\" that takes precedence\n * over the inline style of the text adjacent to the cursor.\n *\n * If null, there is no override in place.\n */\n ;\n\n _proto.getInlineStyleOverride = function getInlineStyleOverride() {\n return this.getImmutable().get('inlineStyleOverride');\n };\n\n EditorState.setInlineStyleOverride = function setInlineStyleOverride(editorState, inlineStyleOverride) {\n return EditorState.set(editorState, {\n inlineStyleOverride: inlineStyleOverride\n });\n }\n /**\n * Get the appropriate inline style for the editor state. If an\n * override is in place, use it. Otherwise, the current style is\n * based on the location of the selection state.\n */\n ;\n\n _proto.getCurrentInlineStyle = function getCurrentInlineStyle() {\n var override = this.getInlineStyleOverride();\n\n if (override != null) {\n return override;\n }\n\n var content = this.getCurrentContent();\n var selection = this.getSelection();\n\n if (selection.isCollapsed()) {\n return getInlineStyleForCollapsedSelection(content, selection);\n }\n\n return getInlineStyleForNonCollapsedSelection(content, selection);\n };\n\n _proto.getBlockTree = function getBlockTree(blockKey) {\n return this.getImmutable().getIn(['treeMap', blockKey]);\n };\n\n _proto.isSelectionAtStartOfContent = function isSelectionAtStartOfContent() {\n var firstKey = this.getCurrentContent().getBlockMap().first().getKey();\n return this.getSelection().hasEdgeWithin(firstKey, 0, 0);\n };\n\n _proto.isSelectionAtEndOfContent = function isSelectionAtEndOfContent() {\n var content = this.getCurrentContent();\n var blockMap = content.getBlockMap();\n var last = blockMap.last();\n var end = last.getLength();\n return this.getSelection().hasEdgeWithin(last.getKey(), end, end);\n };\n\n _proto.getDirectionMap = function getDirectionMap() {\n return this.getImmutable().get('directionMap');\n }\n /**\n * Incorporate native DOM selection changes into the EditorState. This\n * method can be used when we simply want to accept whatever the DOM\n * has given us to represent selection, and we do not need to re-render\n * the editor.\n *\n * To forcibly move the DOM selection, see `EditorState.forceSelection`.\n */\n ;\n\n EditorState.acceptSelection = function acceptSelection(editorState, selection) {\n return updateSelection(editorState, selection, false);\n }\n /**\n * At times, we need to force the DOM selection to be where we\n * need it to be. This can occur when the anchor or focus nodes\n * are non-text nodes, for instance. In this case, we want to trigger\n * a re-render of the editor, which in turn forces selection into\n * the correct place in the DOM. The `forceSelection` method\n * accomplishes this.\n *\n * This method should be used in cases where you need to explicitly\n * move the DOM selection from one place to another without a change\n * in ContentState.\n */\n ;\n\n EditorState.forceSelection = function forceSelection(editorState, selection) {\n if (!selection.getHasFocus()) {\n selection = selection.set('hasFocus', true);\n }\n\n return updateSelection(editorState, selection, true);\n }\n /**\n * Move selection to the end of the editor without forcing focus.\n */\n ;\n\n EditorState.moveSelectionToEnd = function moveSelectionToEnd(editorState) {\n var content = editorState.getCurrentContent();\n var lastBlock = content.getLastBlock();\n var lastKey = lastBlock.getKey();\n var length = lastBlock.getLength();\n return EditorState.acceptSelection(editorState, new SelectionState({\n anchorKey: lastKey,\n anchorOffset: length,\n focusKey: lastKey,\n focusOffset: length,\n isBackward: false\n }));\n }\n /**\n * Force focus to the end of the editor. This is useful in scenarios\n * where we want to programmatically focus the input and it makes sense\n * to allow the user to continue working seamlessly.\n */\n ;\n\n EditorState.moveFocusToEnd = function moveFocusToEnd(editorState) {\n var afterSelectionMove = EditorState.moveSelectionToEnd(editorState);\n return EditorState.forceSelection(afterSelectionMove, afterSelectionMove.getSelection());\n }\n /**\n * Push the current ContentState onto the undo stack if it should be\n * considered a boundary state, and set the provided ContentState as the\n * new current content.\n */\n ;\n\n EditorState.push = function push(editorState, contentState, changeType) {\n var forceSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (editorState.getCurrentContent() === contentState) {\n return editorState;\n }\n\n var directionMap = EditorBidiService.getDirectionMap(contentState, editorState.getDirectionMap());\n\n if (!editorState.getAllowUndo()) {\n return EditorState.set(editorState, {\n currentContent: contentState,\n directionMap: directionMap,\n lastChangeType: changeType,\n selection: contentState.getSelectionAfter(),\n forceSelection: forceSelection,\n inlineStyleOverride: null\n });\n }\n\n var selection = editorState.getSelection();\n var currentContent = editorState.getCurrentContent();\n var undoStack = editorState.getUndoStack();\n var newContent = contentState;\n\n if (selection !== currentContent.getSelectionAfter() || mustBecomeBoundary(editorState, changeType)) {\n undoStack = undoStack.push(currentContent);\n newContent = newContent.set('selectionBefore', selection);\n } else if (changeType === 'insert-characters' || changeType === 'backspace-character' || changeType === 'delete-character') {\n // Preserve the previous selection.\n newContent = newContent.set('selectionBefore', currentContent.getSelectionBefore());\n }\n\n var inlineStyleOverride = editorState.getInlineStyleOverride(); // Don't discard inline style overrides for the following change types:\n\n var overrideChangeTypes = ['adjust-depth', 'change-block-type', 'split-block'];\n\n if (overrideChangeTypes.indexOf(changeType) === -1) {\n inlineStyleOverride = null;\n }\n\n var editorStateChanges = {\n currentContent: newContent,\n directionMap: directionMap,\n undoStack: undoStack,\n redoStack: Stack(),\n lastChangeType: changeType,\n selection: contentState.getSelectionAfter(),\n forceSelection: forceSelection,\n inlineStyleOverride: inlineStyleOverride\n };\n return EditorState.set(editorState, editorStateChanges);\n }\n /**\n * Make the top ContentState in the undo stack the new current content and\n * push the current content onto the redo stack.\n */\n ;\n\n EditorState.undo = function undo(editorState) {\n if (!editorState.getAllowUndo()) {\n return editorState;\n }\n\n var undoStack = editorState.getUndoStack();\n var newCurrentContent = undoStack.peek();\n\n if (!newCurrentContent) {\n return editorState;\n }\n\n var currentContent = editorState.getCurrentContent();\n var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n return EditorState.set(editorState, {\n currentContent: newCurrentContent,\n directionMap: directionMap,\n undoStack: undoStack.shift(),\n redoStack: editorState.getRedoStack().push(currentContent),\n forceSelection: true,\n inlineStyleOverride: null,\n lastChangeType: 'undo',\n nativelyRenderedContent: null,\n selection: currentContent.getSelectionBefore()\n });\n }\n /**\n * Make the top ContentState in the redo stack the new current content and\n * push the current content onto the undo stack.\n */\n ;\n\n EditorState.redo = function redo(editorState) {\n if (!editorState.getAllowUndo()) {\n return editorState;\n }\n\n var redoStack = editorState.getRedoStack();\n var newCurrentContent = redoStack.peek();\n\n if (!newCurrentContent) {\n return editorState;\n }\n\n var currentContent = editorState.getCurrentContent();\n var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n return EditorState.set(editorState, {\n currentContent: newCurrentContent,\n directionMap: directionMap,\n undoStack: editorState.getUndoStack().push(currentContent),\n redoStack: redoStack.shift(),\n forceSelection: true,\n inlineStyleOverride: null,\n lastChangeType: 'redo',\n nativelyRenderedContent: null,\n selection: newCurrentContent.getSelectionAfter()\n });\n }\n /**\n * Not for public consumption.\n */\n ;\n\n function EditorState(immutable) {\n _defineProperty(this, \"_immutable\", void 0);\n\n this._immutable = immutable;\n }\n /**\n * Not for public consumption.\n */\n\n\n _proto.getImmutable = function getImmutable() {\n return this._immutable;\n };\n\n return EditorState;\n}();\n/**\n * Set the supplied SelectionState as the new current selection, and set\n * the `force` flag to trigger manual selection placement by the view.\n */\n\n\nfunction updateSelection(editorState, selection, forceSelection) {\n return EditorState.set(editorState, {\n selection: selection,\n forceSelection: forceSelection,\n nativelyRenderedContent: null,\n inlineStyleOverride: null\n });\n}\n/**\n * Regenerate the entire tree map for a given ContentState and decorator.\n * Returns an OrderedMap that maps all available ContentBlock objects.\n */\n\n\nfunction generateNewTreeMap(contentState, decorator) {\n return contentState.getBlockMap().map(function (block) {\n return BlockTree.generate(contentState, block, decorator);\n }).toOrderedMap();\n}\n/**\n * Regenerate tree map objects for all ContentBlocks that have changed\n * between the current editorState and newContent. Returns an OrderedMap\n * with only changed regenerated tree map objects.\n */\n\n\nfunction regenerateTreeForNewBlocks(editorState, newBlockMap, newEntityMap, decorator) {\n var contentState = editorState.getCurrentContent().set('entityMap', newEntityMap);\n var prevBlockMap = contentState.getBlockMap();\n var prevTreeMap = editorState.getImmutable().get('treeMap');\n return prevTreeMap.merge(newBlockMap.toSeq().filter(function (block, key) {\n return block !== prevBlockMap.get(key);\n }).map(function (block) {\n return BlockTree.generate(contentState, block, decorator);\n }));\n}\n/**\n * Generate tree map objects for a new decorator object, preserving any\n * decorations that are unchanged from the previous decorator.\n *\n * Note that in order for this to perform optimally, decoration Lists for\n * decorators should be preserved when possible to allow for direct immutable\n * List comparison.\n */\n\n\nfunction regenerateTreeForNewDecorator(content, blockMap, previousTreeMap, decorator, existingDecorator) {\n return previousTreeMap.merge(blockMap.toSeq().filter(function (block) {\n return decorator.getDecorations(block, content) !== existingDecorator.getDecorations(block, content);\n }).map(function (block) {\n return BlockTree.generate(content, block, decorator);\n }));\n}\n/**\n * Return whether a change should be considered a boundary state, given\n * the previous change type. Allows us to discard potential boundary states\n * during standard typing or deletion behavior.\n */\n\n\nfunction mustBecomeBoundary(editorState, changeType) {\n var lastChangeType = editorState.getLastChangeType();\n return changeType !== lastChangeType || changeType !== 'insert-characters' && changeType !== 'backspace-character' && changeType !== 'delete-character';\n}\n\nfunction getInlineStyleForCollapsedSelection(content, selection) {\n var startKey = selection.getStartKey();\n var startOffset = selection.getStartOffset();\n var startBlock = content.getBlockForKey(startKey); // If the cursor is not at the start of the block, look backward to\n // preserve the style of the preceding character.\n\n if (startOffset > 0) {\n return startBlock.getInlineStyleAt(startOffset - 1);\n } // The caret is at position zero in this block. If the block has any\n // text at all, use the style of the first character.\n\n\n if (startBlock.getLength()) {\n return startBlock.getInlineStyleAt(0);\n } // Otherwise, look upward in the document to find the closest character.\n\n\n return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction getInlineStyleForNonCollapsedSelection(content, selection) {\n var startKey = selection.getStartKey();\n var startOffset = selection.getStartOffset();\n var startBlock = content.getBlockForKey(startKey); // If there is a character just inside the selection, use its style.\n\n if (startOffset < startBlock.getLength()) {\n return startBlock.getInlineStyleAt(startOffset);\n } // Check if the selection at the end of a non-empty block. Use the last\n // style in the block.\n\n\n if (startOffset > 0) {\n return startBlock.getInlineStyleAt(startOffset - 1);\n } // Otherwise, look upward in the document to find the closest character.\n\n\n return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction lookUpwardForInlineStyle(content, fromKey) {\n var lastNonEmpty = content.getBlockMap().reverse().skipUntil(function (_, k) {\n return k === fromKey;\n }).skip(1).skipUntil(function (block, _) {\n return block.getLength();\n }).first();\n\n if (lastNonEmpty) {\n return lastNonEmpty.getInlineStyleAt(lastNonEmpty.getLength() - 1);\n }\n\n return OrderedSet();\n}\n\nmodule.exports = EditorState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isSoftNewlineEvent = require(\"./isSoftNewlineEvent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X');\nvar KeyBindingUtil = {\n /**\n * Check whether the ctrlKey modifier is *not* being used in conjunction with\n * the altKey modifier. If they are combined, the result is an `altGraph`\n * key modifier, which should not be handled by this set of key bindings.\n */\n isCtrlKeyCommand: function isCtrlKeyCommand(e) {\n return !!e.ctrlKey && !e.altKey;\n },\n isOptionKeyCommand: function isOptionKeyCommand(e) {\n return isOSX && e.altKey;\n },\n usesMacOSHeuristics: function usesMacOSHeuristics() {\n return isOSX;\n },\n hasCommandModifier: function hasCommandModifier(e) {\n return isOSX ? !!e.metaKey && !e.altKey : KeyBindingUtil.isCtrlKeyCommand(e);\n },\n isSoftNewlineEvent: isSoftNewlineEvent\n};\nmodule.exports = KeyBindingUtil;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar adjustBlockDepthForContentState = require(\"./adjustBlockDepthForContentState\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar RichTextEditorUtil = {\n currentBlockContainsLink: function currentBlockContainsLink(editorState) {\n var selection = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n var entityMap = contentState.getEntityMap();\n return contentState.getBlockForKey(selection.getAnchorKey()).getCharacterList().slice(selection.getStartOffset(), selection.getEndOffset()).some(function (v) {\n var entity = v.getEntity();\n return !!entity && entityMap.__get(entity).getType() === 'LINK';\n });\n },\n getCurrentBlockType: function getCurrentBlockType(editorState) {\n var selection = editorState.getSelection();\n return editorState.getCurrentContent().getBlockForKey(selection.getStartKey()).getType();\n },\n getDataObjectForLinkURL: function getDataObjectForLinkURL(uri) {\n return {\n url: uri.toString()\n };\n },\n handleKeyCommand: function handleKeyCommand(editorState, command, eventTimeStamp) {\n switch (command) {\n case 'bold':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'BOLD');\n\n case 'italic':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'ITALIC');\n\n case 'underline':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'UNDERLINE');\n\n case 'code':\n return RichTextEditorUtil.toggleCode(editorState);\n\n case 'backspace':\n case 'backspace-word':\n case 'backspace-to-start-of-line':\n return RichTextEditorUtil.onBackspace(editorState);\n\n case 'delete':\n case 'delete-word':\n case 'delete-to-end-of-block':\n return RichTextEditorUtil.onDelete(editorState);\n\n default:\n // they may have custom editor commands; ignore those\n return null;\n }\n },\n insertSoftNewline: function insertSoftNewline(editorState) {\n var contentState = DraftModifier.insertText(editorState.getCurrentContent(), editorState.getSelection(), '\\n', editorState.getCurrentInlineStyle(), null);\n var newEditorState = EditorState.push(editorState, contentState, 'insert-characters');\n return EditorState.forceSelection(newEditorState, contentState.getSelectionAfter());\n },\n\n /**\n * For collapsed selections at the start of styled blocks, backspace should\n * just remove the existing style.\n */\n onBackspace: function onBackspace(editorState) {\n var selection = editorState.getSelection();\n\n if (!selection.isCollapsed() || selection.getAnchorOffset() || selection.getFocusOffset()) {\n return null;\n } // First, try to remove a preceding atomic block.\n\n\n var content = editorState.getCurrentContent();\n var startKey = selection.getStartKey();\n var blockBefore = content.getBlockBefore(startKey);\n\n if (blockBefore && blockBefore.getType() === 'atomic') {\n var blockMap = content.getBlockMap()[\"delete\"](blockBefore.getKey());\n var withoutAtomicBlock = content.merge({\n blockMap: blockMap,\n selectionAfter: selection\n });\n\n if (withoutAtomicBlock !== content) {\n return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n }\n } // If that doesn't succeed, try to remove the current block style.\n\n\n var withoutBlockStyle = RichTextEditorUtil.tryToRemoveBlockStyle(editorState);\n\n if (withoutBlockStyle) {\n return EditorState.push(editorState, withoutBlockStyle, 'change-block-type');\n }\n\n return null;\n },\n onDelete: function onDelete(editorState) {\n var selection = editorState.getSelection();\n\n if (!selection.isCollapsed()) {\n return null;\n }\n\n var content = editorState.getCurrentContent();\n var startKey = selection.getStartKey();\n var block = content.getBlockForKey(startKey);\n var length = block.getLength(); // The cursor is somewhere within the text. Behave normally.\n\n if (selection.getStartOffset() < length) {\n return null;\n }\n\n var blockAfter = content.getBlockAfter(startKey);\n\n if (!blockAfter || blockAfter.getType() !== 'atomic') {\n return null;\n }\n\n var atomicBlockTarget = selection.merge({\n focusKey: blockAfter.getKey(),\n focusOffset: blockAfter.getLength()\n });\n var withoutAtomicBlock = DraftModifier.removeRange(content, atomicBlockTarget, 'forward');\n\n if (withoutAtomicBlock !== content) {\n return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n }\n\n return null;\n },\n onTab: function onTab(event, editorState, maxDepth) {\n var selection = editorState.getSelection();\n var key = selection.getAnchorKey();\n\n if (key !== selection.getFocusKey()) {\n return editorState;\n }\n\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(key);\n var type = block.getType();\n\n if (type !== 'unordered-list-item' && type !== 'ordered-list-item') {\n return editorState;\n }\n\n event.preventDefault();\n var depth = block.getDepth();\n\n if (!event.shiftKey && depth === maxDepth) {\n return editorState;\n }\n\n var withAdjustment = adjustBlockDepthForContentState(content, selection, event.shiftKey ? -1 : 1, maxDepth);\n return EditorState.push(editorState, withAdjustment, 'adjust-depth');\n },\n toggleBlockType: function toggleBlockType(editorState, blockType) {\n var selection = editorState.getSelection();\n var startKey = selection.getStartKey();\n var endKey = selection.getEndKey();\n var content = editorState.getCurrentContent();\n var target = selection; // Triple-click can lead to a selection that includes offset 0 of the\n // following block. The `SelectionState` for this case is accurate, but\n // we should avoid toggling block type for the trailing block because it\n // is a confusing interaction.\n\n if (startKey !== endKey && selection.getEndOffset() === 0) {\n var blockBefore = nullthrows(content.getBlockBefore(endKey));\n endKey = blockBefore.getKey();\n target = target.merge({\n anchorKey: startKey,\n anchorOffset: selection.getStartOffset(),\n focusKey: endKey,\n focusOffset: blockBefore.getLength(),\n isBackward: false\n });\n }\n\n var hasAtomicBlock = content.getBlockMap().skipWhile(function (_, k) {\n return k !== startKey;\n }).reverse().skipWhile(function (_, k) {\n return k !== endKey;\n }).some(function (v) {\n return v.getType() === 'atomic';\n });\n\n if (hasAtomicBlock) {\n return editorState;\n }\n\n var typeToSet = content.getBlockForKey(startKey).getType() === blockType ? 'unstyled' : blockType;\n return EditorState.push(editorState, DraftModifier.setBlockType(content, target, typeToSet), 'change-block-type');\n },\n toggleCode: function toggleCode(editorState) {\n var selection = editorState.getSelection();\n var anchorKey = selection.getAnchorKey();\n var focusKey = selection.getFocusKey();\n\n if (selection.isCollapsed() || anchorKey !== focusKey) {\n return RichTextEditorUtil.toggleBlockType(editorState, 'code-block');\n }\n\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'CODE');\n },\n\n /**\n * Toggle the specified inline style for the selection. If the\n * user's selection is collapsed, apply or remove the style for the\n * internal state. If it is not collapsed, apply the change directly\n * to the document state.\n */\n toggleInlineStyle: function toggleInlineStyle(editorState, inlineStyle) {\n var selection = editorState.getSelection();\n var currentStyle = editorState.getCurrentInlineStyle(); // If the selection is collapsed, toggle the specified style on or off and\n // set the result as the new inline style override. This will then be\n // used as the inline style for the next character to be inserted.\n\n if (selection.isCollapsed()) {\n return EditorState.setInlineStyleOverride(editorState, currentStyle.has(inlineStyle) ? currentStyle.remove(inlineStyle) : currentStyle.add(inlineStyle));\n } // If characters are selected, immediately apply or remove the\n // inline style on the document state itself.\n\n\n var content = editorState.getCurrentContent();\n var newContent; // If the style is already present for the selection range, remove it.\n // Otherwise, apply it.\n\n if (currentStyle.has(inlineStyle)) {\n newContent = DraftModifier.removeInlineStyle(content, selection, inlineStyle);\n } else {\n newContent = DraftModifier.applyInlineStyle(content, selection, inlineStyle);\n }\n\n return EditorState.push(editorState, newContent, 'change-inline-style');\n },\n toggleLink: function toggleLink(editorState, targetSelection, entityKey) {\n var withoutLink = DraftModifier.applyEntity(editorState.getCurrentContent(), targetSelection, entityKey);\n return EditorState.push(editorState, withoutLink, 'apply-entity');\n },\n\n /**\n * When a collapsed cursor is at the start of a styled block, changes block\n * type to 'unstyled'. Returns null if selection does not meet that criteria.\n */\n tryToRemoveBlockStyle: function tryToRemoveBlockStyle(editorState) {\n var selection = editorState.getSelection();\n var offset = selection.getAnchorOffset();\n\n if (selection.isCollapsed() && offset === 0) {\n var key = selection.getAnchorKey();\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(key);\n var type = block.getType();\n var blockBefore = content.getBlockBefore(key);\n\n if (type === 'code-block' && blockBefore && blockBefore.getType() === 'code-block' && blockBefore.getLength() !== 0) {\n return null;\n }\n\n if (type !== 'unstyled') {\n return DraftModifier.setBlockType(content, selection, 'unstyled');\n }\n }\n\n return null;\n }\n};\nmodule.exports = RichTextEditorUtil;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar clipboard = null;\n/**\n * Some systems offer a \"secondary\" clipboard to allow quick internal cut\n * and paste behavior. For instance, Ctrl+K (cut) and Ctrl+Y (paste).\n */\n\nvar SecondaryClipboard = {\n cut: function cut(editorState) {\n var content = editorState.getCurrentContent();\n var selection = editorState.getSelection();\n var targetRange = null;\n\n if (selection.isCollapsed()) {\n var anchorKey = selection.getAnchorKey();\n var blockEnd = content.getBlockForKey(anchorKey).getLength();\n\n if (blockEnd === selection.getAnchorOffset()) {\n var keyAfter = content.getKeyAfter(anchorKey);\n\n if (keyAfter == null) {\n return editorState;\n }\n\n targetRange = selection.set('focusKey', keyAfter).set('focusOffset', 0);\n } else {\n targetRange = selection.set('focusOffset', blockEnd);\n }\n } else {\n targetRange = selection;\n }\n\n targetRange = nullthrows(targetRange); // TODO: This should actually append to the current state when doing\n // successive ^K commands without any other cursor movement\n\n clipboard = getContentStateFragment(content, targetRange);\n var afterRemoval = DraftModifier.removeRange(content, targetRange, 'forward');\n\n if (afterRemoval === content) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n },\n paste: function paste(editorState) {\n if (!clipboard) {\n return editorState;\n }\n\n var newContent = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), clipboard);\n return EditorState.push(editorState, newContent, 'insert-fragment');\n }\n};\nmodule.exports = SecondaryClipboard;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar defaultRecord = {\n anchorKey: '',\n anchorOffset: 0,\n focusKey: '',\n focusOffset: 0,\n isBackward: false,\n hasFocus: false\n};\n/* $FlowFixMe[unclear-type] This comment suppresses an error found when\n * automatically adding a type annotation with the codemod Komodo/Annotate_\n * exports. To see the error delete this comment and run Flow. */\n\nvar SelectionStateRecord = Record(defaultRecord);\n\nvar SelectionState = /*#__PURE__*/function (_SelectionStateRecord) {\n _inheritsLoose(SelectionState, _SelectionStateRecord);\n\n function SelectionState() {\n return _SelectionStateRecord.apply(this, arguments) || this;\n }\n\n var _proto = SelectionState.prototype;\n\n _proto.serialize = function serialize() {\n return 'Anchor: ' + this.getAnchorKey() + ':' + this.getAnchorOffset() + ', ' + 'Focus: ' + this.getFocusKey() + ':' + this.getFocusOffset() + ', ' + 'Is Backward: ' + String(this.getIsBackward()) + ', ' + 'Has Focus: ' + String(this.getHasFocus());\n };\n\n _proto.getAnchorKey = function getAnchorKey() {\n return this.get('anchorKey');\n };\n\n _proto.getAnchorOffset = function getAnchorOffset() {\n return this.get('anchorOffset');\n };\n\n _proto.getFocusKey = function getFocusKey() {\n return this.get('focusKey');\n };\n\n _proto.getFocusOffset = function getFocusOffset() {\n return this.get('focusOffset');\n };\n\n _proto.getIsBackward = function getIsBackward() {\n return this.get('isBackward');\n };\n\n _proto.getHasFocus = function getHasFocus() {\n return this.get('hasFocus');\n }\n /**\n * Return whether the specified range overlaps with an edge of the\n * SelectionState.\n */\n ;\n\n _proto.hasEdgeWithin = function hasEdgeWithin(blockKey, start, end) {\n var anchorKey = this.getAnchorKey();\n var focusKey = this.getFocusKey();\n\n if (anchorKey === focusKey && anchorKey === blockKey) {\n var selectionStart = this.getStartOffset();\n var selectionEnd = this.getEndOffset();\n return start <= selectionStart && selectionStart <= end || // selectionStart is between start and end, or\n start <= selectionEnd && selectionEnd <= end // selectionEnd is between start and end\n ;\n }\n\n if (blockKey !== anchorKey && blockKey !== focusKey) {\n return false;\n }\n\n var offsetToCheck = blockKey === anchorKey ? this.getAnchorOffset() : this.getFocusOffset();\n return start <= offsetToCheck && end >= offsetToCheck;\n };\n\n _proto.isCollapsed = function isCollapsed() {\n return this.getAnchorKey() === this.getFocusKey() && this.getAnchorOffset() === this.getFocusOffset();\n };\n\n _proto.getStartKey = function getStartKey() {\n return this.getIsBackward() ? this.getFocusKey() : this.getAnchorKey();\n };\n\n _proto.getStartOffset = function getStartOffset() {\n return this.getIsBackward() ? this.getFocusOffset() : this.getAnchorOffset();\n };\n\n _proto.getEndKey = function getEndKey() {\n return this.getIsBackward() ? this.getAnchorKey() : this.getFocusKey();\n };\n\n _proto.getEndOffset = function getEndOffset() {\n return this.getIsBackward() ? this.getAnchorOffset() : this.getFocusOffset();\n };\n\n SelectionState.createEmpty = function createEmpty(key) {\n return new SelectionState({\n anchorKey: key,\n anchorOffset: 0,\n focusKey: key,\n focusOffset: 0,\n isBackward: false,\n hasFocus: false\n });\n };\n\n return SelectionState;\n}(SelectionStateRecord);\n\nmodule.exports = SelectionState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction adjustBlockDepthForContentState(contentState, selectionState, adjustment, maxDepth) {\n var startKey = selectionState.getStartKey();\n var endKey = selectionState.getEndKey();\n var blockMap = contentState.getBlockMap();\n var blocks = blockMap.toSeq().skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).concat([[endKey, blockMap.get(endKey)]]).map(function (block) {\n var depth = block.getDepth() + adjustment;\n depth = Math.max(0, Math.min(depth, maxDepth));\n return block.set('depth', depth);\n });\n blockMap = blockMap.merge(blocks);\n return contentState.merge({\n blockMap: blockMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = adjustBlockDepthForContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nfunction applyEntityToContentBlock(contentBlock, startArg, end, entityKey) {\n var start = startArg;\n var characterList = contentBlock.getCharacterList();\n\n while (start < end) {\n characterList = characterList.set(start, CharacterMetadata.applyEntity(characterList.get(start), entityKey));\n start++;\n }\n\n return contentBlock.set('characterList', characterList);\n}\n\nmodule.exports = applyEntityToContentBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar applyEntityToContentBlock = require(\"./applyEntityToContentBlock\");\n\nvar Immutable = require(\"immutable\");\n\nfunction applyEntityToContentState(contentState, selectionState, entityKey) {\n var blockMap = contentState.getBlockMap();\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var newBlocks = blockMap.skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).toOrderedMap().merge(Immutable.OrderedMap([[endKey, blockMap.get(endKey)]])).map(function (block, blockKey) {\n var sliceStart = blockKey === startKey ? startOffset : 0;\n var sliceEnd = blockKey === endKey ? endOffset : block.getLength();\n return applyEntityToContentBlock(block, sliceStart, sliceEnd, entityKey);\n });\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = applyEntityToContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftStringKey = require(\"./DraftStringKey\");\n\nvar encodeEntityRanges = require(\"./encodeEntityRanges\");\n\nvar encodeInlineStyleRanges = require(\"./encodeInlineStyleRanges\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar createRawBlock = function createRawBlock(block, entityStorageMap) {\n return {\n key: block.getKey(),\n text: block.getText(),\n type: block.getType(),\n depth: block.getDepth(),\n inlineStyleRanges: encodeInlineStyleRanges(block),\n entityRanges: encodeEntityRanges(block, entityStorageMap),\n data: block.getData().toObject()\n };\n};\n\nvar insertRawBlock = function insertRawBlock(block, entityMap, rawBlocks, blockCacheRef) {\n if (block instanceof ContentBlock) {\n rawBlocks.push(createRawBlock(block, entityMap));\n return;\n }\n\n !(block instanceof ContentBlockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'block is not a BlockNode') : invariant(false) : void 0;\n var parentKey = block.getParentKey();\n\n var rawBlock = blockCacheRef[block.getKey()] = _objectSpread({}, createRawBlock(block, entityMap), {\n children: []\n });\n\n if (parentKey) {\n blockCacheRef[parentKey].children.push(rawBlock);\n return;\n }\n\n rawBlocks.push(rawBlock);\n};\n\nvar encodeRawBlocks = function encodeRawBlocks(contentState, rawState) {\n var entityMap = rawState.entityMap;\n var rawBlocks = [];\n var blockCacheRef = {};\n var entityCacheRef = {};\n var entityStorageKey = 0;\n contentState.getBlockMap().forEach(function (block) {\n block.findEntityRanges(function (character) {\n return character.getEntity() !== null;\n }, function (start) {\n var entityKey = block.getEntityAt(start); // Stringify to maintain order of otherwise numeric keys.\n\n var stringifiedEntityKey = DraftStringKey.stringify(entityKey); // This makes this function resilient to two entities\n // erroneously having the same key\n\n if (entityCacheRef[stringifiedEntityKey]) {\n return;\n }\n\n entityCacheRef[stringifiedEntityKey] = entityKey; // we need the `any` casting here since this is a temporary state\n // where we will later on flip the entity map and populate it with\n // real entity, at this stage we just need to map back the entity\n // key used by the BlockNode\n\n entityMap[stringifiedEntityKey] = \"\".concat(entityStorageKey);\n entityStorageKey++;\n });\n insertRawBlock(block, entityMap, rawBlocks, blockCacheRef);\n });\n return {\n blocks: rawBlocks,\n entityMap: entityMap\n };\n}; // Flip storage map so that our storage keys map to global\n// DraftEntity keys.\n\n\nvar encodeRawEntityMap = function encodeRawEntityMap(contentState, rawState) {\n var blocks = rawState.blocks,\n entityMap = rawState.entityMap;\n var rawEntityMap = {};\n Object.keys(entityMap).forEach(function (key, index) {\n var entity = contentState.getEntity(DraftStringKey.unstringify(key));\n rawEntityMap[index] = {\n type: entity.getType(),\n mutability: entity.getMutability(),\n data: entity.getData()\n };\n });\n return {\n blocks: blocks,\n entityMap: rawEntityMap\n };\n};\n\nvar convertFromDraftStateToRaw = function convertFromDraftStateToRaw(contentState) {\n var rawDraftContentState = {\n entityMap: {},\n blocks: []\n }; // add blocks\n\n rawDraftContentState = encodeRawBlocks(contentState, rawDraftContentState); // add entities\n\n rawDraftContentState = encodeRawEntityMap(contentState, rawDraftContentState);\n return rawDraftContentState;\n};\n\nmodule.exports = convertFromDraftStateToRaw;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _knownListItemDepthCl;\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar URI = require(\"fbjs/lib/URI\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getSafeBodyFromHTML = require(\"./getSafeBodyFromHTML\");\n\nvar gkx = require(\"./gkx\");\n\nvar _require = require(\"immutable\"),\n List = _require.List,\n Map = _require.Map,\n OrderedSet = _require.OrderedSet;\n\nvar isHTMLAnchorElement = require(\"./isHTMLAnchorElement\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar isHTMLImageElement = require(\"./isHTMLImageElement\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar NBSP = ' ';\nvar SPACE = ' '; // used for replacing characters in HTML\n\nvar REGEX_CR = new RegExp('\\r', 'g');\nvar REGEX_LF = new RegExp('\\n', 'g');\nvar REGEX_LEADING_LF = new RegExp('^\\n', 'g');\nvar REGEX_NBSP = new RegExp(NBSP, 'g');\nvar REGEX_CARRIAGE = new RegExp(' ?', 'g');\nvar REGEX_ZWS = new RegExp('​?', 'g'); // https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n\nvar boldValues = ['bold', 'bolder', '500', '600', '700', '800', '900'];\nvar notBoldValues = ['light', 'lighter', 'normal', '100', '200', '300', '400'];\nvar anchorAttr = ['className', 'href', 'rel', 'target', 'title'];\nvar imgAttr = ['alt', 'className', 'height', 'src', 'width'];\nvar knownListItemDepthClasses = (_knownListItemDepthCl = {}, _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth0'), 0), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth1'), 1), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth2'), 2), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth3'), 3), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth4'), 4), _knownListItemDepthCl);\nvar HTMLTagToRawInlineStyleMap = Map({\n b: 'BOLD',\n code: 'CODE',\n del: 'STRIKETHROUGH',\n em: 'ITALIC',\n i: 'ITALIC',\n s: 'STRIKETHROUGH',\n strike: 'STRIKETHROUGH',\n strong: 'BOLD',\n u: 'UNDERLINE',\n mark: 'HIGHLIGHT'\n});\n\n/**\n * Build a mapping from HTML tags to draftjs block types\n * out of a BlockRenderMap.\n *\n * The BlockTypeMap for the default BlockRenderMap looks like this:\n * Map({\n * h1: 'header-one',\n * h2: 'header-two',\n * h3: 'header-three',\n * h4: 'header-four',\n * h5: 'header-five',\n * h6: 'header-six',\n * blockquote: 'blockquote',\n * figure: 'atomic',\n * pre: ['code-block'],\n * div: 'unstyled',\n * p: 'unstyled',\n * li: ['ordered-list-item', 'unordered-list-item'],\n * })\n */\nvar buildBlockTypeMap = function buildBlockTypeMap(blockRenderMap) {\n var blockTypeMap = {};\n blockRenderMap.mapKeys(function (blockType, desc) {\n var elements = [desc.element];\n\n if (desc.aliasedElements !== undefined) {\n elements.push.apply(elements, desc.aliasedElements);\n }\n\n elements.forEach(function (element) {\n if (blockTypeMap[element] === undefined) {\n blockTypeMap[element] = blockType;\n } else if (typeof blockTypeMap[element] === 'string') {\n blockTypeMap[element] = [blockTypeMap[element], blockType];\n } else {\n blockTypeMap[element].push(blockType);\n }\n });\n });\n return Map(blockTypeMap);\n};\n\nvar detectInlineStyle = function detectInlineStyle(node) {\n if (isHTMLElement(node)) {\n var element = node; // Currently only used to detect preformatted inline code\n\n if (element.style.fontFamily.includes('monospace')) {\n return 'CODE';\n }\n }\n\n return null;\n};\n/**\n * If we're pasting from one DraftEditor to another we can check to see if\n * existing list item depth classes are being used and preserve this style\n */\n\n\nvar getListItemDepth = function getListItemDepth(node) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n Object.keys(knownListItemDepthClasses).some(function (depthClass) {\n if (node.classList.contains(depthClass)) {\n depth = knownListItemDepthClasses[depthClass];\n }\n });\n return depth;\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible link.\n */\n\n\nvar isValidAnchor = function isValidAnchor(node) {\n if (!isHTMLAnchorElement(node)) {\n return false;\n }\n\n var anchorNode = node;\n\n if (!anchorNode.href || anchorNode.protocol !== 'http:' && anchorNode.protocol !== 'https:' && anchorNode.protocol !== 'mailto:' && anchorNode.protocol !== 'tel:') {\n return false;\n }\n\n try {\n // Just checking whether we can actually create a URI\n var _ = new URI(anchorNode.href);\n\n return true; // We need our catch statements to have arguments, else\n // UglifyJS (which we use for our OSS builds) will crash.\n // eslint-disable-next-line fb-www/no-unused-catch-bindings\n } catch (_) {\n return false;\n }\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible image.\n */\n\n\nvar isValidImage = function isValidImage(node) {\n if (!isHTMLImageElement(node)) {\n return false;\n }\n\n var imageNode = node;\n return !!(imageNode.attributes.getNamedItem('src') && imageNode.attributes.getNamedItem('src').value);\n};\n/**\n * Try to guess the inline style of an HTML element based on its css\n * styles (font-weight, font-style and text-decoration).\n */\n\n\nvar styleFromNodeAttributes = function styleFromNodeAttributes(node, style) {\n if (!isHTMLElement(node)) {\n return style;\n }\n\n var htmlElement = node;\n var fontWeight = htmlElement.style.fontWeight;\n var fontStyle = htmlElement.style.fontStyle;\n var textDecoration = htmlElement.style.textDecoration;\n return style.withMutations(function (style) {\n if (boldValues.indexOf(fontWeight) >= 0) {\n style.add('BOLD');\n } else if (notBoldValues.indexOf(fontWeight) >= 0) {\n style.remove('BOLD');\n }\n\n if (fontStyle === 'italic') {\n style.add('ITALIC');\n } else if (fontStyle === 'normal') {\n style.remove('ITALIC');\n }\n\n if (textDecoration === 'underline') {\n style.add('UNDERLINE');\n }\n\n if (textDecoration === 'line-through') {\n style.add('STRIKETHROUGH');\n }\n\n if (textDecoration === 'none') {\n style.remove('UNDERLINE');\n style.remove('STRIKETHROUGH');\n }\n });\n};\n/**\n * Determine if a nodeName is a list type, 'ul' or 'ol'\n */\n\n\nvar isListNode = function isListNode(nodeName) {\n return nodeName === 'ul' || nodeName === 'ol';\n};\n/**\n * ContentBlockConfig is a mutable data structure that holds all\n * the information required to build a ContentBlock and an array of\n * all the child nodes (childConfigs).\n * It is being used a temporary data structure by the\n * ContentBlocksBuilder class.\n */\n\n\n/**\n * ContentBlocksBuilder builds a list of ContentBlocks and an Entity Map\n * out of one (or several) HTMLElement(s).\n *\n * The algorithm has two passes: first it builds a tree of ContentBlockConfigs\n * by walking through the HTML nodes and their children, then it walks the\n * ContentBlockConfigs tree to compute parents/siblings and create\n * the actual ContentBlocks.\n *\n * Typical usage is:\n * new ContentBlocksBuilder()\n * .addDOMNode(someHTMLNode)\n * .addDOMNode(someOtherHTMLNode)\n * .getContentBlocks();\n *\n */\nvar ContentBlocksBuilder = /*#__PURE__*/function () {\n // Most of the method in the class depend on the state of the content builder\n // (i.e. currentBlockType, currentDepth, currentEntity etc.). Though it may\n // be confusing at first, it made the code simpler than the alternative which\n // is to pass those values around in every call.\n // The following attributes are used to accumulate text and styles\n // as we are walking the HTML node tree.\n // Describes the future ContentState as a tree of content blocks\n // The content blocks generated from the blockConfigs\n // Entity map use to store links and images found in the HTML nodes\n // Map HTML tags to draftjs block types and disambiguation function\n function ContentBlocksBuilder(blockTypeMap, disambiguate) {\n _defineProperty(this, \"characterList\", List());\n\n _defineProperty(this, \"currentBlockType\", 'unstyled');\n\n _defineProperty(this, \"currentDepth\", 0);\n\n _defineProperty(this, \"currentEntity\", null);\n\n _defineProperty(this, \"currentText\", '');\n\n _defineProperty(this, \"wrapper\", null);\n\n _defineProperty(this, \"blockConfigs\", []);\n\n _defineProperty(this, \"contentBlocks\", []);\n\n _defineProperty(this, \"entityMap\", DraftEntity);\n\n _defineProperty(this, \"blockTypeMap\", void 0);\n\n _defineProperty(this, \"disambiguate\", void 0);\n\n this.clear();\n this.blockTypeMap = blockTypeMap;\n this.disambiguate = disambiguate;\n }\n /**\n * Clear the internal state of the ContentBlocksBuilder\n */\n\n\n var _proto = ContentBlocksBuilder.prototype;\n\n _proto.clear = function clear() {\n this.characterList = List();\n this.blockConfigs = [];\n this.currentBlockType = 'unstyled';\n this.currentDepth = 0;\n this.currentEntity = null;\n this.currentText = '';\n this.entityMap = DraftEntity;\n this.wrapper = null;\n this.contentBlocks = [];\n }\n /**\n * Add an HTMLElement to the ContentBlocksBuilder\n */\n ;\n\n _proto.addDOMNode = function addDOMNode(node) {\n var _this$blockConfigs;\n\n this.contentBlocks = [];\n this.currentDepth = 0; // Converts the HTML node to block config\n\n (_this$blockConfigs = this.blockConfigs).push.apply(_this$blockConfigs, this._toBlockConfigs([node], OrderedSet())); // There might be some left over text in the builder's\n // internal state, if so make a ContentBlock out of it.\n\n\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n this.blockConfigs.push(this._makeBlockConfig());\n } // for chaining\n\n\n return this;\n }\n /**\n * Return the ContentBlocks and the EntityMap that corresponds\n * to the previously added HTML nodes.\n */\n ;\n\n _proto.getContentBlocks = function getContentBlocks() {\n if (this.contentBlocks.length === 0) {\n if (experimentalTreeDataSupport) {\n this._toContentBlocks(this.blockConfigs);\n } else {\n this._toFlatContentBlocks(this.blockConfigs);\n }\n }\n\n return {\n contentBlocks: this.contentBlocks,\n entityMap: this.entityMap\n };\n } // ***********************************WARNING******************************\n // The methods below this line are private - don't call them directly.\n\n /**\n * Generate a new ContentBlockConfig out of the current internal state\n * of the builder, then clears the internal state.\n */\n ;\n\n _proto._makeBlockConfig = function _makeBlockConfig() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var key = config.key || generateRandomKey();\n\n var block = _objectSpread({\n key: key,\n type: this.currentBlockType,\n text: this.currentText,\n characterList: this.characterList,\n depth: this.currentDepth,\n parent: null,\n children: List(),\n prevSibling: null,\n nextSibling: null,\n childConfigs: []\n }, config);\n\n this.characterList = List();\n this.currentBlockType = 'unstyled';\n this.currentText = '';\n return block;\n }\n /**\n * Converts an array of HTML elements to a multi-root tree of content\n * block configs. Some text content may be left in the builders internal\n * state to enable chaining sucessive calls.\n */\n ;\n\n _proto._toBlockConfigs = function _toBlockConfigs(nodes, style) {\n var blockConfigs = [];\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var nodeName = node.nodeName.toLowerCase();\n\n if (nodeName === 'body' || isListNode(nodeName)) {\n // body, ol and ul are 'block' type nodes so create a block config\n // with the text accumulated so far (if any)\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n blockConfigs.push(this._makeBlockConfig());\n } // body, ol and ul nodes are ignored, but their children are inlined in\n // the parent block config.\n\n\n var wasCurrentDepth = this.currentDepth;\n var wasWrapper = this.wrapper;\n\n if (isListNode(nodeName)) {\n this.wrapper = nodeName;\n\n if (isListNode(wasWrapper)) {\n this.currentDepth++;\n }\n }\n\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n this.currentDepth = wasCurrentDepth;\n this.wrapper = wasWrapper;\n continue;\n }\n\n var blockType = this.blockTypeMap.get(nodeName);\n\n if (blockType !== undefined) {\n // 'block' type node means we need to create a block config\n // with the text accumulated so far (if any)\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n blockConfigs.push(this._makeBlockConfig());\n }\n\n var _wasCurrentDepth = this.currentDepth;\n var _wasWrapper = this.wrapper;\n this.wrapper = nodeName === 'pre' ? 'pre' : this.wrapper;\n\n if (typeof blockType !== 'string') {\n blockType = this.disambiguate(nodeName, this.wrapper) || blockType[0] || 'unstyled';\n }\n\n if (!experimentalTreeDataSupport && isHTMLElement(node) && (blockType === 'unordered-list-item' || blockType === 'ordered-list-item')) {\n var htmlElement = node;\n this.currentDepth = getListItemDepth(htmlElement, this.currentDepth);\n }\n\n var key = generateRandomKey();\n\n var childConfigs = this._toBlockConfigs(Array.from(node.childNodes), style);\n\n this._trimCurrentText();\n\n blockConfigs.push(this._makeBlockConfig({\n key: key,\n childConfigs: childConfigs,\n type: blockType\n }));\n this.currentDepth = _wasCurrentDepth;\n this.wrapper = _wasWrapper;\n continue;\n }\n\n if (nodeName === '#text') {\n this._addTextNode(node, style);\n\n continue;\n }\n\n if (nodeName === 'br') {\n this._addBreakNode(node, style);\n\n continue;\n }\n\n if (isValidImage(node)) {\n this._addImgNode(node, style);\n\n continue;\n }\n\n if (isValidAnchor(node)) {\n this._addAnchorNode(node, blockConfigs, style);\n\n continue;\n }\n\n var newStyle = style;\n\n if (HTMLTagToRawInlineStyleMap.has(nodeName)) {\n newStyle = newStyle.add(HTMLTagToRawInlineStyleMap.get(nodeName));\n }\n\n newStyle = styleFromNodeAttributes(node, newStyle);\n var inlineStyle = detectInlineStyle(node);\n\n if (inlineStyle != null) {\n newStyle = newStyle.add(inlineStyle);\n }\n\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), newStyle));\n }\n\n return blockConfigs;\n }\n /**\n * Append a string of text to the internal buffer.\n */\n ;\n\n _proto._appendText = function _appendText(text, style) {\n var _this$characterList;\n\n this.currentText += text;\n var characterMetadata = CharacterMetadata.create({\n style: style,\n entity: this.currentEntity\n });\n this.characterList = (_this$characterList = this.characterList).push.apply(_this$characterList, Array(text.length).fill(characterMetadata));\n }\n /**\n * Trim the text in the internal buffer.\n */\n ;\n\n _proto._trimCurrentText = function _trimCurrentText() {\n var l = this.currentText.length;\n var begin = l - this.currentText.trimLeft().length;\n var end = this.currentText.trimRight().length; // We should not trim whitespaces for which an entity is defined.\n\n var entity = this.characterList.findEntry(function (characterMetadata) {\n return characterMetadata.getEntity() !== null;\n });\n begin = entity !== undefined ? Math.min(begin, entity[0]) : begin;\n entity = this.characterList.reverse().findEntry(function (characterMetadata) {\n return characterMetadata.getEntity() !== null;\n });\n end = entity !== undefined ? Math.max(end, l - entity[0]) : end;\n\n if (begin > end) {\n this.currentText = '';\n this.characterList = List();\n } else {\n this.currentText = this.currentText.slice(begin, end);\n this.characterList = this.characterList.slice(begin, end);\n }\n }\n /**\n * Add the content of an HTML text node to the internal state\n */\n ;\n\n _proto._addTextNode = function _addTextNode(node, style) {\n var text = node.textContent;\n var trimmedText = text.trim(); // If we are not in a pre block and the trimmed content is empty,\n // normalize to a single space.\n\n if (trimmedText === '' && this.wrapper !== 'pre') {\n text = ' ';\n }\n\n if (this.wrapper !== 'pre') {\n // Trim leading line feed, which is invisible in HTML\n text = text.replace(REGEX_LEADING_LF, ''); // Can't use empty string because MSWord\n\n text = text.replace(REGEX_LF, SPACE);\n }\n\n this._appendText(text, style);\n };\n\n _proto._addBreakNode = function _addBreakNode(node, style) {\n if (!isHTMLBRElement(node)) {\n return;\n }\n\n this._appendText('\\n', style);\n }\n /**\n * Add the content of an HTML img node to the internal state\n */\n ;\n\n _proto._addImgNode = function _addImgNode(node, style) {\n if (!isHTMLImageElement(node)) {\n return;\n }\n\n var image = node;\n var entityConfig = {};\n imgAttr.forEach(function (attr) {\n var imageAttribute = image.getAttribute(attr);\n\n if (imageAttribute) {\n entityConfig[attr] = imageAttribute;\n }\n }); // TODO: T15530363 update this when we remove DraftEntity entirely\n\n this.currentEntity = this.entityMap.__create('IMAGE', 'IMMUTABLE', entityConfig); // The child text node cannot just have a space or return as content (since\n // we strip those out), unless the image is for presentation only.\n // See https://github.com/facebook/draft-js/issues/231 for some context.\n\n if (gkx('draftjs_fix_paste_for_img')) {\n if (image.getAttribute('role') !== 'presentation') {\n this._appendText(\"\\uD83D\\uDCF7\", style);\n }\n } else {\n this._appendText(\"\\uD83D\\uDCF7\", style);\n }\n\n this.currentEntity = null;\n }\n /**\n * Add the content of an HTML 'a' node to the internal state. Child nodes\n * (if any) are converted to Block Configs and appended to the provided\n * blockConfig array.\n */\n ;\n\n _proto._addAnchorNode = function _addAnchorNode(node, blockConfigs, style) {\n // The check has already been made by isValidAnchor but\n // we have to do it again to keep flow happy.\n if (!isHTMLAnchorElement(node)) {\n return;\n }\n\n var anchor = node;\n var entityConfig = {};\n anchorAttr.forEach(function (attr) {\n var anchorAttribute = anchor.getAttribute(attr);\n\n if (anchorAttribute) {\n entityConfig[attr] = anchorAttribute;\n }\n });\n entityConfig.url = new URI(anchor.href).toString(); // TODO: T15530363 update this when we remove DraftEntity completely\n\n this.currentEntity = this.entityMap.__create('LINK', 'MUTABLE', entityConfig || {});\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n this.currentEntity = null;\n }\n /**\n * Walk the BlockConfig tree, compute parent/children/siblings,\n * and generate the corresponding ContentBlockNode\n */\n ;\n\n _proto._toContentBlocks = function _toContentBlocks(blockConfigs) {\n var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var l = blockConfigs.length - 1;\n\n for (var i = 0; i <= l; i++) {\n var config = blockConfigs[i];\n config.parent = parent;\n config.prevSibling = i > 0 ? blockConfigs[i - 1].key : null;\n config.nextSibling = i < l ? blockConfigs[i + 1].key : null;\n config.children = List(config.childConfigs.map(function (child) {\n return child.key;\n }));\n this.contentBlocks.push(new ContentBlockNode(_objectSpread({}, config)));\n\n this._toContentBlocks(config.childConfigs, config.key);\n }\n }\n /**\n * Remove 'useless' container nodes from the block config hierarchy, by\n * replacing them with their children.\n */\n ;\n\n _proto._hoistContainersInBlockConfigs = function _hoistContainersInBlockConfigs(blockConfigs) {\n var _this = this;\n\n var hoisted = List(blockConfigs).flatMap(function (blockConfig) {\n // Don't mess with useful blocks\n if (blockConfig.type !== 'unstyled' || blockConfig.text !== '') {\n return [blockConfig];\n }\n\n return _this._hoistContainersInBlockConfigs(blockConfig.childConfigs);\n });\n return hoisted;\n } // ***********************************************************************\n // The two methods below are used for backward compatibility when\n // experimentalTreeDataSupport is disabled.\n\n /**\n * Same as _toContentBlocks but replaces nested blocks by their\n * text content.\n */\n ;\n\n _proto._toFlatContentBlocks = function _toFlatContentBlocks(blockConfigs) {\n var _this2 = this;\n\n var cleanConfigs = this._hoistContainersInBlockConfigs(blockConfigs);\n\n cleanConfigs.forEach(function (config) {\n var _this2$_extractTextFr = _this2._extractTextFromBlockConfigs(config.childConfigs),\n text = _this2$_extractTextFr.text,\n characterList = _this2$_extractTextFr.characterList;\n\n _this2.contentBlocks.push(new ContentBlock(_objectSpread({}, config, {\n text: config.text + text,\n characterList: config.characterList.concat(characterList)\n })));\n });\n }\n /**\n * Extract the text and the associated inline styles form an\n * array of content block configs.\n */\n ;\n\n _proto._extractTextFromBlockConfigs = function _extractTextFromBlockConfigs(blockConfigs) {\n var l = blockConfigs.length - 1;\n var text = '';\n var characterList = List();\n\n for (var i = 0; i <= l; i++) {\n var config = blockConfigs[i];\n text += config.text;\n characterList = characterList.concat(config.characterList);\n\n if (text !== '' && config.type !== 'unstyled') {\n text += '\\n';\n characterList = characterList.push(characterList.last());\n }\n\n var children = this._extractTextFromBlockConfigs(config.childConfigs);\n\n text += children.text;\n characterList = characterList.concat(children.characterList);\n }\n\n return {\n text: text,\n characterList: characterList\n };\n };\n\n return ContentBlocksBuilder;\n}();\n/**\n * Converts an HTML string to an array of ContentBlocks and an EntityMap\n * suitable to initialize the internal state of a Draftjs component.\n */\n\n\nvar convertFromHTMLToContentBlocks = function convertFromHTMLToContentBlocks(html) {\n var DOMBuilder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getSafeBodyFromHTML;\n var blockRenderMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DefaultDraftBlockRenderMap;\n // Be ABSOLUTELY SURE that the dom builder you pass here won't execute\n // arbitrary code in whatever environment you're running this in. For an\n // example of how we try to do this in-browser, see getSafeBodyFromHTML.\n // Remove funky characters from the HTML string\n html = html.trim().replace(REGEX_CR, '').replace(REGEX_NBSP, SPACE).replace(REGEX_CARRIAGE, '').replace(REGEX_ZWS, ''); // Build a DOM tree out of the HTML string\n\n var safeBody = DOMBuilder(html);\n\n if (!safeBody) {\n return null;\n } // Build a BlockTypeMap out of the BlockRenderMap\n\n\n var blockTypeMap = buildBlockTypeMap(blockRenderMap); // Select the proper block type for the cases where the blockRenderMap\n // uses multiple block types for the same html tag.\n\n var disambiguate = function disambiguate(tag, wrapper) {\n if (tag === 'li') {\n return wrapper === 'ol' ? 'ordered-list-item' : 'unordered-list-item';\n }\n\n return null;\n };\n\n return new ContentBlocksBuilder(blockTypeMap, disambiguate).addDOMNode(safeBody).getContentBlocks();\n};\n\nmodule.exports = convertFromHTMLToContentBlocks;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar DraftTreeAdapter = require(\"./DraftTreeAdapter\");\n\nvar DraftTreeInvariants = require(\"./DraftTreeInvariants\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar createCharacterList = require(\"./createCharacterList\");\n\nvar decodeEntityRanges = require(\"./decodeEntityRanges\");\n\nvar decodeInlineStyleRanges = require(\"./decodeInlineStyleRanges\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedMap = Immutable.OrderedMap;\n\nvar decodeBlockNodeConfig = function decodeBlockNodeConfig(block, entityMap) {\n var key = block.key,\n type = block.type,\n data = block.data,\n text = block.text,\n depth = block.depth;\n var blockNodeConfig = {\n text: text,\n depth: depth || 0,\n type: type || 'unstyled',\n key: key || generateRandomKey(),\n data: Map(data),\n characterList: decodeCharacterList(block, entityMap)\n };\n return blockNodeConfig;\n};\n\nvar decodeCharacterList = function decodeCharacterList(block, entityMap) {\n var text = block.text,\n rawEntityRanges = block.entityRanges,\n rawInlineStyleRanges = block.inlineStyleRanges;\n var entityRanges = rawEntityRanges || [];\n var inlineStyleRanges = rawInlineStyleRanges || []; // Translate entity range keys to the DraftEntity map.\n\n return createCharacterList(decodeInlineStyleRanges(text, inlineStyleRanges), decodeEntityRanges(text, entityRanges.filter(function (range) {\n return entityMap.hasOwnProperty(range.key);\n }).map(function (range) {\n return _objectSpread({}, range, {\n key: entityMap[range.key]\n });\n })));\n};\n\nvar addKeyIfMissing = function addKeyIfMissing(block) {\n return _objectSpread({}, block, {\n key: block.key || generateRandomKey()\n });\n};\n/**\n * Node stack is responsible to ensure we traverse the tree only once\n * in depth order, while also providing parent refs to inner nodes to\n * construct their links.\n */\n\n\nvar updateNodeStack = function updateNodeStack(stack, nodes, parentRef) {\n var nodesWithParentRef = nodes.map(function (block) {\n return _objectSpread({}, block, {\n parentRef: parentRef\n });\n }); // since we pop nodes from the stack we need to insert them in reverse\n\n return stack.concat(nodesWithParentRef.reverse());\n};\n/**\n * This will build a tree draft content state by creating the node\n * reference links into a single tree walk. Each node has a link\n * reference to \"parent\", \"children\", \"nextSibling\" and \"prevSibling\"\n * blockMap will be created using depth ordering.\n */\n\n\nvar decodeContentBlockNodes = function decodeContentBlockNodes(blocks, entityMap) {\n return blocks // ensure children have valid keys to enable sibling links\n .map(addKeyIfMissing).reduce(function (blockMap, block, index) {\n !Array.isArray(block.children) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentBlock can not be converted to ContentBlockNode') : invariant(false) : void 0; // ensure children have valid keys to enable sibling links\n\n var children = block.children.map(addKeyIfMissing); // root level nodes\n\n var contentBlockNode = new ContentBlockNode(_objectSpread({}, decodeBlockNodeConfig(block, entityMap), {\n prevSibling: index === 0 ? null : blocks[index - 1].key,\n nextSibling: index === blocks.length - 1 ? null : blocks[index + 1].key,\n children: List(children.map(function (child) {\n return child.key;\n }))\n })); // push root node to blockMap\n\n blockMap = blockMap.set(contentBlockNode.getKey(), contentBlockNode); // this stack is used to ensure we visit all nodes respecting depth ordering\n\n var stack = updateNodeStack([], children, contentBlockNode); // start computing children nodes\n\n while (stack.length > 0) {\n // we pop from the stack and start processing this node\n var node = stack.pop(); // parentRef already points to a converted ContentBlockNode\n\n var parentRef = node.parentRef;\n var siblings = parentRef.getChildKeys();\n\n var _index = siblings.indexOf(node.key);\n\n var isValidBlock = Array.isArray(node.children);\n\n if (!isValidBlock) {\n !isValidBlock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentBlock can not be converted to ContentBlockNode') : invariant(false) : void 0;\n break;\n } // ensure children have valid keys to enable sibling links\n\n\n var _children = node.children.map(addKeyIfMissing);\n\n var _contentBlockNode = new ContentBlockNode(_objectSpread({}, decodeBlockNodeConfig(node, entityMap), {\n parent: parentRef.getKey(),\n children: List(_children.map(function (child) {\n return child.key;\n })),\n prevSibling: _index === 0 ? null : siblings.get(_index - 1),\n nextSibling: _index === siblings.size - 1 ? null : siblings.get(_index + 1)\n })); // push node to blockMap\n\n\n blockMap = blockMap.set(_contentBlockNode.getKey(), _contentBlockNode); // this stack is used to ensure we visit all nodes respecting depth ordering\n\n stack = updateNodeStack(stack, _children, _contentBlockNode);\n }\n\n return blockMap;\n }, OrderedMap());\n};\n\nvar decodeContentBlocks = function decodeContentBlocks(blocks, entityMap) {\n return OrderedMap(blocks.map(function (block) {\n var contentBlock = new ContentBlock(decodeBlockNodeConfig(block, entityMap));\n return [contentBlock.getKey(), contentBlock];\n }));\n};\n\nvar decodeRawBlocks = function decodeRawBlocks(rawState, entityMap) {\n var isTreeRawBlock = rawState.blocks.find(function (block) {\n return Array.isArray(block.children) && block.children.length > 0;\n });\n var rawBlocks = experimentalTreeDataSupport && !isTreeRawBlock ? DraftTreeAdapter.fromRawStateToRawTreeState(rawState).blocks : rawState.blocks;\n\n if (!experimentalTreeDataSupport) {\n return decodeContentBlocks(isTreeRawBlock ? DraftTreeAdapter.fromRawTreeStateToRawState(rawState).blocks : rawBlocks, entityMap);\n }\n\n var blockMap = decodeContentBlockNodes(rawBlocks, entityMap); // in dev mode, check that the tree invariants are met\n\n if (process.env.NODE_ENV !== \"production\") {\n !DraftTreeInvariants.isValidTree(blockMap) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should be a valid tree') : invariant(false) : void 0;\n }\n\n return blockMap;\n};\n\nvar decodeRawEntityMap = function decodeRawEntityMap(rawState) {\n var rawEntityMap = rawState.entityMap;\n var entityMap = {}; // TODO: Update this once we completely remove DraftEntity\n\n Object.keys(rawEntityMap).forEach(function (rawEntityKey) {\n var _rawEntityMap$rawEnti = rawEntityMap[rawEntityKey],\n type = _rawEntityMap$rawEnti.type,\n mutability = _rawEntityMap$rawEnti.mutability,\n data = _rawEntityMap$rawEnti.data; // get the key reference to created entity\n\n entityMap[rawEntityKey] = DraftEntity.__create(type, mutability, data || {});\n });\n return entityMap;\n};\n\nvar convertFromRawToDraftState = function convertFromRawToDraftState(rawState) {\n !Array.isArray(rawState.blocks) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentState') : invariant(false) : void 0; // decode entities\n\n var entityMap = decodeRawEntityMap(rawState); // decode blockMap\n\n var blockMap = decodeRawBlocks(rawState, entityMap); // create initial selection\n\n var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n return new ContentState({\n blockMap: blockMap,\n entityMap: entityMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n};\n\nmodule.exports = convertFromRawToDraftState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List;\n\nfunction createCharacterList(inlineStyles, entities) {\n var characterArray = inlineStyles.map(function (style, ii) {\n var entity = entities[ii];\n return CharacterMetadata.create({\n style: style,\n entity: entity\n });\n });\n return List(characterArray);\n}\n\nmodule.exports = createCharacterList;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar substr = UnicodeUtils.substr;\n/**\n * Convert to native JavaScript string lengths to determine ranges.\n */\n\nfunction decodeEntityRanges(text, ranges) {\n var entities = Array(text.length).fill(null);\n\n if (ranges) {\n ranges.forEach(function (range) {\n // Using Unicode-enabled substrings converted to JavaScript lengths,\n // fill the output array with entity keys.\n var start = substr(text, 0, range.offset).length;\n var end = start + substr(text, range.offset, range.length).length;\n\n for (var ii = start; ii < end; ii++) {\n entities[ii] = range.key;\n }\n });\n }\n\n return entities;\n}\n\nmodule.exports = decodeEntityRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar _require = require(\"immutable\"),\n OrderedSet = _require.OrderedSet;\n\nvar substr = UnicodeUtils.substr;\nvar EMPTY_SET = OrderedSet();\n/**\n * Convert to native JavaScript string lengths to determine ranges.\n */\n\nfunction decodeInlineStyleRanges(text, ranges) {\n var styles = Array(text.length).fill(EMPTY_SET);\n\n if (ranges) {\n ranges.forEach(function (range) {\n var cursor = substr(text, 0, range.offset).length;\n var end = cursor + substr(text, range.offset, range.length).length;\n\n while (cursor < end) {\n styles[cursor] = styles[cursor].add(range.style);\n cursor++;\n }\n });\n }\n\n return styles;\n}\n\nmodule.exports = decodeInlineStyleRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Provides utilities for handling draftjs keys.\n *\n * @emails oncall+draft_js\n * \n * @format\n */\n'use strict';\n\nfunction notEmptyKey(key) {\n return key != null && key != '';\n}\n\nmodule.exports = {\n notEmptyKey: notEmptyKey\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar isSelectionAtLeafStart = require(\"./isSelectionAtLeafStart\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar setImmediate = require(\"fbjs/lib/setImmediate\"); // When nothing is focused, Firefox regards two characters, `'` and `/`, as\n// commands that should open and focus the \"quickfind\" search bar. This should\n// *never* happen while a contenteditable is focused, but as of v28, it\n// sometimes does, even when the keypress event target is the contenteditable.\n// This breaks the input. Special case these characters to ensure that when\n// they are typed, we prevent default on the event to make sure not to\n// trigger quickfind.\n\n\nvar FF_QUICKFIND_CHAR = \"'\";\nvar FF_QUICKFIND_LINK_CHAR = '/';\nvar isFirefox = UserAgent.isBrowser('Firefox');\n\nfunction mustPreventDefaultForCharacter(character) {\n return isFirefox && (character == FF_QUICKFIND_CHAR || character == FF_QUICKFIND_LINK_CHAR);\n}\n/**\n * Replace the current selection with the specified text string, with the\n * inline style and entity key applied to the newly inserted text.\n */\n\n\nfunction replaceText(editorState, text, inlineStyle, entityKey, forceSelection) {\n var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), text, inlineStyle, entityKey);\n return EditorState.push(editorState, contentState, 'insert-characters', forceSelection);\n}\n/**\n * When `onBeforeInput` executes, the browser is attempting to insert a\n * character into the editor. Apply this character data to the document,\n * allowing native insertion if possible.\n *\n * Native insertion is encouraged in order to limit re-rendering and to\n * preserve spellcheck highlighting, which disappears or flashes if re-render\n * occurs on the relevant text nodes.\n */\n\n\nfunction editOnBeforeInput(editor, e) {\n if (editor._pendingStateFromBeforeInput !== undefined) {\n editor.update(editor._pendingStateFromBeforeInput);\n editor._pendingStateFromBeforeInput = undefined;\n }\n\n var editorState = editor._latestEditorState;\n var chars = e.data; // In some cases (ex: IE ideographic space insertion) no character data\n // is provided. There's nothing to do when this happens.\n\n if (!chars) {\n return;\n } // Allow the top-level component to handle the insertion manually. This is\n // useful when triggering interesting behaviors for a character insertion,\n // Simple examples: replacing a raw text ':)' with a smile emoji or image\n // decorator, or setting a block to be a list item after typing '- ' at the\n // start of the block.\n\n\n if (editor.props.handleBeforeInput && isEventHandled(editor.props.handleBeforeInput(chars, editorState, e.timeStamp))) {\n e.preventDefault();\n return;\n } // If selection is collapsed, conditionally allow native behavior. This\n // reduces re-renders and preserves spellcheck highlighting. If the selection\n // is not collapsed, we will re-render.\n\n\n var selection = editorState.getSelection();\n var selectionStart = selection.getStartOffset();\n var anchorKey = selection.getAnchorKey();\n\n if (!selection.isCollapsed()) {\n e.preventDefault();\n editor.update(replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection()), true));\n return;\n }\n\n var newEditorState = replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection()), false); // Bunch of different cases follow where we need to prevent native insertion.\n\n var mustPreventNative = false;\n\n if (!mustPreventNative) {\n // Browsers tend to insert text in weird places in the DOM when typing at\n // the start of a leaf, so we'll handle it ourselves.\n mustPreventNative = isSelectionAtLeafStart(editor._latestCommittedEditorState);\n }\n\n if (!mustPreventNative) {\n // Let's say we have a decorator that highlights hashtags. In many cases\n // we need to prevent native behavior and rerender ourselves --\n // particularly, any case *except* where the inserted characters end up\n // anywhere except exactly where you put them.\n //\n // Using [] to denote a decorated leaf, some examples:\n //\n // 1. 'hi #' and append 'f'\n // desired rendering: 'hi [#f]'\n // native rendering would be: 'hi #f' (incorrect)\n //\n // 2. 'x [#foo]' and insert '#' before 'f'\n // desired rendering: 'x #[#foo]'\n // native rendering would be: 'x [##foo]' (incorrect)\n //\n // 3. '[#foobar]' and insert ' ' between 'foo' and 'bar'\n // desired rendering: '[#foo] bar'\n // native rendering would be: '[#foo bar]' (incorrect)\n //\n // 4. '[#foo]' and delete '#' [won't use this beforeinput codepath though]\n // desired rendering: 'foo'\n // native rendering would be: '[foo]' (incorrect)\n //\n // 5. '[#foo]' and append 'b'\n // desired rendering: '[#foob]'\n // native rendering would be: '[#foob]'\n // (native insertion here would be ok for decorators like simple spans,\n // but not more complex decorators. To be safe, we need to prevent it.)\n //\n // It is safe to allow native insertion if and only if the full list of\n // decorator ranges matches what we expect native insertion to give, and\n // the range lengths have not changed. We don't need to compare the content\n // because the only possible mutation to consider here is inserting plain\n // text and decorators can't affect text content.\n var oldBlockTree = editorState.getBlockTree(anchorKey);\n var newBlockTree = newEditorState.getBlockTree(anchorKey);\n mustPreventNative = oldBlockTree.size !== newBlockTree.size || oldBlockTree.zip(newBlockTree).some(function (_ref) {\n var oldLeafSet = _ref[0],\n newLeafSet = _ref[1];\n // selectionStart is guaranteed to be selectionEnd here\n var oldStart = oldLeafSet.get('start');\n var adjustedStart = oldStart + (oldStart >= selectionStart ? chars.length : 0);\n var oldEnd = oldLeafSet.get('end');\n var adjustedEnd = oldEnd + (oldEnd >= selectionStart ? chars.length : 0);\n var newStart = newLeafSet.get('start');\n var newEnd = newLeafSet.get('end');\n var newDecoratorKey = newLeafSet.get('decoratorKey');\n return (// Different decorators\n oldLeafSet.get('decoratorKey') !== newDecoratorKey || // Different number of inline styles\n oldLeafSet.get('leaves').size !== newLeafSet.get('leaves').size || // Different effective decorator position\n adjustedStart !== newStart || adjustedEnd !== newEnd || // Decorator already existed and its length changed\n newDecoratorKey != null && newEnd - newStart !== oldEnd - oldStart\n );\n });\n }\n\n if (!mustPreventNative) {\n mustPreventNative = mustPreventDefaultForCharacter(chars);\n }\n\n if (!mustPreventNative) {\n mustPreventNative = nullthrows(newEditorState.getDirectionMap()).get(anchorKey) !== nullthrows(editorState.getDirectionMap()).get(anchorKey);\n }\n\n if (mustPreventNative) {\n e.preventDefault();\n newEditorState = EditorState.set(newEditorState, {\n forceSelection: true\n });\n editor.update(newEditorState);\n return;\n } // We made it all the way! Let the browser do its thing and insert the char.\n\n\n newEditorState = EditorState.set(newEditorState, {\n nativelyRenderedContent: newEditorState.getCurrentContent()\n }); // The native event is allowed to occur. To allow user onChange handlers to\n // change the inserted text, we wait until the text is actually inserted\n // before we actually update our state. That way when we rerender, the text\n // we see in the DOM will already have been inserted properly.\n\n editor._pendingStateFromBeforeInput = newEditorState;\n setImmediate(function () {\n if (editor._pendingStateFromBeforeInput !== undefined) {\n editor.update(editor._pendingStateFromBeforeInput);\n editor._pendingStateFromBeforeInput = undefined;\n }\n });\n}\n\nmodule.exports = editOnBeforeInput;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar containsNode = require(\"fbjs/lib/containsNode\");\n\nvar getActiveElement = require(\"fbjs/lib/getActiveElement\");\n\nfunction editOnBlur(editor, e) {\n // In a contentEditable element, when you select a range and then click\n // another active element, this does trigger a `blur` event but will not\n // remove the DOM selection from the contenteditable.\n // This is consistent across all browsers, but we prefer that the editor\n // behave like a textarea, where a `blur` event clears the DOM selection.\n // We therefore force the issue to be certain, checking whether the active\n // element is `body` to force it when blurring occurs within the window (as\n // opposed to clicking to another tab or window).\n var ownerDocument = e.currentTarget.ownerDocument;\n\n if ( // This ESLint rule conflicts with `sketchy-null-bool` flow check\n // eslint-disable-next-line no-extra-boolean-cast\n !Boolean(editor.props.preserveSelectionOnBlur) && getActiveElement(ownerDocument) === ownerDocument.body) {\n var _selection = ownerDocument.defaultView.getSelection();\n\n var editorNode = editor.editor;\n\n if (_selection.rangeCount === 1 && containsNode(editorNode, _selection.anchorNode) && containsNode(editorNode, _selection.focusNode)) {\n _selection.removeAllRanges();\n }\n }\n\n var editorState = editor._latestEditorState;\n var currentSelection = editorState.getSelection();\n\n if (!currentSelection.getHasFocus()) {\n return;\n }\n\n var selection = currentSelection.set('hasFocus', false);\n editor.props.onBlur && editor.props.onBlur(e);\n editor.update(EditorState.acceptSelection(editorState, selection));\n}\n\nmodule.exports = editOnBlur;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * The user has begun using an IME input system. Switching to `composite` mode\n * allows handling composition input and disables other edit behavior.\n */\n\n\nfunction editOnCompositionStart(editor, e) {\n editor.setMode('composite');\n editor.update(EditorState.set(editor._latestEditorState, {\n inCompositionMode: true\n })); // Allow composition handler to interpret the compositionstart event\n\n editor._onCompositionStart(e);\n}\n\nmodule.exports = editOnCompositionStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getFragmentFromSelection = require(\"./getFragmentFromSelection\");\n/**\n * If we have a selection, create a ContentState fragment and store\n * it in our internal clipboard. Subsequent paste events will use this\n * fragment if no external clipboard data is supplied.\n */\n\n\nfunction editOnCopy(editor, e) {\n var editorState = editor._latestEditorState;\n var selection = editorState.getSelection(); // No selection, so there's nothing to copy.\n\n if (selection.isCollapsed()) {\n e.preventDefault();\n return;\n }\n\n editor.setClipboard(getFragmentFromSelection(editor._latestEditorState));\n}\n\nmodule.exports = editOnCopy;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar getFragmentFromSelection = require(\"./getFragmentFromSelection\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar isNode = require(\"./isInstanceOfNode\");\n/**\n * On `cut` events, native behavior is allowed to occur so that the system\n * clipboard is set properly. This means that we need to take steps to recover\n * the editor DOM state after the `cut` has occurred in order to maintain\n * control of the component.\n *\n * In addition, we can keep a copy of the removed fragment, including all\n * styles and entities, for use as an internal paste.\n */\n\n\nfunction editOnCut(editor, e) {\n var editorState = editor._latestEditorState;\n var selection = editorState.getSelection();\n var element = e.target;\n var scrollPosition; // No selection, so there's nothing to cut.\n\n if (selection.isCollapsed()) {\n e.preventDefault();\n return;\n } // Track the current scroll position so that it can be forced back in place\n // after the editor regains control of the DOM.\n\n\n if (isNode(element)) {\n var node = element;\n scrollPosition = getScrollPosition(Style.getScrollParent(node));\n }\n\n var fragment = getFragmentFromSelection(editorState);\n editor.setClipboard(fragment); // Set `cut` mode to disable all event handling temporarily.\n\n editor.setMode('cut'); // Let native `cut` behavior occur, then recover control.\n\n setTimeout(function () {\n editor.restoreEditorDOM(scrollPosition);\n editor.exitCurrentMode();\n editor.update(removeFragment(editorState));\n }, 0);\n}\n\nfunction removeFragment(editorState) {\n var newContent = DraftModifier.removeRange(editorState.getCurrentContent(), editorState.getSelection(), 'forward');\n return EditorState.push(editorState, newContent, 'remove-range');\n}\n\nmodule.exports = editOnCut;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Drag behavior has begun from outside the editor element.\n */\nfunction editOnDragOver(editor, e) {\n editor.setMode('drag');\n e.preventDefault();\n}\n\nmodule.exports = editOnDragOver;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * A `dragstart` event has begun within the text editor component.\n */\nfunction editOnDragStart(editor) {\n editor._internalDrag = true;\n editor.setMode('drag');\n}\n\nmodule.exports = editOnDragStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nfunction editOnFocus(editor, e) {\n var editorState = editor._latestEditorState;\n var currentSelection = editorState.getSelection();\n\n if (currentSelection.getHasFocus()) {\n return;\n }\n\n var selection = currentSelection.set('hasFocus', true);\n editor.props.onFocus && editor.props.onFocus(e); // When the tab containing this text editor is hidden and the user does a\n // find-in-page in a _different_ tab, Chrome on Mac likes to forget what the\n // selection was right after sending this focus event and (if you let it)\n // moves the cursor back to the beginning of the editor, so we force the\n // selection here instead of simply accepting it in order to preserve the\n // old cursor position. See https://crbug.com/540004.\n // But it looks like this is fixed in Chrome 60.0.3081.0.\n // Other browsers also don't have this bug, so we prefer to acceptSelection\n // when possible, to ensure that unfocusing and refocusing a Draft editor\n // doesn't preserve the selection, matching how textareas work.\n\n if (UserAgent.isBrowser('Chrome < 60.0.3081.0')) {\n editor.update(EditorState.forceSelection(editorState, selection));\n } else {\n editor.update(EditorState.acceptSelection(editorState, selection));\n }\n}\n\nmodule.exports = editOnFocus;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar _require = require(\"./draftKeyUtils\"),\n notEmptyKey = _require.notEmptyKey;\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar keyCommandPlainBackspace = require(\"./keyCommandPlainBackspace\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isGecko = UserAgent.isEngine('Gecko');\nvar DOUBLE_NEWLINE = '\\n\\n';\n\nfunction onInputType(inputType, editorState) {\n switch (inputType) {\n case 'deleteContentBackward':\n return keyCommandPlainBackspace(editorState);\n }\n\n return editorState;\n}\n/**\n * This function serves two purposes\n *\n * 1. To update the editorState and call onChange method with the new\n * editorState. This editorState is calculated in editOnBeforeInput but the\n * onChange method is not called with the new state until this method does it.\n * It is done to handle a specific case where certain character inputs might\n * be replaced with something else. E.g. snippets ('rc' might be replaced\n * with boilerplate code for react component). More information on the\n * exact problem can be found here -\n * https://github.com/facebook/draft-js/commit/07892ba479bd4dfc6afd1e0ed179aaf51cd138b1\n *\n * 2. intended to handle spellcheck and autocorrect changes,\n * which occur in the DOM natively without any opportunity to observe or\n * interpret the changes before they occur.\n *\n * The `input` event fires in contentEditable elements reliably for non-IE\n * browsers, immediately after changes occur to the editor DOM. Since our other\n * handlers override or otherwise handle cover other varieties of text input,\n * the DOM state should match the model in all controlled input cases. Thus,\n * when an `input` change leads to a DOM/model mismatch, the change should be\n * due to a spellcheck change, and we can incorporate it into our model.\n */\n\n\nfunction editOnInput(editor, e) {\n if (editor._pendingStateFromBeforeInput !== undefined) {\n editor.update(editor._pendingStateFromBeforeInput);\n editor._pendingStateFromBeforeInput = undefined;\n } // at this point editor is not null for sure (after input)\n\n\n var castedEditorElement = editor.editor;\n var domSelection = castedEditorElement.ownerDocument.defaultView.getSelection();\n var anchorNode = domSelection.anchorNode,\n isCollapsed = domSelection.isCollapsed;\n var isNotTextOrElementNode = (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) !== Node.TEXT_NODE && (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) !== Node.ELEMENT_NODE;\n\n if (anchorNode == null || isNotTextOrElementNode) {\n // TODO: (t16149272) figure out context for this change\n return;\n }\n\n if (anchorNode.nodeType === Node.TEXT_NODE && (anchorNode.previousSibling !== null || anchorNode.nextSibling !== null)) {\n // When typing at the beginning of a visual line, Chrome splits the text\n // nodes into two. Why? No one knows. This commit is suspicious:\n // https://chromium.googlesource.com/chromium/src/+/a3b600981286b135632371477f902214c55a1724\n // To work around, we'll merge the sibling text nodes back into this one.\n var span = anchorNode.parentNode;\n\n if (span == null) {\n // Handle null-parent case.\n return;\n }\n\n anchorNode.nodeValue = span.textContent;\n\n for (var child = span.firstChild; child != null; child = child.nextSibling) {\n if (child !== anchorNode) {\n span.removeChild(child);\n }\n }\n }\n\n var domText = anchorNode.textContent;\n var editorState = editor._latestEditorState;\n var offsetKey = nullthrows(findAncestorOffsetKey(anchorNode));\n\n var _DraftOffsetKey$decod = DraftOffsetKey.decode(offsetKey),\n blockKey = _DraftOffsetKey$decod.blockKey,\n decoratorKey = _DraftOffsetKey$decod.decoratorKey,\n leafKey = _DraftOffsetKey$decod.leafKey;\n\n var _editorState$getBlock = editorState.getBlockTree(blockKey).getIn([decoratorKey, 'leaves', leafKey]),\n start = _editorState$getBlock.start,\n end = _editorState$getBlock.end;\n\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(blockKey);\n var modelText = block.getText().slice(start, end); // Special-case soft newlines here. If the DOM text ends in a soft newline,\n // we will have manually inserted an extra soft newline in DraftEditorLeaf.\n // We want to remove this extra newline for the purpose of our comparison\n // of DOM and model text.\n\n if (domText.endsWith(DOUBLE_NEWLINE)) {\n domText = domText.slice(0, -1);\n } // No change -- the DOM is up to date. Nothing to do here.\n\n\n if (domText === modelText) {\n // This can be buggy for some Android keyboards because they don't fire\n // standard onkeydown/pressed events and only fired editOnInput\n // so domText is already changed by the browser and ends up being equal\n // to modelText unexpectedly.\n // Newest versions of Android support the dom-inputevent-inputtype\n // and we can use the `inputType` to properly apply the state changes.\n\n /* $FlowFixMe[prop-missing] inputType is only defined on a draft of a\n * standard. https://w3c.github.io/input-events/#dom-inputevent-inputtype\n */\n var inputType = e.nativeEvent.inputType;\n\n if (inputType) {\n var newEditorState = onInputType(inputType, editorState);\n\n if (newEditorState !== editorState) {\n editor.restoreEditorDOM();\n editor.update(newEditorState);\n return;\n }\n }\n\n return;\n }\n\n var selection = editorState.getSelection(); // We'll replace the entire leaf with the text content of the target.\n\n var targetRange = selection.merge({\n anchorOffset: start,\n focusOffset: end,\n isBackward: false\n });\n var entityKey = block.getEntityAt(start);\n var entity = notEmptyKey(entityKey) ? content.getEntity(entityKey) : null;\n var entityType = entity != null ? entity.getMutability() : null;\n var preserveEntity = entityType === 'MUTABLE'; // Immutable or segmented entities cannot properly be handled by the\n // default browser undo, so we have to use a different change type to\n // force using our internal undo method instead of falling through to the\n // native browser undo.\n\n var changeType = preserveEntity ? 'spellcheck-change' : 'apply-entity';\n var newContent = DraftModifier.replaceText(content, targetRange, domText, block.getInlineStyleAt(start), preserveEntity ? block.getEntityAt(start) : null);\n var anchorOffset, focusOffset, startOffset, endOffset;\n\n if (isGecko) {\n // Firefox selection does not change while the context menu is open, so\n // we preserve the anchor and focus values of the DOM selection.\n anchorOffset = domSelection.anchorOffset;\n focusOffset = domSelection.focusOffset;\n startOffset = start + Math.min(anchorOffset, focusOffset);\n endOffset = startOffset + Math.abs(anchorOffset - focusOffset);\n anchorOffset = startOffset;\n focusOffset = endOffset;\n } else {\n // Browsers other than Firefox may adjust DOM selection while the context\n // menu is open, and Safari autocorrect is prone to providing an inaccurate\n // DOM selection. Don't trust it. Instead, use our existing SelectionState\n // and adjust it based on the number of characters changed during the\n // mutation.\n var charDelta = domText.length - modelText.length;\n startOffset = selection.getStartOffset();\n endOffset = selection.getEndOffset();\n anchorOffset = isCollapsed ? endOffset + charDelta : startOffset;\n focusOffset = endOffset + charDelta;\n } // Segmented entities are completely or partially removed when their\n // text content changes. For this case we do not want any text to be selected\n // after the change, so we are not merging the selection.\n\n\n var contentWithAdjustedDOMSelection = newContent.merge({\n selectionBefore: content.getSelectionAfter(),\n selectionAfter: selection.merge({\n anchorOffset: anchorOffset,\n focusOffset: focusOffset\n })\n });\n editor.update(EditorState.push(editorState, contentWithAdjustedDOMSelection, changeType));\n}\n\nmodule.exports = editOnInput;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar SecondaryClipboard = require(\"./SecondaryClipboard\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar keyCommandBackspaceToStartOfLine = require(\"./keyCommandBackspaceToStartOfLine\");\n\nvar keyCommandBackspaceWord = require(\"./keyCommandBackspaceWord\");\n\nvar keyCommandDeleteWord = require(\"./keyCommandDeleteWord\");\n\nvar keyCommandInsertNewline = require(\"./keyCommandInsertNewline\");\n\nvar keyCommandMoveSelectionToEndOfBlock = require(\"./keyCommandMoveSelectionToEndOfBlock\");\n\nvar keyCommandMoveSelectionToStartOfBlock = require(\"./keyCommandMoveSelectionToStartOfBlock\");\n\nvar keyCommandPlainBackspace = require(\"./keyCommandPlainBackspace\");\n\nvar keyCommandPlainDelete = require(\"./keyCommandPlainDelete\");\n\nvar keyCommandTransposeCharacters = require(\"./keyCommandTransposeCharacters\");\n\nvar keyCommandUndo = require(\"./keyCommandUndo\");\n\nvar isOptionKeyCommand = KeyBindingUtil.isOptionKeyCommand;\nvar isChrome = UserAgent.isBrowser('Chrome');\n/**\n * Map a `DraftEditorCommand` command value to a corresponding function.\n */\n\nfunction onKeyCommand(command, editorState, e) {\n switch (command) {\n case 'redo':\n return EditorState.redo(editorState);\n\n case 'delete':\n return keyCommandPlainDelete(editorState);\n\n case 'delete-word':\n return keyCommandDeleteWord(editorState);\n\n case 'backspace':\n return keyCommandPlainBackspace(editorState);\n\n case 'backspace-word':\n return keyCommandBackspaceWord(editorState);\n\n case 'backspace-to-start-of-line':\n return keyCommandBackspaceToStartOfLine(editorState, e);\n\n case 'split-block':\n return keyCommandInsertNewline(editorState);\n\n case 'transpose-characters':\n return keyCommandTransposeCharacters(editorState);\n\n case 'move-selection-to-start-of-block':\n return keyCommandMoveSelectionToStartOfBlock(editorState);\n\n case 'move-selection-to-end-of-block':\n return keyCommandMoveSelectionToEndOfBlock(editorState);\n\n case 'secondary-cut':\n return SecondaryClipboard.cut(editorState);\n\n case 'secondary-paste':\n return SecondaryClipboard.paste(editorState);\n\n default:\n return editorState;\n }\n}\n/**\n * Intercept keydown behavior to handle keys and commands manually, if desired.\n *\n * Keydown combinations may be mapped to `DraftCommand` values, which may\n * correspond to command functions that modify the editor or its contents.\n *\n * See `getDefaultKeyBinding` for defaults. Alternatively, the top-level\n * component may provide a custom mapping via the `keyBindingFn` prop.\n */\n\n\nfunction editOnKeyDown(editor, e) {\n var keyCode = e.which;\n var editorState = editor._latestEditorState;\n\n function callDeprecatedHandler(handlerName) {\n var deprecatedHandler = editor.props[handlerName];\n\n if (deprecatedHandler) {\n deprecatedHandler(e);\n return true;\n } else {\n return false;\n }\n }\n\n switch (keyCode) {\n case Keys.RETURN:\n e.preventDefault(); // The top-level component may manually handle newline insertion. If\n // no special handling is performed, fall through to command handling.\n\n if (editor.props.handleReturn && isEventHandled(editor.props.handleReturn(e, editorState))) {\n return;\n }\n\n break;\n\n case Keys.ESC:\n e.preventDefault();\n\n if (callDeprecatedHandler('onEscape')) {\n return;\n }\n\n break;\n\n case Keys.TAB:\n if (callDeprecatedHandler('onTab')) {\n return;\n }\n\n break;\n\n case Keys.UP:\n if (callDeprecatedHandler('onUpArrow')) {\n return;\n }\n\n break;\n\n case Keys.RIGHT:\n if (callDeprecatedHandler('onRightArrow')) {\n return;\n }\n\n break;\n\n case Keys.DOWN:\n if (callDeprecatedHandler('onDownArrow')) {\n return;\n }\n\n break;\n\n case Keys.LEFT:\n if (callDeprecatedHandler('onLeftArrow')) {\n return;\n }\n\n break;\n\n case Keys.SPACE:\n // Prevent Chrome on OSX behavior where option + space scrolls.\n if (isChrome && isOptionKeyCommand(e)) {\n e.preventDefault();\n }\n\n }\n\n var command = editor.props.keyBindingFn(e); // If no command is specified, allow keydown event to continue.\n\n if (command == null || command === '') {\n if (keyCode === Keys.SPACE && isChrome && isOptionKeyCommand(e)) {\n // The default keydown event has already been prevented in order to stop\n // Chrome from scrolling. Insert a nbsp into the editor as OSX would for\n // other browsers.\n var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), \"\\xA0\");\n editor.update(EditorState.push(editorState, contentState, 'insert-characters'));\n }\n\n return;\n }\n\n if (command === 'undo') {\n // Since undo requires some special updating behavior to keep the editor\n // in sync, handle it separately.\n keyCommandUndo(e, editorState, editor.update);\n return;\n } // At this point, we know that we're handling a command of some kind, so\n // we don't want to insert a character following the keydown.\n\n\n e.preventDefault(); // Allow components higher up the tree to handle the command first.\n\n if (editor.props.handleKeyCommand && isEventHandled(editor.props.handleKeyCommand(command, editorState, e.timeStamp))) {\n return;\n }\n\n var newState = onKeyCommand(command, editorState, e);\n\n if (newState !== editorState) {\n editor.update(newState);\n }\n}\n\nmodule.exports = editOnKeyDown;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar DataTransfer = require(\"fbjs/lib/DataTransfer\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftPasteProcessor = require(\"./DraftPasteProcessor\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar RichTextEditorUtil = require(\"./RichTextEditorUtil\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar getTextContentFromFiles = require(\"./getTextContentFromFiles\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar splitTextIntoTextBlocks = require(\"./splitTextIntoTextBlocks\");\n/**\n * Paste content.\n */\n\n\nfunction editOnPaste(editor, e) {\n e.preventDefault();\n var data = new DataTransfer(e.clipboardData); // Get files, unless this is likely to be a string the user wants inline.\n\n if (!data.isRichText()) {\n var files = data.getFiles();\n var defaultFileText = data.getText();\n\n if (files.length > 0) {\n // Allow customized paste handling for images, etc. Otherwise, fall\n // through to insert text contents into the editor.\n if (editor.props.handlePastedFiles && isEventHandled(editor.props.handlePastedFiles(files))) {\n return;\n }\n /* $FlowFixMe[incompatible-call] This comment suppresses an error found\n * DataTransfer was typed. getFiles() returns an array of , not Blob */\n\n\n getTextContentFromFiles(files, function (\n /*string*/\n fileText) {\n fileText = fileText || defaultFileText;\n\n if (!fileText) {\n return;\n }\n\n var editorState = editor._latestEditorState;\n var blocks = splitTextIntoTextBlocks(fileText);\n var character = CharacterMetadata.create({\n style: editorState.getCurrentInlineStyle(),\n entity: getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection())\n });\n var currentBlockType = RichTextEditorUtil.getCurrentBlockType(editorState);\n var text = DraftPasteProcessor.processText(blocks, character, currentBlockType);\n var fragment = BlockMapBuilder.createFromArray(text);\n var withInsertedText = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), fragment);\n editor.update(EditorState.push(editorState, withInsertedText, 'insert-fragment'));\n });\n return;\n }\n }\n\n var textBlocks = [];\n var text = data.getText();\n var html = data.getHTML();\n var editorState = editor._latestEditorState;\n\n if (editor.props.formatPastedText) {\n var _editor$props$formatP = editor.props.formatPastedText(text, html),\n formattedText = _editor$props$formatP.text,\n formattedHtml = _editor$props$formatP.html;\n\n text = formattedText;\n html = formattedHtml;\n }\n\n if (editor.props.handlePastedText && isEventHandled(editor.props.handlePastedText(text, html, editorState))) {\n return;\n }\n\n if (text) {\n textBlocks = splitTextIntoTextBlocks(text);\n }\n\n if (!editor.props.stripPastedStyles) {\n // If the text from the paste event is rich content that matches what we\n // already have on the internal clipboard, assume that we should just use\n // the clipboard fragment for the paste. This will allow us to preserve\n // styling and entities, if any are present. Note that newlines are\n // stripped during comparison -- this is because copy/paste within the\n // editor in Firefox and IE will not include empty lines. The resulting\n // paste will preserve the newlines correctly.\n var internalClipboard = editor.getClipboard();\n\n if (!editor.props.formatPastedText && data.isRichText() && internalClipboard) {\n var _html;\n\n if ( // If the editorKey is present in the pasted HTML, it should be safe to\n // assume this is an internal paste.\n ((_html = html) === null || _html === void 0 ? void 0 : _html.indexOf(editor.getEditorKey())) !== -1 || // The copy may have been made within a single block, in which case the\n // editor key won't be part of the paste. In this case, just check\n // whether the pasted text matches the internal clipboard.\n textBlocks.length === 1 && internalClipboard.size === 1 && internalClipboard.first().getText() === text) {\n editor.update(insertFragment(editor._latestEditorState, internalClipboard));\n return;\n }\n } else if (internalClipboard && data.types.includes('com.apple.webarchive') && !data.types.includes('text/html') && areTextBlocksAndClipboardEqual(textBlocks, internalClipboard)) {\n // Safari does not properly store text/html in some cases.\n // Use the internalClipboard if present and equal to what is on\n // the clipboard. See https://bugs.webkit.org/show_bug.cgi?id=19893.\n editor.update(insertFragment(editor._latestEditorState, internalClipboard));\n return;\n } // If there is html paste data, try to parse that.\n\n\n if (html) {\n var htmlFragment = DraftPasteProcessor.processHTML(html, editor.props.blockRenderMap);\n\n if (htmlFragment) {\n var contentBlocks = htmlFragment.contentBlocks,\n entityMap = htmlFragment.entityMap;\n\n if (contentBlocks) {\n var htmlMap = BlockMapBuilder.createFromArray(contentBlocks);\n editor.update(insertFragment(editor._latestEditorState, htmlMap, entityMap));\n return;\n }\n }\n } // Otherwise, create a new fragment from our pasted text. Also\n // empty the internal clipboard, since it's no longer valid.\n\n\n editor.setClipboard(null);\n }\n\n if (textBlocks.length) {\n var character = CharacterMetadata.create({\n style: editorState.getCurrentInlineStyle(),\n entity: getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection())\n });\n var currentBlockType = RichTextEditorUtil.getCurrentBlockType(editorState);\n var textFragment = DraftPasteProcessor.processText(textBlocks, character, currentBlockType);\n var textMap = BlockMapBuilder.createFromArray(textFragment);\n editor.update(insertFragment(editor._latestEditorState, textMap));\n }\n}\n\nfunction insertFragment(editorState, fragment, entityMap) {\n var newContent = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), fragment); // TODO: merge the entity map once we stop using DraftEntity\n // like this:\n // const mergedEntityMap = newContent.getEntityMap().merge(entityMap);\n\n return EditorState.push(editorState, newContent.set('entityMap', entityMap), 'insert-fragment');\n}\n\nfunction areTextBlocksAndClipboardEqual(textBlocks, blockMap) {\n return textBlocks.length === blockMap.size && blockMap.valueSeq().every(function (block, ii) {\n return block.getText() === textBlocks[ii];\n });\n}\n\nmodule.exports = editOnPaste;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftJsDebugLogging = require(\"./DraftJsDebugLogging\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentEditableContainer = require(\"./getContentEditableContainer\");\n\nvar getDraftEditorSelection = require(\"./getDraftEditorSelection\");\n\nfunction editOnSelect(editor) {\n if (editor._blockSelectEvents || editor._latestEditorState !== editor.props.editorState) {\n if (editor._blockSelectEvents) {\n var _editorState = editor.props.editorState;\n\n var selectionState = _editorState.getSelection();\n\n DraftJsDebugLogging.logBlockedSelectionEvent({\n // For now I don't think we need any other info\n anonymizedDom: 'N/A',\n extraParams: JSON.stringify({\n stacktrace: new Error().stack\n }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n }\n\n return;\n }\n\n var editorState = editor.props.editorState;\n var documentSelection = getDraftEditorSelection(editorState, getContentEditableContainer(editor));\n var updatedSelectionState = documentSelection.selectionState;\n\n if (updatedSelectionState !== editorState.getSelection()) {\n if (documentSelection.needsRecovery) {\n editorState = EditorState.forceSelection(editorState, updatedSelectionState);\n } else {\n editorState = EditorState.acceptSelection(editorState, updatedSelectionState);\n }\n\n editor.update(editorState);\n }\n}\n\nmodule.exports = editOnSelect;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftStringKey = require(\"./DraftStringKey\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar strlen = UnicodeUtils.strlen;\n/**\n * Convert to UTF-8 character counts for storage.\n */\n\nfunction encodeEntityRanges(block, storageMap) {\n var encoded = [];\n block.findEntityRanges(function (character) {\n return !!character.getEntity();\n }, function (\n /*number*/\n start,\n /*number*/\n end) {\n var text = block.getText();\n var key = block.getEntityAt(start);\n encoded.push({\n offset: strlen(text.slice(0, start)),\n length: strlen(text.slice(start, end)),\n // Encode the key as a number for range storage.\n key: Number(storageMap[DraftStringKey.stringify(key)])\n });\n });\n return encoded;\n}\n\nmodule.exports = encodeEntityRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar areEqual = function areEqual(a, b) {\n return a === b;\n};\n\nvar isTruthy = function isTruthy(a) {\n return !!a;\n};\n\nvar EMPTY_ARRAY = [];\n/**\n * Helper function for getting encoded styles for each inline style. Convert\n * to UTF-8 character counts for storage.\n */\n\nfunction getEncodedInlinesForType(block, styleList, styleToEncode) {\n var ranges = []; // Obtain an array with ranges for only the specified style.\n\n var filteredInlines = styleList.map(function (style) {\n return style.has(styleToEncode);\n }).toList();\n findRangesImmutable(filteredInlines, areEqual, // We only want to keep ranges with nonzero style values.\n isTruthy, function (start, end) {\n var text = block.getText();\n ranges.push({\n offset: UnicodeUtils.strlen(text.slice(0, start)),\n length: UnicodeUtils.strlen(text.slice(start, end)),\n style: styleToEncode\n });\n });\n return ranges;\n}\n/*\n * Retrieve the encoded arrays of inline styles, with each individual style\n * treated separately.\n */\n\n\nfunction encodeInlineStyleRanges(block) {\n var styleList = block.getCharacterList().map(function (c) {\n return c.getStyle();\n }).toList();\n var ranges = styleList.flatten().toSet().map(function (style) {\n return getEncodedInlinesForType(block, styleList, style);\n });\n return Array.prototype.concat.apply(EMPTY_ARRAY, ranges.toJS());\n}\n\nmodule.exports = encodeInlineStyleRanges;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getRangeClientRects = require(\"./getRangeClientRects\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Return the computed line height, in pixels, for the provided element.\n */\n\n\nfunction getLineHeightPx(element) {\n var computed = getComputedStyle(element);\n var correctDocument = getCorrectDocumentFromNode(element);\n var div = correctDocument.createElement('div');\n div.style.fontFamily = computed.fontFamily;\n div.style.fontSize = computed.fontSize;\n div.style.fontStyle = computed.fontStyle;\n div.style.fontWeight = computed.fontWeight;\n div.style.lineHeight = computed.lineHeight;\n div.style.position = 'absolute';\n div.textContent = 'M';\n var documentBody = correctDocument.body;\n !documentBody ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing document.body') : invariant(false) : void 0; // forced layout here\n\n documentBody.appendChild(div);\n var rect = div.getBoundingClientRect();\n documentBody.removeChild(div);\n return rect.height;\n}\n/**\n * Return whether every ClientRect in the provided list lies on the same line.\n *\n * We assume that the rects on the same line all contain the baseline, so the\n * lowest top line needs to be above the highest bottom line (i.e., if you were\n * to project the rects onto the y-axis, their intersection would be nonempty).\n *\n * In addition, we require that no two boxes are lineHeight (or more) apart at\n * either top or bottom, which helps protect against false positives for fonts\n * with extremely large glyph heights (e.g., with a font size of 17px, Zapfino\n * produces rects of height 58px!).\n */\n\n\nfunction areRectsOnOneLine(rects, lineHeight) {\n var minTop = Infinity;\n var minBottom = Infinity;\n var maxTop = -Infinity;\n var maxBottom = -Infinity;\n\n for (var ii = 0; ii < rects.length; ii++) {\n var rect = rects[ii];\n\n if (rect.width === 0 || rect.width === 1) {\n // When a range starts or ends a soft wrap, many browsers (Chrome, IE,\n // Safari) include an empty rect on the previous or next line. When the\n // text lies in a container whose position is not integral (e.g., from\n // margin: auto), Safari makes these empty rects have width 1 (instead of\n // 0). Having one-pixel-wide characters seems unlikely (and most browsers\n // report widths in subpixel precision anyway) so it's relatively safe to\n // skip over them.\n continue;\n }\n\n minTop = Math.min(minTop, rect.top);\n minBottom = Math.min(minBottom, rect.bottom);\n maxTop = Math.max(maxTop, rect.top);\n maxBottom = Math.max(maxBottom, rect.bottom);\n }\n\n return maxTop <= minBottom && maxTop - minTop < lineHeight && maxBottom - minBottom < lineHeight;\n}\n/**\n * Return the length of a node, as used by Range offsets.\n */\n\n\nfunction getNodeLength(node) {\n // http://www.w3.org/TR/dom/#concept-node-length\n switch (node.nodeType) {\n case Node.DOCUMENT_TYPE_NODE:\n return 0;\n\n case Node.TEXT_NODE:\n case Node.PROCESSING_INSTRUCTION_NODE:\n case Node.COMMENT_NODE:\n return node.length;\n\n default:\n return node.childNodes.length;\n }\n}\n/**\n * Given a collapsed range, move the start position backwards as far as\n * possible while the range still spans only a single line.\n */\n\n\nfunction expandRangeToStartOfLine(range) {\n !range.collapsed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'expandRangeToStartOfLine: Provided range is not collapsed.') : invariant(false) : void 0;\n range = range.cloneRange();\n var containingElement = range.startContainer;\n\n if (containingElement.nodeType !== 1) {\n containingElement = containingElement.parentNode;\n }\n\n var lineHeight = getLineHeightPx(containingElement); // Imagine our text looks like:\n //
once upon a time, there was a boy\n // who lived under^ the\n // stairs in a small closet.
\n // where the caret represents the cursor. First, we crawl up the tree until\n // the range spans multiple lines (setting the start point to before\n // \"\", then before \"
\"), then at each level we do a search to\n // find the latest point which is still on a previous line. We'll find that\n // the break point is inside the span, then inside the , then in its text\n // node child, the actual break point before \"who\".\n\n var bestContainer = range.endContainer;\n var bestOffset = range.endOffset;\n range.setStart(range.startContainer, 0);\n\n while (areRectsOnOneLine(getRangeClientRects(range), lineHeight)) {\n bestContainer = range.startContainer;\n bestOffset = range.startOffset;\n !bestContainer.parentNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Found unexpected detached subtree when traversing.') : invariant(false) : void 0;\n range.setStartBefore(bestContainer);\n\n if (bestContainer.nodeType === 1 && getComputedStyle(bestContainer).display !== 'inline') {\n // The start of the line is never in a different block-level container.\n break;\n }\n } // In the above example, range now spans from \"
\" to \"under\",\n // bestContainer is
, and bestOffset is 1 (index of inside
)].\n // Picking out which child to recurse into here is a special case since we\n // don't want to check past -- once we find that the final range starts\n // in , we can look at all of its children (and all of their children)\n // to find the break point.\n // At all times, (bestContainer, bestOffset) is the latest single-line start\n // point that we know of.\n\n\n var currentContainer = bestContainer;\n var maxIndexToConsider = bestOffset - 1;\n\n do {\n var nodeValue = currentContainer.nodeValue;\n var ii = maxIndexToConsider;\n\n for (; ii >= 0; ii--) {\n if (nodeValue != null && ii > 0 && UnicodeUtils.isSurrogatePair(nodeValue, ii - 1)) {\n // We're in the middle of a surrogate pair -- skip over so we never\n // return a range with an endpoint in the middle of a code point.\n continue;\n }\n\n range.setStart(currentContainer, ii);\n\n if (areRectsOnOneLine(getRangeClientRects(range), lineHeight)) {\n bestContainer = currentContainer;\n bestOffset = ii;\n } else {\n break;\n }\n }\n\n if (ii === -1 || currentContainer.childNodes.length === 0) {\n // If ii === -1, then (bestContainer, bestOffset), which is equal to\n // (currentContainer, 0), was a single-line start point but a start\n // point before currentContainer wasn't, so the line break seems to\n // have occurred immediately after currentContainer's start tag\n //\n // If currentContainer.childNodes.length === 0, we're already at a\n // terminal node (e.g., text node) and should return our current best.\n break;\n }\n\n currentContainer = currentContainer.childNodes[ii];\n maxIndexToConsider = getNodeLength(currentContainer);\n } while (true);\n\n range.setStart(bestContainer, bestOffset);\n return range;\n}\n\nmodule.exports = expandRangeToStartOfLine;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n/**\n * Get the key from the node's nearest offset-aware ancestor.\n */\n\n\nfunction findAncestorOffsetKey(node) {\n var searchNode = node;\n\n while (searchNode && searchNode !== getCorrectDocumentFromNode(node).documentElement) {\n var key = getSelectionOffsetKeyForNode(searchNode);\n\n if (key != null) {\n return key;\n }\n\n searchNode = searchNode.parentNode;\n }\n\n return null;\n}\n\nmodule.exports = findAncestorOffsetKey;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Search through an array to find contiguous stretches of elements that\n * match a specified filter function.\n *\n * When ranges are found, execute a specified `found` function to supply\n * the values to the caller.\n */\nfunction findRangesImmutable(haystack, areEqualFn, filterFn, foundFn) {\n if (!haystack.size) {\n return;\n }\n\n var cursor = 0;\n haystack.reduce(function (value, nextValue, nextIndex) {\n if (!areEqualFn(value, nextValue)) {\n if (filterFn(value)) {\n foundFn(cursor, nextIndex);\n }\n\n cursor = nextIndex;\n }\n\n return nextValue;\n });\n filterFn(haystack.last()) && foundFn(cursor, haystack.count());\n}\n\nmodule.exports = findRangesImmutable;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar seenKeys = {};\nvar MULTIPLIER = Math.pow(2, 24);\n\nfunction generateRandomKey() {\n var key;\n\n while (key === undefined || seenKeys.hasOwnProperty(key) || !isNaN(+key)) {\n key = Math.floor(Math.random() * MULTIPLIER).toString(32);\n }\n\n seenKeys[key] = true;\n return key;\n}\n\nmodule.exports = generateRandomKey;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftEntitySegments = require(\"./DraftEntitySegments\");\n\nvar getRangesForDraftEntity = require(\"./getRangesForDraftEntity\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Given a SelectionState and a removal direction, determine the entire range\n * that should be removed from a ContentState. This is based on any entities\n * within the target, with their `mutability` values taken into account.\n *\n * For instance, if we are attempting to remove part of an \"immutable\" entity\n * range, the entire entity must be removed. The returned `SelectionState`\n * will be adjusted accordingly.\n */\n\n\nfunction getCharacterRemovalRange(entityMap, startBlock, endBlock, selectionState, direction) {\n var start = selectionState.getStartOffset();\n var end = selectionState.getEndOffset();\n var startEntityKey = startBlock.getEntityAt(start);\n var endEntityKey = endBlock.getEntityAt(end - 1);\n\n if (!startEntityKey && !endEntityKey) {\n return selectionState;\n }\n\n var newSelectionState = selectionState;\n\n if (startEntityKey && startEntityKey === endEntityKey) {\n newSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, true, true);\n } else if (startEntityKey && endEntityKey) {\n var startSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, false, true);\n var endSelectionState = getEntityRemovalRange(entityMap, endBlock, newSelectionState, direction, endEntityKey, false, false);\n newSelectionState = newSelectionState.merge({\n anchorOffset: startSelectionState.getAnchorOffset(),\n focusOffset: endSelectionState.getFocusOffset(),\n isBackward: false\n });\n } else if (startEntityKey) {\n var _startSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, false, true);\n\n newSelectionState = newSelectionState.merge({\n anchorOffset: _startSelectionState.getStartOffset(),\n isBackward: false\n });\n } else if (endEntityKey) {\n var _endSelectionState = getEntityRemovalRange(entityMap, endBlock, newSelectionState, direction, endEntityKey, false, false);\n\n newSelectionState = newSelectionState.merge({\n focusOffset: _endSelectionState.getEndOffset(),\n isBackward: false\n });\n }\n\n return newSelectionState;\n}\n\nfunction getEntityRemovalRange(entityMap, block, selectionState, direction, entityKey, isEntireSelectionWithinEntity, isEntityAtStart) {\n var start = selectionState.getStartOffset();\n var end = selectionState.getEndOffset();\n\n var entity = entityMap.__get(entityKey);\n\n var mutability = entity.getMutability();\n var sideToConsider = isEntityAtStart ? start : end; // `MUTABLE` entities can just have the specified range of text removed\n // directly. No adjustments are needed.\n\n if (mutability === 'MUTABLE') {\n return selectionState;\n } // Find the entity range that overlaps with our removal range.\n\n\n var entityRanges = getRangesForDraftEntity(block, entityKey).filter(function (range) {\n return sideToConsider <= range.end && sideToConsider >= range.start;\n });\n !(entityRanges.length == 1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'There should only be one entity range within this removal range.') : invariant(false) : void 0;\n var entityRange = entityRanges[0]; // For `IMMUTABLE` entity types, we will remove the entire entity range.\n\n if (mutability === 'IMMUTABLE') {\n return selectionState.merge({\n anchorOffset: entityRange.start,\n focusOffset: entityRange.end,\n isBackward: false\n });\n } // For `SEGMENTED` entity types, determine the appropriate segment to\n // remove.\n\n\n if (!isEntireSelectionWithinEntity) {\n if (isEntityAtStart) {\n end = entityRange.end;\n } else {\n start = entityRange.start;\n }\n }\n\n var removalRange = DraftEntitySegments.getRemovalRange(start, end, block.getText().slice(entityRange.start, entityRange.end), entityRange.start, direction);\n return selectionState.merge({\n anchorOffset: removalRange.start,\n focusOffset: removalRange.end,\n isBackward: false\n });\n}\n\nmodule.exports = getCharacterRemovalRange;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nfunction getContentEditableContainer(editor) {\n var editorNode = editor.editorContainer;\n !editorNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing editorNode') : invariant(false) : void 0;\n !isHTMLElement(editorNode.firstChild) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode.firstChild is not an HTMLElement') : invariant(false) : void 0;\n var htmlElement = editorNode.firstChild;\n return htmlElement;\n}\n\nmodule.exports = getContentEditableContainer;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar randomizeBlockMapKeys = require(\"./randomizeBlockMapKeys\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar getContentStateFragment = function getContentStateFragment(contentState, selectionState) {\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset(); // Edge entities should be stripped to ensure that we don't preserve\n // invalid partial entities when the fragment is reused. We do, however,\n // preserve entities that are entirely within the selection range.\n\n var contentWithoutEdgeEntities = removeEntitiesAtEdges(contentState, selectionState);\n var blockMap = contentWithoutEdgeEntities.getBlockMap();\n var blockKeys = blockMap.keySeq();\n var startIndex = blockKeys.indexOf(startKey);\n var endIndex = blockKeys.indexOf(endKey) + 1;\n return randomizeBlockMapKeys(blockMap.slice(startIndex, endIndex).map(function (block, blockKey) {\n var text = block.getText();\n var chars = block.getCharacterList();\n\n if (startKey === endKey) {\n return block.merge({\n text: text.slice(startOffset, endOffset),\n characterList: chars.slice(startOffset, endOffset)\n });\n }\n\n if (blockKey === startKey) {\n return block.merge({\n text: text.slice(startOffset),\n characterList: chars.slice(startOffset)\n });\n }\n\n if (blockKey === endKey) {\n return block.merge({\n text: text.slice(0, endOffset),\n characterList: chars.slice(0, endOffset)\n });\n }\n\n return block;\n }));\n};\n\nmodule.exports = getContentStateFragment;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction getCorrectDocumentFromNode(node) {\n if (!node || !node.ownerDocument) {\n return document;\n }\n\n return node.ownerDocument;\n}\n\nmodule.exports = getCorrectDocumentFromNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X'); // Firefox on OSX had a bug resulting in navigation instead of cursor movement.\n// This bug was fixed in Firefox 29. Feature detection is virtually impossible\n// so we just check the version number. See #342765.\n\nvar shouldFixFirefoxMovement = isOSX && UserAgent.isBrowser('Firefox < 29');\nvar hasCommandModifier = KeyBindingUtil.hasCommandModifier,\n isCtrlKeyCommand = KeyBindingUtil.isCtrlKeyCommand;\n\nfunction shouldRemoveWord(e) {\n return isOSX && e.altKey || isCtrlKeyCommand(e);\n}\n/**\n * Get the appropriate undo/redo command for a Z key command.\n */\n\n\nfunction getZCommand(e) {\n if (!hasCommandModifier(e)) {\n return null;\n }\n\n return e.shiftKey ? 'redo' : 'undo';\n}\n\nfunction getDeleteCommand(e) {\n // Allow default \"cut\" behavior for PCs on Shift + Delete.\n if (!isOSX && e.shiftKey) {\n return null;\n }\n\n return shouldRemoveWord(e) ? 'delete-word' : 'delete';\n}\n\nfunction getBackspaceCommand(e) {\n if (hasCommandModifier(e) && isOSX) {\n return 'backspace-to-start-of-line';\n }\n\n return shouldRemoveWord(e) ? 'backspace-word' : 'backspace';\n}\n/**\n * Retrieve a bound key command for the given event.\n */\n\n\nfunction getDefaultKeyBinding(e) {\n switch (e.keyCode) {\n case 66:\n // B\n return hasCommandModifier(e) ? 'bold' : null;\n\n case 68:\n // D\n return isCtrlKeyCommand(e) ? 'delete' : null;\n\n case 72:\n // H\n return isCtrlKeyCommand(e) ? 'backspace' : null;\n\n case 73:\n // I\n return hasCommandModifier(e) ? 'italic' : null;\n\n case 74:\n // J\n return hasCommandModifier(e) ? 'code' : null;\n\n case 75:\n // K\n return isOSX && isCtrlKeyCommand(e) ? 'secondary-cut' : null;\n\n case 77:\n // M\n return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n case 79:\n // O\n return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n case 84:\n // T\n return isOSX && isCtrlKeyCommand(e) ? 'transpose-characters' : null;\n\n case 85:\n // U\n return hasCommandModifier(e) ? 'underline' : null;\n\n case 87:\n // W\n return isOSX && isCtrlKeyCommand(e) ? 'backspace-word' : null;\n\n case 89:\n // Y\n if (isCtrlKeyCommand(e)) {\n return isOSX ? 'secondary-paste' : 'redo';\n }\n\n return null;\n\n case 90:\n // Z\n return getZCommand(e) || null;\n\n case Keys.RETURN:\n return 'split-block';\n\n case Keys.DELETE:\n return getDeleteCommand(e);\n\n case Keys.BACKSPACE:\n return getBackspaceCommand(e);\n // LEFT/RIGHT handlers serve as a workaround for a Firefox bug.\n\n case Keys.LEFT:\n return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-start-of-block' : null;\n\n case Keys.RIGHT:\n return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-end-of-block' : null;\n\n default:\n return null;\n }\n}\n\nmodule.exports = getDefaultKeyBinding;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getDraftEditorSelectionWithNodes = require(\"./getDraftEditorSelectionWithNodes\");\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\n\n\nfunction getDraftEditorSelection(editorState, root) {\n var selection = root.ownerDocument.defaultView.getSelection();\n var anchorNode = selection.anchorNode,\n anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode,\n focusOffset = selection.focusOffset,\n rangeCount = selection.rangeCount;\n\n if ( // No active selection.\n rangeCount === 0 || // No selection, ever. As in, the user hasn't selected anything since\n // opening the document.\n anchorNode == null || focusNode == null) {\n return {\n selectionState: editorState.getSelection().set('hasFocus', false),\n needsRecovery: false\n };\n }\n\n return getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n\nmodule.exports = getDraftEditorSelection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n\nvar getUpdatedSelectionState = require(\"./getUpdatedSelectionState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\nfunction getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset) {\n var anchorIsTextNode = anchorNode.nodeType === Node.TEXT_NODE;\n var focusIsTextNode = focusNode.nodeType === Node.TEXT_NODE; // If the selection range lies only on text nodes, the task is simple.\n // Find the nearest offset-aware elements and use the\n // offset values supplied by the selection range.\n\n if (anchorIsTextNode && focusIsTextNode) {\n return {\n selectionState: getUpdatedSelectionState(editorState, nullthrows(findAncestorOffsetKey(anchorNode)), anchorOffset, nullthrows(findAncestorOffsetKey(focusNode)), focusOffset),\n needsRecovery: false\n };\n }\n\n var anchorPoint = null;\n var focusPoint = null;\n var needsRecovery = true; // An element is selected. Convert this selection range into leaf offset\n // keys and offset values for consumption at the component level. This\n // is common in Firefox, where select-all and triple click behavior leads\n // to entire elements being selected.\n //\n // Note that we use the `needsRecovery` parameter in the callback here. This\n // is because when certain elements are selected, the behavior for subsequent\n // cursor movement (e.g. via arrow keys) is uncertain and may not match\n // expectations at the component level. For example, if an entire
is\n // selected and the user presses the right arrow, Firefox keeps the selection\n // on the
. If we allow subsequent keypresses to insert characters\n // natively, they will be inserted into a browser-created text node to the\n // right of that
. This is obviously undesirable.\n //\n // With the `needsRecovery` flag, we inform the caller that it is responsible\n // for manually setting the selection state on the rendered document to\n // ensure proper selection state maintenance.\n\n if (anchorIsTextNode) {\n anchorPoint = {\n key: nullthrows(findAncestorOffsetKey(anchorNode)),\n offset: anchorOffset\n };\n focusPoint = getPointForNonTextNode(root, focusNode, focusOffset);\n } else if (focusIsTextNode) {\n focusPoint = {\n key: nullthrows(findAncestorOffsetKey(focusNode)),\n offset: focusOffset\n };\n anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n } else {\n anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n focusPoint = getPointForNonTextNode(root, focusNode, focusOffset); // If the selection is collapsed on an empty block, don't force recovery.\n // This way, on arrow key selection changes, the browser can move the\n // cursor from a non-zero offset on one block, through empty blocks,\n // to a matching non-zero offset on other text blocks.\n\n if (anchorNode === focusNode && anchorOffset === focusOffset) {\n needsRecovery = !!anchorNode.firstChild && anchorNode.firstChild.nodeName !== 'BR';\n }\n }\n\n return {\n selectionState: getUpdatedSelectionState(editorState, anchorPoint.key, anchorPoint.offset, focusPoint.key, focusPoint.offset),\n needsRecovery: needsRecovery\n };\n}\n/**\n * Identify the first leaf descendant for the given node.\n */\n\n\nfunction getFirstLeaf(node) {\n while (node.firstChild && ( // data-blocks has no offset\n isElement(node.firstChild) && node.firstChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.firstChild))) {\n node = node.firstChild;\n }\n\n return node;\n}\n/**\n * Identify the last leaf descendant for the given node.\n */\n\n\nfunction getLastLeaf(node) {\n while (node.lastChild && ( // data-blocks has no offset\n isElement(node.lastChild) && node.lastChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.lastChild))) {\n node = node.lastChild;\n }\n\n return node;\n}\n\nfunction getPointForNonTextNode(editorRoot, startNode, childOffset) {\n var node = startNode;\n var offsetKey = findAncestorOffsetKey(node);\n !(offsetKey != null || editorRoot && (editorRoot === node || editorRoot.firstChild === node)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown node in selection range.') : invariant(false) : void 0; // If the editorRoot is the selection, step downward into the content\n // wrapper.\n\n if (editorRoot === node) {\n node = node.firstChild;\n !isElement(node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents node.') : invariant(false) : void 0;\n var castedNode = node; // assignment only added for flow :/\n // otherwise it throws in line 200 saying that node can be null or undefined\n\n node = castedNode;\n !(node.getAttribute('data-contents') === 'true') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents structure.') : invariant(false) : void 0;\n\n if (childOffset > 0) {\n childOffset = node.childNodes.length;\n }\n } // If the child offset is zero and we have an offset key, we're done.\n // If there's no offset key because the entire editor is selected,\n // find the leftmost (\"first\") leaf in the tree and use that as the offset\n // key.\n\n\n if (childOffset === 0) {\n var key = null;\n\n if (offsetKey != null) {\n key = offsetKey;\n } else {\n var firstLeaf = getFirstLeaf(node);\n key = nullthrows(getSelectionOffsetKeyForNode(firstLeaf));\n }\n\n return {\n key: key,\n offset: 0\n };\n }\n\n var nodeBeforeCursor = node.childNodes[childOffset - 1];\n var leafKey = null;\n var textLength = null;\n\n if (!getSelectionOffsetKeyForNode(nodeBeforeCursor)) {\n // Our target node may be a leaf or a text node, in which case we're\n // already where we want to be and can just use the child's length as\n // our offset.\n leafKey = nullthrows(offsetKey);\n textLength = getTextContentLength(nodeBeforeCursor);\n } else {\n // Otherwise, we'll look at the child to the left of the cursor and find\n // the last leaf node in its subtree.\n var lastLeaf = getLastLeaf(nodeBeforeCursor);\n leafKey = nullthrows(getSelectionOffsetKeyForNode(lastLeaf));\n textLength = getTextContentLength(lastLeaf);\n }\n\n return {\n key: leafKey,\n offset: textLength\n };\n}\n/**\n * Return the length of a node's textContent, regarding single newline\n * characters as zero-length. This allows us to avoid problems with identifying\n * the correct selection offset for empty blocks in IE, in which we\n * render newlines instead of break tags.\n */\n\n\nfunction getTextContentLength(node) {\n var textContent = node.textContent;\n return textContent === '\\n' ? 0 : textContent.length;\n}\n\nmodule.exports = getDraftEditorSelectionWithNodes;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _require = require(\"./draftKeyUtils\"),\n notEmptyKey = _require.notEmptyKey;\n/**\n * Return the entity key that should be used when inserting text for the\n * specified target selection, only if the entity is `MUTABLE`. `IMMUTABLE`\n * and `SEGMENTED` entities should not be used for insertion behavior.\n */\n\n\nfunction getEntityKeyForSelection(contentState, targetSelection) {\n var entityKey;\n\n if (targetSelection.isCollapsed()) {\n var key = targetSelection.getAnchorKey();\n var offset = targetSelection.getAnchorOffset();\n\n if (offset > 0) {\n entityKey = contentState.getBlockForKey(key).getEntityAt(offset - 1);\n\n if (entityKey !== contentState.getBlockForKey(key).getEntityAt(offset)) {\n return null;\n }\n\n return filterKey(contentState.getEntityMap(), entityKey);\n }\n\n return null;\n }\n\n var startKey = targetSelection.getStartKey();\n var startOffset = targetSelection.getStartOffset();\n var startBlock = contentState.getBlockForKey(startKey);\n entityKey = startOffset === startBlock.getLength() ? null : startBlock.getEntityAt(startOffset);\n return filterKey(contentState.getEntityMap(), entityKey);\n}\n/**\n * Determine whether an entity key corresponds to a `MUTABLE` entity. If so,\n * return it. If not, return null.\n */\n\n\nfunction filterKey(entityMap, entityKey) {\n if (notEmptyKey(entityKey)) {\n var entity = entityMap.__get(entityKey);\n\n return entity.getMutability() === 'MUTABLE' ? entityKey : null;\n }\n\n return null;\n}\n\nmodule.exports = getEntityKeyForSelection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nfunction getFragmentFromSelection(editorState) {\n var selectionState = editorState.getSelection();\n\n if (selectionState.isCollapsed()) {\n return null;\n }\n\n return getContentStateFragment(editorState.getCurrentContent(), selectionState);\n}\n\nmodule.exports = getFragmentFromSelection;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = function getNextDelimiterBlockKey(block, blockMap) {\n var isExperimentalTreeBlock = block instanceof ContentBlockNode;\n\n if (!isExperimentalTreeBlock) {\n return null;\n }\n\n var nextSiblingKey = block.getNextSiblingKey();\n\n if (nextSiblingKey) {\n return nextSiblingKey;\n }\n\n var parent = block.getParentKey();\n\n if (!parent) {\n return null;\n }\n\n var nextNonDescendantBlock = blockMap.get(parent);\n\n while (nextNonDescendantBlock && !nextNonDescendantBlock.getNextSiblingKey()) {\n var parentKey = nextNonDescendantBlock.getParentKey();\n nextNonDescendantBlock = parentKey ? blockMap.get(parentKey) : null;\n }\n\n if (!nextNonDescendantBlock) {\n return null;\n }\n\n return nextNonDescendantBlock.getNextSiblingKey();\n};\n\nmodule.exports = getNextDelimiterBlockKey;","\"use strict\";\n\n/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * \n * @typechecks\n * @format\n */\n\n/**\n * Retrieve an object's own values as an array. If you want the values in the\n * protoype chain, too, use getObjectValuesIncludingPrototype.\n *\n * If you are looking for a function that creates an Array instance based\n * on an \"Array-like\" object, use createArrayFrom instead.\n *\n * @param {object} obj An object.\n * @return {array} The object's values.\n */\nfunction getOwnObjectValues(obj) {\n return Object.keys(obj).map(function (key) {\n return obj[key];\n });\n}\n\nmodule.exports = getOwnObjectValues;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getRangeClientRects = require(\"./getRangeClientRects\");\n\n/**\n * Like range.getBoundingClientRect() but normalizes for browser bugs.\n */\nfunction getRangeBoundingClientRect(range) {\n // \"Return a DOMRect object describing the smallest rectangle that includes\n // the first rectangle in list and all of the remaining rectangles of which\n // the height or width is not zero.\"\n // http://www.w3.org/TR/cssom-view/#dom-range-getboundingclientrect\n var rects = getRangeClientRects(range);\n var top = 0;\n var right = 0;\n var bottom = 0;\n var left = 0;\n\n if (rects.length) {\n // If the first rectangle has 0 width, we use the second, this is needed\n // because Chrome renders a 0 width rectangle when the selection contains\n // a line break.\n if (rects.length > 1 && rects[0].width === 0) {\n var _rects$ = rects[1];\n top = _rects$.top;\n right = _rects$.right;\n bottom = _rects$.bottom;\n left = _rects$.left;\n } else {\n var _rects$2 = rects[0];\n top = _rects$2.top;\n right = _rects$2.right;\n bottom = _rects$2.bottom;\n left = _rects$2.left;\n }\n\n for (var ii = 1; ii < rects.length; ii++) {\n var rect = rects[ii];\n\n if (rect.height !== 0 && rect.width !== 0) {\n top = Math.min(top, rect.top);\n right = Math.max(right, rect.right);\n bottom = Math.max(bottom, rect.bottom);\n left = Math.min(left, rect.left);\n }\n }\n }\n\n return {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: right - left,\n height: bottom - top\n };\n}\n\nmodule.exports = getRangeBoundingClientRect;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isChrome = UserAgent.isBrowser('Chrome'); // In Chrome, the client rects will include the entire bounds of all nodes that\n// begin (have a start tag) within the selection, even if the selection does\n// not overlap the entire node. To resolve this, we split the range at each\n// start tag and join the client rects together.\n// https://code.google.com/p/chromium/issues/detail?id=324437\n\n/* eslint-disable consistent-return */\n\nfunction getRangeClientRectsChrome(range) {\n var tempRange = range.cloneRange();\n var clientRects = [];\n\n for (var ancestor = range.endContainer; ancestor != null; ancestor = ancestor.parentNode) {\n // If we've climbed up to the common ancestor, we can now use the\n // original start point and stop climbing the tree.\n var atCommonAncestor = ancestor === range.commonAncestorContainer;\n\n if (atCommonAncestor) {\n tempRange.setStart(range.startContainer, range.startOffset);\n } else {\n tempRange.setStart(tempRange.endContainer, 0);\n }\n\n var rects = Array.from(tempRange.getClientRects());\n clientRects.push(rects);\n\n if (atCommonAncestor) {\n var _ref;\n\n clientRects.reverse();\n return (_ref = []).concat.apply(_ref, clientRects);\n }\n\n tempRange.setEndBefore(ancestor);\n }\n\n !false ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Found an unexpected detached subtree when getting range client rects.') : invariant(false) : void 0;\n}\n/* eslint-enable consistent-return */\n\n/**\n * Like range.getClientRects() but normalizes for browser bugs.\n */\n\n\nvar getRangeClientRects = isChrome ? getRangeClientRectsChrome : function (range) {\n return Array.from(range.getClientRects());\n};\nmodule.exports = getRangeClientRects;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Obtain the start and end positions of the range that has the\n * specified entity applied to it.\n *\n * Entity keys are applied only to contiguous stretches of text, so this\n * method searches for the first instance of the entity key and returns\n * the subsequent range.\n */\n\n\nfunction getRangesForDraftEntity(block, key) {\n var ranges = [];\n block.findEntityRanges(function (c) {\n return c.getEntity() === key;\n }, function (start, end) {\n ranges.push({\n start: start,\n end: end\n });\n });\n !!!ranges.length ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Entity key not found in this range.') : invariant(false) : void 0;\n return ranges;\n}\n\nmodule.exports = getRangesForDraftEntity;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isOldIE = UserAgent.isBrowser('IE <= 9'); // Provides a dom node that will not execute scripts\n// https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument\n// https://developer.mozilla.org/en-US/Add-ons/Code_snippets/HTML_to_DOM\n\nfunction getSafeBodyFromHTML(html) {\n var doc;\n var root = null; // Provides a safe context\n\n if (!isOldIE && document.implementation && document.implementation.createHTMLDocument) {\n doc = document.implementation.createHTMLDocument('foo');\n !doc.documentElement ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing doc.documentElement') : invariant(false) : void 0;\n doc.documentElement.innerHTML = html;\n root = doc.getElementsByTagName('body')[0];\n }\n\n return root;\n}\n\nmodule.exports = getSafeBodyFromHTML;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n/**\n * Get offset key from a node or it's child nodes. Return the first offset key\n * found on the DOM tree of given node.\n */\n\nvar isElement = require(\"./isElement\");\n\nfunction getSelectionOffsetKeyForNode(node) {\n if (isElement(node)) {\n var castedNode = node;\n var offsetKey = castedNode.getAttribute('data-offset-key');\n\n if (offsetKey) {\n return offsetKey;\n }\n\n for (var ii = 0; ii < castedNode.childNodes.length; ii++) {\n var childOffsetKey = getSelectionOffsetKeyForNode(castedNode.childNodes[ii]);\n\n if (childOffsetKey) {\n return childOffsetKey;\n }\n }\n }\n\n return null;\n}\n\nmodule.exports = getSelectionOffsetKeyForNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar TEXT_CLIPPING_REGEX = /\\.textClipping$/;\nvar TEXT_TYPES = {\n 'text/plain': true,\n 'text/html': true,\n 'text/rtf': true\n}; // Somewhat arbitrary upper bound on text size. Let's not lock up the browser.\n\nvar TEXT_SIZE_UPPER_BOUND = 5000;\n/**\n * Extract the text content from a file list.\n */\n\nfunction getTextContentFromFiles(files, callback) {\n var readCount = 0;\n var results = [];\n files.forEach(function (\n /*blob*/\n file) {\n readFile(file, function (\n /*string*/\n text) {\n readCount++;\n text && results.push(text.slice(0, TEXT_SIZE_UPPER_BOUND));\n\n if (readCount == files.length) {\n callback(results.join('\\r'));\n }\n });\n });\n}\n/**\n * todo isaac: Do work to turn html/rtf into a content fragment.\n */\n\n\nfunction readFile(file, callback) {\n if (!global.FileReader || file.type && !(file.type in TEXT_TYPES)) {\n callback('');\n return;\n }\n\n if (file.type === '') {\n var _contents = ''; // Special-case text clippings, which have an empty type but include\n // `.textClipping` in the file name. `readAsText` results in an empty\n // string for text clippings, so we force the file name to serve\n // as the text value for the file.\n\n if (TEXT_CLIPPING_REGEX.test(file.name)) {\n _contents = file.name.replace(TEXT_CLIPPING_REGEX, '');\n }\n\n callback(_contents);\n return;\n }\n\n var reader = new FileReader();\n\n reader.onload = function () {\n var result = reader.result;\n !(typeof result === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'We should be calling \"FileReader.readAsText\" which returns a string') : invariant(false) : void 0;\n callback(result);\n };\n\n reader.onerror = function () {\n callback('');\n };\n\n reader.readAsText(file);\n}\n\nmodule.exports = getTextContentFromFiles;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nfunction getUpdatedSelectionState(editorState, anchorKey, anchorOffset, focusKey, focusOffset) {\n var selection = nullthrows(editorState.getSelection());\n\n if (!anchorKey || !focusKey) {\n // If we cannot make sense of the updated selection state, stick to the current one.\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable-next-line */\n console.warn('Invalid selection state.', arguments, editorState.toJS());\n }\n\n return selection;\n }\n\n var anchorPath = DraftOffsetKey.decode(anchorKey);\n var anchorBlockKey = anchorPath.blockKey;\n var anchorLeafBlockTree = editorState.getBlockTree(anchorBlockKey);\n var anchorLeaf = anchorLeafBlockTree && anchorLeafBlockTree.getIn([anchorPath.decoratorKey, 'leaves', anchorPath.leafKey]);\n var focusPath = DraftOffsetKey.decode(focusKey);\n var focusBlockKey = focusPath.blockKey;\n var focusLeafBlockTree = editorState.getBlockTree(focusBlockKey);\n var focusLeaf = focusLeafBlockTree && focusLeafBlockTree.getIn([focusPath.decoratorKey, 'leaves', focusPath.leafKey]);\n\n if (!anchorLeaf || !focusLeaf) {\n // If we cannot make sense of the updated selection state, stick to the current one.\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable-next-line */\n console.warn('Invalid selection state.', arguments, editorState.toJS());\n }\n\n return selection;\n }\n\n var anchorLeafStart = anchorLeaf.get('start');\n var focusLeafStart = focusLeaf.get('start');\n var anchorBlockOffset = anchorLeaf ? anchorLeafStart + anchorOffset : null;\n var focusBlockOffset = focusLeaf ? focusLeafStart + focusOffset : null;\n var areEqual = selection.getAnchorKey() === anchorBlockKey && selection.getAnchorOffset() === anchorBlockOffset && selection.getFocusKey() === focusBlockKey && selection.getFocusOffset() === focusBlockOffset;\n\n if (areEqual) {\n return selection;\n }\n\n var isBackward = false;\n\n if (anchorBlockKey === focusBlockKey) {\n var anchorLeafEnd = anchorLeaf.get('end');\n var focusLeafEnd = focusLeaf.get('end');\n\n if (focusLeafStart === anchorLeafStart && focusLeafEnd === anchorLeafEnd) {\n isBackward = focusOffset < anchorOffset;\n } else {\n isBackward = focusLeafStart < anchorLeafStart;\n }\n } else {\n var startKey = editorState.getCurrentContent().getBlockMap().keySeq().skipUntil(function (v) {\n return v === anchorBlockKey || v === focusBlockKey;\n }).first();\n isBackward = startKey === focusBlockKey;\n }\n\n return selection.merge({\n anchorKey: anchorBlockKey,\n anchorOffset: anchorBlockOffset,\n focusKey: focusBlockKey,\n focusOffset: focusBlockOffset,\n isBackward: isBackward\n });\n}\n\nmodule.exports = getUpdatedSelectionState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getRangeBoundingClientRect = require(\"./getRangeBoundingClientRect\");\n/**\n * Return the bounding ClientRect for the visible DOM selection, if any.\n * In cases where there are no selected ranges or the bounding rect is\n * temporarily invalid, return null.\n *\n * When using from an iframe, you should pass the iframe window object\n */\n\n\nfunction getVisibleSelectionRect(global) {\n var selection = global.getSelection();\n\n if (!selection.rangeCount) {\n return null;\n }\n\n var range = selection.getRangeAt(0);\n var boundingRect = getRangeBoundingClientRect(range);\n var top = boundingRect.top,\n right = boundingRect.right,\n bottom = boundingRect.bottom,\n left = boundingRect.left; // When a re-render leads to a node being removed, the DOM selection will\n // temporarily be placed on an ancestor node, which leads to an invalid\n // bounding rect. Discard this state.\n\n if (top === 0 && right === 0 && bottom === 0 && left === 0) {\n return null;\n }\n\n return boundingRect;\n}\n\nmodule.exports = getVisibleSelectionRect;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction getWindowForNode(node) {\n if (!node || !node.ownerDocument || !node.ownerDocument.defaultView) {\n return window;\n }\n\n return node.ownerDocument.defaultView;\n}\n\nmodule.exports = getWindowForNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nmodule.exports = function (name) {\n if (typeof window !== 'undefined' && window.__DRAFT_GKX) {\n return !!window.__DRAFT_GKX[name];\n }\n\n return false;\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar Immutable = require(\"immutable\");\n\nvar insertIntoList = require(\"./insertIntoList\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar randomizeBlockMapKeys = require(\"./randomizeBlockMapKeys\");\n\nvar List = Immutable.List;\n\nvar updateExistingBlock = function updateExistingBlock(contentState, selectionState, blockMap, fragmentBlock, targetKey, targetOffset) {\n var mergeBlockData = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 'REPLACE_WITH_NEW_DATA';\n var targetBlock = blockMap.get(targetKey);\n var text = targetBlock.getText();\n var chars = targetBlock.getCharacterList();\n var finalKey = targetKey;\n var finalOffset = targetOffset + fragmentBlock.getText().length;\n var data = null;\n\n switch (mergeBlockData) {\n case 'MERGE_OLD_DATA_TO_NEW_DATA':\n data = fragmentBlock.getData().merge(targetBlock.getData());\n break;\n\n case 'REPLACE_WITH_NEW_DATA':\n data = fragmentBlock.getData();\n break;\n }\n\n var type = targetBlock.getType();\n\n if (text && type === 'unstyled') {\n type = fragmentBlock.getType();\n }\n\n var newBlock = targetBlock.merge({\n text: text.slice(0, targetOffset) + fragmentBlock.getText() + text.slice(targetOffset),\n characterList: insertIntoList(chars, fragmentBlock.getCharacterList(), targetOffset),\n type: type,\n data: data\n });\n return contentState.merge({\n blockMap: blockMap.set(targetKey, newBlock),\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: finalKey,\n anchorOffset: finalOffset,\n focusKey: finalKey,\n focusOffset: finalOffset,\n isBackward: false\n })\n });\n};\n/**\n * Appends text/characterList from the fragment first block to\n * target block.\n */\n\n\nvar updateHead = function updateHead(block, targetOffset, fragment) {\n var text = block.getText();\n var chars = block.getCharacterList(); // Modify head portion of block.\n\n var headText = text.slice(0, targetOffset);\n var headCharacters = chars.slice(0, targetOffset);\n var appendToHead = fragment.first();\n return block.merge({\n text: headText + appendToHead.getText(),\n characterList: headCharacters.concat(appendToHead.getCharacterList()),\n type: headText ? block.getType() : appendToHead.getType(),\n data: appendToHead.getData()\n });\n};\n/**\n * Appends offset text/characterList from the target block to the last\n * fragment block.\n */\n\n\nvar updateTail = function updateTail(block, targetOffset, fragment) {\n // Modify tail portion of block.\n var text = block.getText();\n var chars = block.getCharacterList(); // Modify head portion of block.\n\n var blockSize = text.length;\n var tailText = text.slice(targetOffset, blockSize);\n var tailCharacters = chars.slice(targetOffset, blockSize);\n var prependToTail = fragment.last();\n return prependToTail.merge({\n text: prependToTail.getText() + tailText,\n characterList: prependToTail.getCharacterList().concat(tailCharacters),\n data: prependToTail.getData()\n });\n};\n\nvar getRootBlocks = function getRootBlocks(block, blockMap) {\n var headKey = block.getKey();\n var rootBlock = block;\n var rootBlocks = []; // sometimes the fragment head block will not be part of the blockMap itself this can happen when\n // the fragment head is used to update the target block, however when this does not happen we need\n // to make sure that we include it on the rootBlocks since the first block of a fragment is always a\n // fragment root block\n\n if (blockMap.get(headKey)) {\n rootBlocks.push(headKey);\n }\n\n while (rootBlock && rootBlock.getNextSiblingKey()) {\n var lastSiblingKey = rootBlock.getNextSiblingKey();\n\n if (!lastSiblingKey) {\n break;\n }\n\n rootBlocks.push(lastSiblingKey);\n rootBlock = blockMap.get(lastSiblingKey);\n }\n\n return rootBlocks;\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlockMap, targetBlock, fragmentHeadBlock) {\n return blockMap.withMutations(function (blockMapState) {\n var targetKey = targetBlock.getKey();\n var headKey = fragmentHeadBlock.getKey();\n var targetNextKey = targetBlock.getNextSiblingKey();\n var targetParentKey = targetBlock.getParentKey();\n var fragmentRootBlocks = getRootBlocks(fragmentHeadBlock, blockMap);\n var lastRootFragmentBlockKey = fragmentRootBlocks[fragmentRootBlocks.length - 1];\n\n if (blockMapState.get(headKey)) {\n // update the fragment head when it is part of the blockMap otherwise\n blockMapState.setIn([targetKey, 'nextSibling'], headKey);\n blockMapState.setIn([headKey, 'prevSibling'], targetKey);\n } else {\n // update the target block that had the fragment head contents merged into it\n blockMapState.setIn([targetKey, 'nextSibling'], fragmentHeadBlock.getNextSiblingKey());\n blockMapState.setIn([fragmentHeadBlock.getNextSiblingKey(), 'prevSibling'], targetKey);\n } // update the last root block fragment\n\n\n blockMapState.setIn([lastRootFragmentBlockKey, 'nextSibling'], targetNextKey); // update the original target next block\n\n if (targetNextKey) {\n blockMapState.setIn([targetNextKey, 'prevSibling'], lastRootFragmentBlockKey);\n } // update fragment parent links\n\n\n fragmentRootBlocks.forEach(function (blockKey) {\n return blockMapState.setIn([blockKey, 'parent'], targetParentKey);\n }); // update targetBlock parent child links\n\n if (targetParentKey) {\n var targetParent = blockMap.get(targetParentKey);\n var originalTargetParentChildKeys = targetParent.getChildKeys();\n var targetBlockIndex = originalTargetParentChildKeys.indexOf(targetKey);\n var insertionIndex = targetBlockIndex + 1;\n var newChildrenKeysArray = originalTargetParentChildKeys.toArray(); // insert fragment children\n\n newChildrenKeysArray.splice.apply(newChildrenKeysArray, [insertionIndex, 0].concat(fragmentRootBlocks));\n blockMapState.setIn([targetParentKey, 'children'], List(newChildrenKeysArray));\n }\n });\n};\n\nvar insertFragment = function insertFragment(contentState, selectionState, blockMap, fragment, targetKey, targetOffset) {\n var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n var newBlockArr = [];\n var fragmentSize = fragment.size;\n var target = blockMap.get(targetKey);\n var head = fragment.first();\n var tail = fragment.last();\n var finalOffset = tail.getLength();\n var finalKey = tail.getKey();\n var shouldNotUpdateFromFragmentBlock = isTreeBasedBlockMap && (!target.getChildKeys().isEmpty() || !head.getChildKeys().isEmpty());\n blockMap.forEach(function (block, blockKey) {\n if (blockKey !== targetKey) {\n newBlockArr.push(block);\n return;\n }\n\n if (shouldNotUpdateFromFragmentBlock) {\n newBlockArr.push(block);\n } else {\n newBlockArr.push(updateHead(block, targetOffset, fragment));\n } // Insert fragment blocks after the head and before the tail.\n\n\n fragment // when we are updating the target block with the head fragment block we skip the first fragment\n // head since its contents have already been merged with the target block otherwise we include\n // the whole fragment\n .slice(shouldNotUpdateFromFragmentBlock ? 0 : 1, fragmentSize - 1).forEach(function (fragmentBlock) {\n return newBlockArr.push(fragmentBlock);\n }); // update tail\n\n newBlockArr.push(updateTail(block, targetOffset, fragment));\n });\n var updatedBlockMap = BlockMapBuilder.createFromArray(newBlockArr);\n\n if (isTreeBasedBlockMap) {\n updatedBlockMap = updateBlockMapLinks(updatedBlockMap, blockMap, target, head);\n }\n\n return contentState.merge({\n blockMap: updatedBlockMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: finalKey,\n anchorOffset: finalOffset,\n focusKey: finalKey,\n focusOffset: finalOffset,\n isBackward: false\n })\n });\n};\n\nvar insertFragmentIntoContentState = function insertFragmentIntoContentState(contentState, selectionState, fragmentBlockMap) {\n var mergeBlockData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'REPLACE_WITH_NEW_DATA';\n !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertFragment` should only be called with a collapsed selection state.') : invariant(false) : void 0;\n var blockMap = contentState.getBlockMap();\n var fragment = randomizeBlockMapKeys(fragmentBlockMap);\n var targetKey = selectionState.getStartKey();\n var targetOffset = selectionState.getStartOffset();\n var targetBlock = blockMap.get(targetKey);\n\n if (targetBlock instanceof ContentBlockNode) {\n !targetBlock.getChildKeys().isEmpty() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertFragment` should not be called when a container node is selected.') : invariant(false) : void 0;\n } // When we insert a fragment with a single block we simply update the target block\n // with the contents of the inserted fragment block\n\n\n if (fragment.size === 1) {\n return updateExistingBlock(contentState, selectionState, blockMap, fragment.first(), targetKey, targetOffset, mergeBlockData);\n }\n\n return insertFragment(contentState, selectionState, blockMap, fragment, targetKey, targetOffset);\n};\n\nmodule.exports = insertFragmentIntoContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Maintain persistence for target list when appending and prepending.\n */\nfunction insertIntoList(targetListArg, toInsert, offset) {\n var targetList = targetListArg;\n\n if (offset === targetList.count()) {\n toInsert.forEach(function (c) {\n targetList = targetList.push(c);\n });\n } else if (offset === 0) {\n toInsert.reverse().forEach(function (c) {\n targetList = targetList.unshift(c);\n });\n } else {\n var head = targetList.slice(0, offset);\n var tail = targetList.slice(offset);\n targetList = head.concat(toInsert, tail).toList();\n }\n\n return targetList;\n}\n\nmodule.exports = insertIntoList;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar insertIntoList = require(\"./insertIntoList\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar Repeat = Immutable.Repeat;\n\nfunction insertTextIntoContentState(contentState, selectionState, text, characterMetadata) {\n !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertText` should only be called with a collapsed range.') : invariant(false) : void 0;\n var len = null;\n\n if (text != null) {\n len = text.length;\n }\n\n if (len == null || len === 0) {\n return contentState;\n }\n\n var blockMap = contentState.getBlockMap();\n var key = selectionState.getStartKey();\n var offset = selectionState.getStartOffset();\n var block = blockMap.get(key);\n var blockText = block.getText();\n var newBlock = block.merge({\n text: blockText.slice(0, offset) + text + blockText.slice(offset, block.getLength()),\n characterList: insertIntoList(block.getCharacterList(), Repeat(characterMetadata, len).toList(), offset)\n });\n var newOffset = offset + len;\n return contentState.merge({\n blockMap: blockMap.set(key, newBlock),\n selectionAfter: selectionState.merge({\n anchorOffset: newOffset,\n focusOffset: newOffset\n })\n });\n}\n\nmodule.exports = insertTextIntoContentState;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n}\n\nmodule.exports = isElement;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Utility method for determining whether or not the value returned\n * from a handler indicates that it was handled.\n */\nfunction isEventHandled(value) {\n return value === 'handled' || value === true;\n}\n\nmodule.exports = isEventHandled;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLAnchorElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return isElement(node) && node.nodeName === 'A';\n}\n\nmodule.exports = isHTMLAnchorElement;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLBRElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return isElement(node) && node.nodeName === 'BR';\n}\n\nmodule.exports = isHTMLBRElement;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isHTMLElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n if (!node.ownerDocument.defaultView) {\n return node instanceof HTMLElement;\n }\n\n if (node instanceof node.ownerDocument.defaultView.HTMLElement) {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isHTMLElement;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLImageElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return isElement(node) && node.nodeName === 'IMG';\n}\n\nmodule.exports = isHTMLImageElement;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isInstanceOfNode(target) {\n // we changed the name because of having duplicate module provider (fbjs)\n if (!target || !('ownerDocument' in target)) {\n return false;\n }\n\n if ('ownerDocument' in target) {\n var node = target;\n\n if (!node.ownerDocument.defaultView) {\n return node instanceof Node;\n }\n\n if (node instanceof node.ownerDocument.defaultView.Node) {\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = isInstanceOfNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction isSelectionAtLeafStart(editorState) {\n var selection = editorState.getSelection();\n var anchorKey = selection.getAnchorKey();\n var blockTree = editorState.getBlockTree(anchorKey);\n var offset = selection.getStartOffset();\n var isAtStart = false;\n blockTree.some(function (leafSet) {\n if (offset === leafSet.get('start')) {\n isAtStart = true;\n return true;\n }\n\n if (offset < leafSet.get('end')) {\n return leafSet.get('leaves').some(function (leaf) {\n var leafStart = leaf.get('start');\n\n if (offset === leafStart) {\n isAtStart = true;\n return true;\n }\n\n return false;\n });\n }\n\n return false;\n });\n return isAtStart;\n}\n\nmodule.exports = isSelectionAtLeafStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nfunction isSoftNewlineEvent(e) {\n return e.which === Keys.RETURN && (e.getModifierState('Shift') || e.getModifierState('Alt') || e.getModifierState('Control'));\n}\n\nmodule.exports = isSoftNewlineEvent;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar expandRangeToStartOfLine = require(\"./expandRangeToStartOfLine\");\n\nvar getDraftEditorSelectionWithNodes = require(\"./getDraftEditorSelectionWithNodes\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n\nfunction keyCommandBackspaceToStartOfLine(editorState, e) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n\n if (selection.isCollapsed() && selection.getAnchorOffset() === 0) {\n return moveSelectionBackward(strategyState, 1);\n }\n\n var ownerDocument = e.currentTarget.ownerDocument;\n var domSelection = ownerDocument.defaultView.getSelection(); // getRangeAt can technically throw if there's no selection, but we know\n // there is one here because text editor has focus (the cursor is a\n // selection of length 0). Therefore, we don't need to wrap this in a\n // try-catch block.\n\n var range = domSelection.getRangeAt(0);\n range = expandRangeToStartOfLine(range);\n return getDraftEditorSelectionWithNodes(strategyState, null, range.endContainer, range.endOffset, range.startContainer, range.startOffset).selectionState;\n }, 'backward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandBackspaceToStartOfLine;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftRemovableWord = require(\"./DraftRemovableWord\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Delete the word that is left of the cursor, as well as any spaces or\n * punctuation after the word.\n */\n\n\nfunction keyCommandBackspaceWord(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var offset = selection.getStartOffset(); // If there are no words before the cursor, remove the preceding newline.\n\n if (offset === 0) {\n return moveSelectionBackward(strategyState, 1);\n }\n\n var key = selection.getStartKey();\n var content = strategyState.getCurrentContent();\n var text = content.getBlockForKey(key).getText().slice(0, offset);\n var toRemove = DraftRemovableWord.getBackward(text);\n return moveSelectionBackward(strategyState, toRemove.length || 1);\n }, 'backward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandBackspaceWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftRemovableWord = require(\"./DraftRemovableWord\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar moveSelectionForward = require(\"./moveSelectionForward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Delete the word that is right of the cursor, as well as any spaces or\n * punctuation before the word.\n */\n\n\nfunction keyCommandDeleteWord(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var offset = selection.getStartOffset();\n var key = selection.getStartKey();\n var content = strategyState.getCurrentContent();\n var text = content.getBlockForKey(key).getText().slice(offset);\n var toRemove = DraftRemovableWord.getForward(text); // If there are no words in front of the cursor, remove the newline.\n\n return moveSelectionForward(strategyState, toRemove.length || 1);\n }, 'forward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandDeleteWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nfunction keyCommandInsertNewline(editorState) {\n var contentState = DraftModifier.splitBlock(editorState.getCurrentContent(), editorState.getSelection());\n return EditorState.push(editorState, contentState, 'split-block');\n}\n\nmodule.exports = keyCommandInsertNewline;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * See comment for `moveSelectionToStartOfBlock`.\n */\n\n\nfunction keyCommandMoveSelectionToEndOfBlock(editorState) {\n var selection = editorState.getSelection();\n var endKey = selection.getEndKey();\n var content = editorState.getCurrentContent();\n var textLength = content.getBlockForKey(endKey).getLength();\n return EditorState.set(editorState, {\n selection: selection.merge({\n anchorKey: endKey,\n anchorOffset: textLength,\n focusKey: endKey,\n focusOffset: textLength,\n isBackward: false\n }),\n forceSelection: true\n });\n}\n\nmodule.exports = keyCommandMoveSelectionToEndOfBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * Collapse selection at the start of the first selected block. This is used\n * for Firefox versions that attempt to navigate forward/backward instead of\n * moving the cursor. Other browsers are able to move the cursor natively.\n */\n\n\nfunction keyCommandMoveSelectionToStartOfBlock(editorState) {\n var selection = editorState.getSelection();\n var startKey = selection.getStartKey();\n return EditorState.set(editorState, {\n selection: selection.merge({\n anchorKey: startKey,\n anchorOffset: 0,\n focusKey: startKey,\n focusOffset: 0,\n isBackward: false\n }),\n forceSelection: true\n });\n}\n\nmodule.exports = keyCommandMoveSelectionToStartOfBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Remove the selected range. If the cursor is collapsed, remove the preceding\n * character. This operation is Unicode-aware, so removing a single character\n * will remove a surrogate pair properly as well.\n */\n\n\nfunction keyCommandPlainBackspace(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var content = strategyState.getCurrentContent();\n var key = selection.getAnchorKey();\n var offset = selection.getAnchorOffset();\n var charBehind = content.getBlockForKey(key).getText()[offset - 1];\n return moveSelectionBackward(strategyState, charBehind ? UnicodeUtils.getUTF16Length(charBehind, 0) : 1);\n }, 'backward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n var selection = editorState.getSelection();\n return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'backspace-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainBackspace;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar moveSelectionForward = require(\"./moveSelectionForward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Remove the selected range. If the cursor is collapsed, remove the following\n * character. This operation is Unicode-aware, so removing a single character\n * will remove a surrogate pair properly as well.\n */\n\n\nfunction keyCommandPlainDelete(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var content = strategyState.getCurrentContent();\n var key = selection.getAnchorKey();\n var offset = selection.getAnchorOffset();\n var charAhead = content.getBlockForKey(key).getText()[offset];\n return moveSelectionForward(strategyState, charAhead ? UnicodeUtils.getUTF16Length(charAhead, 0) : 1);\n }, 'forward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n var selection = editorState.getSelection();\n return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'delete-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainDelete;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n/**\n * Transpose the characters on either side of a collapsed cursor, or\n * if the cursor is at the end of the block, transpose the last two\n * characters.\n */\n\n\nfunction keyCommandTransposeCharacters(editorState) {\n var selection = editorState.getSelection();\n\n if (!selection.isCollapsed()) {\n return editorState;\n }\n\n var offset = selection.getAnchorOffset();\n\n if (offset === 0) {\n return editorState;\n }\n\n var blockKey = selection.getAnchorKey();\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(blockKey);\n var length = block.getLength(); // Nothing to transpose if there aren't two characters.\n\n if (length <= 1) {\n return editorState;\n }\n\n var removalRange;\n var finalSelection;\n\n if (offset === length) {\n // The cursor is at the end of the block. Swap the last two characters.\n removalRange = selection.set('anchorOffset', offset - 1);\n finalSelection = selection;\n } else {\n removalRange = selection.set('focusOffset', offset + 1);\n finalSelection = removalRange.set('anchorOffset', offset + 1);\n } // Extract the character to move as a fragment. This preserves its\n // styling and entity, if any.\n\n\n var movedFragment = getContentStateFragment(content, removalRange);\n var afterRemoval = DraftModifier.removeRange(content, removalRange, 'backward'); // After the removal, the insertion target is one character back.\n\n var selectionAfter = afterRemoval.getSelectionAfter();\n var targetOffset = selectionAfter.getAnchorOffset() - 1;\n var targetRange = selectionAfter.merge({\n anchorOffset: targetOffset,\n focusOffset: targetOffset\n });\n var afterInsert = DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n var newEditorState = EditorState.push(editorState, afterInsert, 'insert-fragment');\n return EditorState.acceptSelection(newEditorState, finalSelection);\n}\n\nmodule.exports = keyCommandTransposeCharacters;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nfunction keyCommandUndo(e, editorState, updateFn) {\n var undoneState = EditorState.undo(editorState); // If the last change to occur was a spellcheck change, allow the undo\n // event to fall through to the browser. This allows the browser to record\n // the unwanted change, which should soon lead it to learn not to suggest\n // the correction again.\n\n if (editorState.getLastChangeType() === 'spellcheck-change') {\n var nativelyRenderedContent = undoneState.getCurrentContent();\n updateFn(EditorState.set(undoneState, {\n nativelyRenderedContent: nativelyRenderedContent\n }));\n return;\n } // Otheriwse, manage the undo behavior manually.\n\n\n e.preventDefault();\n\n if (!editorState.getNativelyRenderedContent()) {\n updateFn(undoneState);\n return;\n } // Trigger a re-render with the current content state to ensure that the\n // component tree has up-to-date props for comparison.\n\n\n updateFn(EditorState.set(editorState, {\n nativelyRenderedContent: null\n })); // Wait to ensure that the re-render has occurred before performing\n // the undo action.\n\n setTimeout(function () {\n updateFn(undoneState);\n }, 0);\n}\n\nmodule.exports = keyCommandUndo;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar Map = Immutable.Map;\n\nfunction modifyBlockForContentState(contentState, selectionState, operation) {\n var startKey = selectionState.getStartKey();\n var endKey = selectionState.getEndKey();\n var blockMap = contentState.getBlockMap();\n var newBlocks = blockMap.toSeq().skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).concat(Map([[endKey, blockMap.get(endKey)]])).map(operation);\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = modifyBlockForContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = require(\"./getNextDelimiterBlockKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar OrderedMap = Immutable.OrderedMap,\n List = Immutable.List;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n if (!key) {\n return;\n }\n\n var block = blockMap.get(key);\n\n if (!block) {\n return;\n }\n\n blockMap.set(key, func(block));\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlockToBeMoved, originalTargetBlock, insertionMode, isExperimentalTreeBlock) {\n if (!isExperimentalTreeBlock) {\n return blockMap;\n } // possible values of 'insertionMode' are: 'after', 'before'\n\n\n var isInsertedAfterTarget = insertionMode === 'after';\n var originalBlockKey = originalBlockToBeMoved.getKey();\n var originalTargetKey = originalTargetBlock.getKey();\n var originalParentKey = originalBlockToBeMoved.getParentKey();\n var originalNextSiblingKey = originalBlockToBeMoved.getNextSiblingKey();\n var originalPrevSiblingKey = originalBlockToBeMoved.getPrevSiblingKey();\n var newParentKey = originalTargetBlock.getParentKey();\n var newNextSiblingKey = isInsertedAfterTarget ? originalTargetBlock.getNextSiblingKey() : originalTargetKey;\n var newPrevSiblingKey = isInsertedAfterTarget ? originalTargetKey : originalTargetBlock.getPrevSiblingKey();\n return blockMap.withMutations(function (blocks) {\n // update old parent\n transformBlock(originalParentKey, blocks, function (block) {\n var parentChildrenList = block.getChildKeys();\n return block.merge({\n children: parentChildrenList[\"delete\"](parentChildrenList.indexOf(originalBlockKey))\n });\n }); // update old prev\n\n transformBlock(originalPrevSiblingKey, blocks, function (block) {\n return block.merge({\n nextSibling: originalNextSiblingKey\n });\n }); // update old next\n\n transformBlock(originalNextSiblingKey, blocks, function (block) {\n return block.merge({\n prevSibling: originalPrevSiblingKey\n });\n }); // update new next\n\n transformBlock(newNextSiblingKey, blocks, function (block) {\n return block.merge({\n prevSibling: originalBlockKey\n });\n }); // update new prev\n\n transformBlock(newPrevSiblingKey, blocks, function (block) {\n return block.merge({\n nextSibling: originalBlockKey\n });\n }); // update new parent\n\n transformBlock(newParentKey, blocks, function (block) {\n var newParentChildrenList = block.getChildKeys();\n var targetBlockIndex = newParentChildrenList.indexOf(originalTargetKey);\n var insertionIndex = isInsertedAfterTarget ? targetBlockIndex + 1 : targetBlockIndex !== 0 ? targetBlockIndex - 1 : 0;\n var newChildrenArray = newParentChildrenList.toArray();\n newChildrenArray.splice(insertionIndex, 0, originalBlockKey);\n return block.merge({\n children: List(newChildrenArray)\n });\n }); // update block\n\n transformBlock(originalBlockKey, blocks, function (block) {\n return block.merge({\n nextSibling: newNextSiblingKey,\n prevSibling: newPrevSiblingKey,\n parent: newParentKey\n });\n });\n });\n};\n\nvar moveBlockInContentState = function moveBlockInContentState(contentState, blockToBeMoved, targetBlock, insertionMode) {\n !(insertionMode !== 'replace') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Replacing blocks is not supported.') : invariant(false) : void 0;\n var targetKey = targetBlock.getKey();\n var blockKey = blockToBeMoved.getKey();\n !(blockKey !== targetKey) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n var blockMap = contentState.getBlockMap();\n var isExperimentalTreeBlock = blockToBeMoved instanceof ContentBlockNode;\n var blocksToBeMoved = [blockToBeMoved];\n var blockMapWithoutBlocksToBeMoved = blockMap[\"delete\"](blockKey);\n\n if (isExperimentalTreeBlock) {\n blocksToBeMoved = [];\n blockMapWithoutBlocksToBeMoved = blockMap.withMutations(function (blocks) {\n var nextSiblingKey = blockToBeMoved.getNextSiblingKey();\n var nextDelimiterBlockKey = getNextDelimiterBlockKey(blockToBeMoved, blocks);\n blocks.toSeq().skipUntil(function (block) {\n return block.getKey() === blockKey;\n }).takeWhile(function (block) {\n var key = block.getKey();\n var isBlockToBeMoved = key === blockKey;\n var hasNextSiblingAndIsNotNextSibling = nextSiblingKey && key !== nextSiblingKey;\n var doesNotHaveNextSiblingAndIsNotDelimiter = !nextSiblingKey && block.getParentKey() && (!nextDelimiterBlockKey || key !== nextDelimiterBlockKey);\n return !!(isBlockToBeMoved || hasNextSiblingAndIsNotNextSibling || doesNotHaveNextSiblingAndIsNotDelimiter);\n }).forEach(function (block) {\n blocksToBeMoved.push(block);\n blocks[\"delete\"](block.getKey());\n });\n });\n }\n\n var blocksBefore = blockMapWithoutBlocksToBeMoved.toSeq().takeUntil(function (v) {\n return v === targetBlock;\n });\n var blocksAfter = blockMapWithoutBlocksToBeMoved.toSeq().skipUntil(function (v) {\n return v === targetBlock;\n }).skip(1);\n var slicedBlocks = blocksToBeMoved.map(function (block) {\n return [block.getKey(), block];\n });\n var newBlocks = OrderedMap();\n\n if (insertionMode === 'before') {\n var blockBefore = contentState.getBlockBefore(targetKey);\n !(!blockBefore || blockBefore.getKey() !== blockToBeMoved.getKey()) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n newBlocks = blocksBefore.concat([].concat(slicedBlocks, [[targetKey, targetBlock]]), blocksAfter).toOrderedMap();\n } else if (insertionMode === 'after') {\n var blockAfter = contentState.getBlockAfter(targetKey);\n !(!blockAfter || blockAfter.getKey() !== blockKey) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n newBlocks = blocksBefore.concat([[targetKey, targetBlock]].concat(slicedBlocks), blocksAfter).toOrderedMap();\n }\n\n return contentState.merge({\n blockMap: updateBlockMapLinks(newBlocks, blockToBeMoved, targetBlock, insertionMode, isExperimentalTreeBlock),\n selectionBefore: contentState.getSelectionAfter(),\n selectionAfter: contentState.getSelectionAfter().merge({\n anchorKey: blockKey,\n focusKey: blockKey\n })\n });\n};\n\nmodule.exports = moveBlockInContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` backward within\n * the selected block. If the selection will go beyond the start of the block,\n * move focus to the end of the previous block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionBackward(editorState, maxDistance) {\n var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionBackward should only be called with a collapsed SelectionState') : void 0;\n var content = editorState.getCurrentContent();\n var key = selection.getStartKey();\n var offset = selection.getStartOffset();\n var focusKey = key;\n var focusOffset = 0;\n\n if (maxDistance > offset) {\n var keyBefore = content.getKeyBefore(key);\n\n if (keyBefore == null) {\n focusKey = key;\n } else {\n focusKey = keyBefore;\n var blockBefore = content.getBlockForKey(keyBefore);\n focusOffset = blockBefore.getText().length;\n }\n } else {\n focusOffset = offset - maxDistance;\n }\n\n return selection.merge({\n focusKey: focusKey,\n focusOffset: focusOffset,\n isBackward: true\n });\n}\n\nmodule.exports = moveSelectionBackward;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` forward within\n * the selected block. If the selection will go beyond the end of the block,\n * move focus to the start of the next block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionForward(editorState, maxDistance) {\n var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionForward should only be called with a collapsed SelectionState') : void 0;\n var key = selection.getStartKey();\n var offset = selection.getStartOffset();\n var content = editorState.getCurrentContent();\n var focusKey = key;\n var focusOffset;\n var block = content.getBlockForKey(key);\n\n if (maxDistance > block.getText().length - offset) {\n focusKey = content.getKeyAfter(key);\n focusOffset = 0;\n } else {\n focusOffset = offset + maxDistance;\n }\n\n return selection.merge({\n focusKey: focusKey,\n focusOffset: focusOffset\n });\n}\n\nmodule.exports = moveSelectionForward;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\n\nvar randomizeContentBlockNodeKeys = function randomizeContentBlockNodeKeys(blockMap) {\n var newKeysRef = {}; // we keep track of root blocks in order to update subsequent sibling links\n\n var lastRootBlock;\n return OrderedMap(blockMap.withMutations(function (blockMapState) {\n blockMapState.forEach(function (block, index) {\n var oldKey = block.getKey();\n var nextKey = block.getNextSiblingKey();\n var prevKey = block.getPrevSiblingKey();\n var childrenKeys = block.getChildKeys();\n var parentKey = block.getParentKey(); // new key that we will use to build linking\n\n var key = generateRandomKey(); // we will add it here to re-use it later\n\n newKeysRef[oldKey] = key;\n\n if (nextKey) {\n var nextBlock = blockMapState.get(nextKey);\n\n if (nextBlock) {\n blockMapState.setIn([nextKey, 'prevSibling'], key);\n } else {\n // this can happen when generating random keys for fragments\n blockMapState.setIn([oldKey, 'nextSibling'], null);\n }\n }\n\n if (prevKey) {\n var prevBlock = blockMapState.get(prevKey);\n\n if (prevBlock) {\n blockMapState.setIn([prevKey, 'nextSibling'], key);\n } else {\n // this can happen when generating random keys for fragments\n blockMapState.setIn([oldKey, 'prevSibling'], null);\n }\n }\n\n if (parentKey && blockMapState.get(parentKey)) {\n var parentBlock = blockMapState.get(parentKey);\n var parentChildrenList = parentBlock.getChildKeys();\n blockMapState.setIn([parentKey, 'children'], parentChildrenList.set(parentChildrenList.indexOf(block.getKey()), key));\n } else {\n // blocks will then be treated as root block nodes\n blockMapState.setIn([oldKey, 'parent'], null);\n\n if (lastRootBlock) {\n blockMapState.setIn([lastRootBlock.getKey(), 'nextSibling'], key);\n blockMapState.setIn([oldKey, 'prevSibling'], newKeysRef[lastRootBlock.getKey()]);\n }\n\n lastRootBlock = blockMapState.get(oldKey);\n }\n\n childrenKeys.forEach(function (childKey) {\n var childBlock = blockMapState.get(childKey);\n\n if (childBlock) {\n blockMapState.setIn([childKey, 'parent'], key);\n } else {\n blockMapState.setIn([oldKey, 'children'], block.getChildKeys().filter(function (child) {\n return child !== childKey;\n }));\n }\n });\n });\n }).toArray().map(function (block) {\n return [newKeysRef[block.getKey()], block.set('key', newKeysRef[block.getKey()])];\n }));\n};\n\nvar randomizeContentBlockKeys = function randomizeContentBlockKeys(blockMap) {\n return OrderedMap(blockMap.toArray().map(function (block) {\n var key = generateRandomKey();\n return [key, block.set('key', key)];\n }));\n};\n\nvar randomizeBlockMapKeys = function randomizeBlockMapKeys(blockMap) {\n var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n\n if (!isTreeBasedBlockMap) {\n return randomizeContentBlockKeys(blockMap);\n }\n\n return randomizeContentBlockNodeKeys(blockMap);\n};\n\nmodule.exports = randomizeBlockMapKeys;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nfunction removeEntitiesAtEdges(contentState, selectionState) {\n var blockMap = contentState.getBlockMap();\n var entityMap = contentState.getEntityMap();\n var updatedBlocks = {};\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var startBlock = blockMap.get(startKey);\n var updatedStart = removeForBlock(entityMap, startBlock, startOffset);\n\n if (updatedStart !== startBlock) {\n updatedBlocks[startKey] = updatedStart;\n }\n\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var endBlock = blockMap.get(endKey);\n\n if (startKey === endKey) {\n endBlock = updatedStart;\n }\n\n var updatedEnd = removeForBlock(entityMap, endBlock, endOffset);\n\n if (updatedEnd !== endBlock) {\n updatedBlocks[endKey] = updatedEnd;\n }\n\n if (!Object.keys(updatedBlocks).length) {\n return contentState.set('selectionAfter', selectionState);\n }\n\n return contentState.merge({\n blockMap: blockMap.merge(updatedBlocks),\n selectionAfter: selectionState\n });\n}\n/**\n * Given a list of characters and an offset that is in the middle of an entity,\n * returns the start and end of the entity that is overlapping the offset.\n * Note: This method requires that the offset be in an entity range.\n */\n\n\nfunction getRemovalRange(characters, entityKey, offset) {\n var removalRange; // Iterates through a list looking for ranges of matching items\n // based on the 'isEqual' callback.\n // Then instead of returning the result, call the 'found' callback\n // with each range.\n // Then filters those ranges based on the 'filter' callback\n //\n // Here we use it to find ranges of characters with the same entity key.\n\n findRangesImmutable(characters, // the list to iterate through\n function (a, b) {\n return a.getEntity() === b.getEntity();\n }, // 'isEqual' callback\n function (element) {\n return element.getEntity() === entityKey;\n }, // 'filter' callback\n function (start, end) {\n // 'found' callback\n if (start <= offset && end >= offset) {\n // this entity overlaps the offset index\n removalRange = {\n start: start,\n end: end\n };\n }\n });\n !(typeof removalRange === 'object') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Removal range must exist within character list.') : invariant(false) : void 0;\n return removalRange;\n}\n\nfunction removeForBlock(entityMap, block, offset) {\n var chars = block.getCharacterList();\n var charBefore = offset > 0 ? chars.get(offset - 1) : undefined;\n var charAfter = offset < chars.count() ? chars.get(offset) : undefined;\n var entityBeforeCursor = charBefore ? charBefore.getEntity() : undefined;\n var entityAfterCursor = charAfter ? charAfter.getEntity() : undefined;\n\n if (entityAfterCursor && entityAfterCursor === entityBeforeCursor) {\n var entity = entityMap.__get(entityAfterCursor);\n\n if (entity.getMutability() !== 'MUTABLE') {\n var _getRemovalRange = getRemovalRange(chars, entityAfterCursor, offset),\n start = _getRemovalRange.start,\n end = _getRemovalRange.end;\n\n var current;\n\n while (start < end) {\n current = chars.get(start);\n chars = chars.set(start, CharacterMetadata.applyEntity(current, null));\n start++;\n }\n\n return block.set('characterList', chars);\n }\n }\n\n return block;\n}\n\nmodule.exports = removeEntitiesAtEdges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = require(\"./getNextDelimiterBlockKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Map = Immutable.Map;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n if (!key) {\n return;\n }\n\n var block = blockMap.get(key);\n\n if (!block) {\n return;\n }\n\n blockMap.set(key, func(block));\n};\n/**\n * Ancestors needs to be preserved when there are non selected\n * children to make sure we do not leave any orphans behind\n */\n\n\nvar getAncestorsKeys = function getAncestorsKeys(blockKey, blockMap) {\n var parents = [];\n\n if (!blockKey) {\n return parents;\n }\n\n var blockNode = blockMap.get(blockKey);\n\n while (blockNode && blockNode.getParentKey()) {\n var parentKey = blockNode.getParentKey();\n\n if (parentKey) {\n parents.push(parentKey);\n }\n\n blockNode = parentKey ? blockMap.get(parentKey) : null;\n }\n\n return parents;\n};\n/**\n * Get all next delimiter keys until we hit a root delimiter and return\n * an array of key references\n */\n\n\nvar getNextDelimitersBlockKeys = function getNextDelimitersBlockKeys(block, blockMap) {\n var nextDelimiters = [];\n\n if (!block) {\n return nextDelimiters;\n }\n\n var nextDelimiter = getNextDelimiterBlockKey(block, blockMap);\n\n while (nextDelimiter && blockMap.get(nextDelimiter)) {\n var _block = blockMap.get(nextDelimiter);\n\n nextDelimiters.push(nextDelimiter); // we do not need to keep checking all root node siblings, just the first occurance\n\n nextDelimiter = _block.getParentKey() ? getNextDelimiterBlockKey(_block, blockMap) : null;\n }\n\n return nextDelimiters;\n};\n\nvar getNextValidSibling = function getNextValidSibling(block, blockMap, originalBlockMap) {\n if (!block) {\n return null;\n } // note that we need to make sure we refer to the original block since this\n // function is called within a withMutations\n\n\n var nextValidSiblingKey = originalBlockMap.get(block.getKey()).getNextSiblingKey();\n\n while (nextValidSiblingKey && !blockMap.get(nextValidSiblingKey)) {\n nextValidSiblingKey = originalBlockMap.get(nextValidSiblingKey).getNextSiblingKey() || null;\n }\n\n return nextValidSiblingKey;\n};\n\nvar getPrevValidSibling = function getPrevValidSibling(block, blockMap, originalBlockMap) {\n if (!block) {\n return null;\n } // note that we need to make sure we refer to the original block since this\n // function is called within a withMutations\n\n\n var prevValidSiblingKey = originalBlockMap.get(block.getKey()).getPrevSiblingKey();\n\n while (prevValidSiblingKey && !blockMap.get(prevValidSiblingKey)) {\n prevValidSiblingKey = originalBlockMap.get(prevValidSiblingKey).getPrevSiblingKey() || null;\n }\n\n return prevValidSiblingKey;\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, startBlock, endBlock, originalBlockMap) {\n return blockMap.withMutations(function (blocks) {\n // update start block if its retained\n transformBlock(startBlock.getKey(), blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n }); // update endblock if its retained\n\n transformBlock(endBlock.getKey(), blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n }); // update start block parent ancestors\n\n getAncestorsKeys(startBlock.getKey(), originalBlockMap).forEach(function (parentKey) {\n return transformBlock(parentKey, blocks, function (block) {\n return block.merge({\n children: block.getChildKeys().filter(function (key) {\n return blocks.get(key);\n }),\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n });\n }); // update start block next - can only happen if startBlock == endBlock\n\n transformBlock(startBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: startBlock.getPrevSiblingKey()\n });\n }); // update start block prev\n\n transformBlock(startBlock.getPrevSiblingKey(), blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap)\n });\n }); // update end block next\n\n transformBlock(endBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n }); // update end block prev\n\n transformBlock(endBlock.getPrevSiblingKey(), blocks, function (block) {\n return block.merge({\n nextSibling: endBlock.getNextSiblingKey()\n });\n }); // update end block parent ancestors\n\n getAncestorsKeys(endBlock.getKey(), originalBlockMap).forEach(function (parentKey) {\n transformBlock(parentKey, blocks, function (block) {\n return block.merge({\n children: block.getChildKeys().filter(function (key) {\n return blocks.get(key);\n }),\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n });\n }); // update next delimiters all the way to a root delimiter\n\n getNextDelimitersBlockKeys(endBlock, originalBlockMap).forEach(function (delimiterKey) {\n return transformBlock(delimiterKey, blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n });\n }); // if parent (startBlock) was deleted\n\n if (blockMap.get(startBlock.getKey()) == null && blockMap.get(endBlock.getKey()) != null && endBlock.getParentKey() === startBlock.getKey() && endBlock.getPrevSiblingKey() == null) {\n var prevSiblingKey = startBlock.getPrevSiblingKey(); // endBlock becomes next sibling of parent's prevSibling\n\n transformBlock(endBlock.getKey(), blocks, function (block) {\n return block.merge({\n prevSibling: prevSiblingKey\n });\n });\n transformBlock(prevSiblingKey, blocks, function (block) {\n return block.merge({\n nextSibling: endBlock.getKey()\n });\n }); // Update parent for previous parent's children, and children for that parent\n\n var prevSibling = prevSiblingKey ? blockMap.get(prevSiblingKey) : null;\n var newParentKey = prevSibling ? prevSibling.getParentKey() : null;\n startBlock.getChildKeys().forEach(function (childKey) {\n transformBlock(childKey, blocks, function (block) {\n return block.merge({\n parent: newParentKey // set to null if there is no parent\n\n });\n });\n });\n\n if (newParentKey != null) {\n var newParent = blockMap.get(newParentKey);\n transformBlock(newParentKey, blocks, function (block) {\n return block.merge({\n children: newParent.getChildKeys().concat(startBlock.getChildKeys())\n });\n });\n } // last child of deleted parent should point to next sibling\n\n\n transformBlock(startBlock.getChildKeys().find(function (key) {\n var block = blockMap.get(key);\n return block.getNextSiblingKey() === null;\n }), blocks, function (block) {\n return block.merge({\n nextSibling: startBlock.getNextSiblingKey()\n });\n });\n }\n });\n};\n\nvar removeRangeFromContentState = function removeRangeFromContentState(contentState, selectionState) {\n if (selectionState.isCollapsed()) {\n return contentState;\n }\n\n var blockMap = contentState.getBlockMap();\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var startBlock = blockMap.get(startKey);\n var endBlock = blockMap.get(endKey); // we assume that ContentBlockNode and ContentBlocks are not mixed together\n\n var isExperimentalTreeBlock = startBlock instanceof ContentBlockNode; // used to retain blocks that should not be deleted to avoid orphan children\n\n var parentAncestors = [];\n\n if (isExperimentalTreeBlock) {\n var endBlockchildrenKeys = endBlock.getChildKeys();\n var endBlockAncestors = getAncestorsKeys(endKey, blockMap); // endBlock has unselected siblings so we can not remove its ancestors parents\n\n if (endBlock.getNextSiblingKey()) {\n parentAncestors = parentAncestors.concat(endBlockAncestors);\n } // endBlock has children so can not remove this block or any of its ancestors\n\n\n if (!endBlockchildrenKeys.isEmpty()) {\n parentAncestors = parentAncestors.concat(endBlockAncestors.concat([endKey]));\n } // we need to retain all ancestors of the next delimiter block\n\n\n parentAncestors = parentAncestors.concat(getAncestorsKeys(getNextDelimiterBlockKey(endBlock, blockMap), blockMap));\n }\n\n var characterList;\n\n if (startBlock === endBlock) {\n characterList = removeFromList(startBlock.getCharacterList(), startOffset, endOffset);\n } else {\n characterList = startBlock.getCharacterList().slice(0, startOffset).concat(endBlock.getCharacterList().slice(endOffset));\n }\n\n var modifiedStart = startBlock.merge({\n text: startBlock.getText().slice(0, startOffset) + endBlock.getText().slice(endOffset),\n characterList: characterList\n }); // If cursor (collapsed) is at the start of the first child, delete parent\n // instead of child\n\n var shouldDeleteParent = isExperimentalTreeBlock && startOffset === 0 && endOffset === 0 && endBlock.getParentKey() === startKey && endBlock.getPrevSiblingKey() == null;\n var newBlocks = shouldDeleteParent ? Map([[startKey, null]]) : blockMap.toSeq().skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).filter(function (_, k) {\n return parentAncestors.indexOf(k) === -1;\n }).concat(Map([[endKey, null]])).map(function (_, k) {\n return k === startKey ? modifiedStart : null;\n });\n var updatedBlockMap = blockMap.merge(newBlocks).filter(function (block) {\n return !!block;\n }); // Only update tree block pointers if the range is across blocks\n\n if (isExperimentalTreeBlock && startBlock !== endBlock) {\n updatedBlockMap = updateBlockMapLinks(updatedBlockMap, startBlock, endBlock, blockMap);\n }\n\n return contentState.merge({\n blockMap: updatedBlockMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: startKey,\n anchorOffset: startOffset,\n focusKey: startKey,\n focusOffset: startOffset,\n isBackward: false\n })\n });\n};\n/**\n * Maintain persistence for target list when removing characters on the\n * head and tail of the character list.\n */\n\n\nvar removeFromList = function removeFromList(targetList, startOffset, endOffset) {\n if (startOffset === 0) {\n while (startOffset < endOffset) {\n targetList = targetList.shift();\n startOffset++;\n }\n } else if (endOffset === targetList.count()) {\n while (endOffset > startOffset) {\n targetList = targetList.pop();\n endOffset--;\n }\n } else {\n var head = targetList.slice(0, startOffset);\n var tail = targetList.slice(endOffset);\n targetList = head.concat(tail).toList();\n }\n\n return targetList;\n};\n\nmodule.exports = removeRangeFromContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar gkx = require(\"./gkx\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\n/**\n * For a collapsed selection state, remove text based on the specified strategy.\n * If the selection state is not collapsed, remove the entire selected range.\n */\n\nfunction removeTextWithStrategy(editorState, strategy, direction) {\n var selection = editorState.getSelection();\n var content = editorState.getCurrentContent();\n var target = selection;\n var anchorKey = selection.getAnchorKey();\n var focusKey = selection.getFocusKey();\n var anchorBlock = content.getBlockForKey(anchorKey);\n\n if (experimentalTreeDataSupport) {\n if (direction === 'forward') {\n if (anchorKey !== focusKey) {\n // For now we ignore forward delete across blocks,\n // if there is demand for this we will implement it.\n return content;\n }\n }\n }\n\n if (selection.isCollapsed()) {\n if (direction === 'forward') {\n if (editorState.isSelectionAtEndOfContent()) {\n return content;\n }\n\n if (experimentalTreeDataSupport) {\n var isAtEndOfBlock = selection.getAnchorOffset() === content.getBlockForKey(anchorKey).getLength();\n\n if (isAtEndOfBlock) {\n var anchorBlockSibling = content.getBlockForKey(anchorBlock.nextSibling);\n\n if (!anchorBlockSibling || anchorBlockSibling.getLength() === 0) {\n // For now we ignore forward delete at the end of a block,\n // if there is demand for this we will implement it.\n return content;\n }\n }\n }\n } else if (editorState.isSelectionAtStartOfContent()) {\n return content;\n }\n\n target = strategy(editorState);\n\n if (target === selection) {\n return content;\n }\n }\n\n return DraftModifier.removeRange(content, target, direction);\n}\n\nmodule.exports = removeTextWithStrategy;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar REGEX_BLOCK_DELIMITER = new RegExp('\\r', 'g');\n\nfunction sanitizeDraftText(input) {\n return input.replace(REGEX_BLOCK_DELIMITER, '');\n}\n\nmodule.exports = sanitizeDraftText;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftEffects = require(\"./DraftEffects\");\n\nvar DraftJsDebugLogging = require(\"./DraftJsDebugLogging\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar containsNode = require(\"fbjs/lib/containsNode\");\n\nvar getActiveElement = require(\"fbjs/lib/getActiveElement\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\");\n\nvar isIE = UserAgent.isBrowser('IE');\n\nfunction getAnonymizedDOM(node, getNodeLabels) {\n if (!node) {\n return '[empty]';\n }\n\n var anonymized = anonymizeTextWithin(node, getNodeLabels);\n\n if (anonymized.nodeType === Node.TEXT_NODE) {\n return anonymized.textContent;\n }\n\n !isElement(anonymized) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Node must be an Element if it is not a text node.') : invariant(false) : void 0;\n var castedElement = anonymized;\n return castedElement.outerHTML;\n}\n\nfunction anonymizeTextWithin(node, getNodeLabels) {\n var labels = getNodeLabels !== undefined ? getNodeLabels(node) : [];\n\n if (node.nodeType === Node.TEXT_NODE) {\n var length = node.textContent.length;\n return getCorrectDocumentFromNode(node).createTextNode('[text ' + length + (labels.length ? ' | ' + labels.join(', ') : '') + ']');\n }\n\n var clone = node.cloneNode();\n\n if (clone.nodeType === 1 && labels.length) {\n clone.setAttribute('data-labels', labels.join(', '));\n }\n\n var childNodes = node.childNodes;\n\n for (var ii = 0; ii < childNodes.length; ii++) {\n clone.appendChild(anonymizeTextWithin(childNodes[ii], getNodeLabels));\n }\n\n return clone;\n}\n\nfunction getAnonymizedEditorDOM(node, getNodeLabels) {\n // grabbing the DOM content of the Draft editor\n var currentNode = node; // this should only be used after checking with isElement\n\n var castedNode = currentNode;\n\n while (currentNode) {\n if (isElement(currentNode) && castedNode.hasAttribute('contenteditable')) {\n // found the Draft editor container\n return getAnonymizedDOM(currentNode, getNodeLabels);\n } else {\n currentNode = currentNode.parentNode;\n castedNode = currentNode;\n }\n }\n\n return 'Could not find contentEditable parent of node';\n}\n\nfunction getNodeLength(node) {\n return node.nodeValue === null ? node.childNodes.length : node.nodeValue.length;\n}\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n */\n\n\nfunction setDraftEditorSelection(selectionState, node, blockKey, nodeStart, nodeEnd) {\n // It's possible that the editor has been removed from the DOM but\n // our selection code doesn't know it yet. Forcing selection in\n // this case may lead to errors, so just bail now.\n var documentObject = getCorrectDocumentFromNode(node);\n\n if (!containsNode(documentObject.documentElement, node)) {\n return;\n }\n\n var selection = documentObject.defaultView.getSelection();\n var anchorKey = selectionState.getAnchorKey();\n var anchorOffset = selectionState.getAnchorOffset();\n var focusKey = selectionState.getFocusKey();\n var focusOffset = selectionState.getFocusOffset();\n var isBackward = selectionState.getIsBackward(); // IE doesn't support backward selection. Swap key/offset pairs.\n\n if (!selection.extend && isBackward) {\n var tempKey = anchorKey;\n var tempOffset = anchorOffset;\n anchorKey = focusKey;\n anchorOffset = focusOffset;\n focusKey = tempKey;\n focusOffset = tempOffset;\n isBackward = false;\n }\n\n var hasAnchor = anchorKey === blockKey && nodeStart <= anchorOffset && nodeEnd >= anchorOffset;\n var hasFocus = focusKey === blockKey && nodeStart <= focusOffset && nodeEnd >= focusOffset; // If the selection is entirely bound within this node, set the selection\n // and be done.\n\n if (hasAnchor && hasFocus) {\n selection.removeAllRanges();\n addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n addFocusToSelection(selection, node, focusOffset - nodeStart, selectionState);\n return;\n }\n\n if (!isBackward) {\n // If the anchor is within this node, set the range start.\n if (hasAnchor) {\n selection.removeAllRanges();\n addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n } // If the focus is within this node, we can assume that we have\n // already set the appropriate start range on the selection, and\n // can simply extend the selection.\n\n\n if (hasFocus) {\n addFocusToSelection(selection, node, focusOffset - nodeStart, selectionState);\n }\n } else {\n // If this node has the focus, set the selection range to be a\n // collapsed range beginning here. Later, when we encounter the anchor,\n // we'll use this information to extend the selection.\n if (hasFocus) {\n selection.removeAllRanges();\n addPointToSelection(selection, node, focusOffset - nodeStart, selectionState);\n } // If this node has the anchor, we may assume that the correct\n // focus information is already stored on the selection object.\n // We keep track of it, reset the selection range, and extend it\n // back to the focus point.\n\n\n if (hasAnchor) {\n var storedFocusNode = selection.focusNode;\n var storedFocusOffset = selection.focusOffset;\n selection.removeAllRanges();\n addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n addFocusToSelection(selection, storedFocusNode, storedFocusOffset, selectionState);\n }\n }\n}\n/**\n * Extend selection towards focus point.\n */\n\n\nfunction addFocusToSelection(selection, node, offset, selectionState) {\n var activeElement = getActiveElement();\n var extend = selection.extend; // containsNode returns false if node is null.\n // Let's refine the type of this value out here so flow knows.\n\n if (extend && node != null && containsNode(activeElement, node)) {\n // If `extend` is called while another element has focus, an error is\n // thrown. We therefore disable `extend` if the active element is somewhere\n // other than the node we are selecting. This should only occur in Firefox,\n // since it is the only browser to support multiple selections.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=921444.\n // logging to catch bug that is being reported in t16250795\n if (offset > getNodeLength(node)) {\n // the call to 'selection.extend' is about to throw\n DraftJsDebugLogging.logSelectionStateFailure({\n anonymizedDom: getAnonymizedEditorDOM(node),\n extraParams: JSON.stringify({\n offset: offset\n }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n } // logging to catch bug that is being reported in t18110632\n\n\n var nodeWasFocus = node === selection.focusNode;\n\n try {\n // Fixes some reports of \"InvalidStateError: Failed to execute 'extend' on\n // 'Selection': This Selection object doesn't have any Ranges.\"\n // Note: selection.extend does not exist in IE.\n if (selection.rangeCount > 0 && selection.extend) {\n selection.extend(node, offset);\n }\n } catch (e) {\n DraftJsDebugLogging.logSelectionStateFailure({\n anonymizedDom: getAnonymizedEditorDOM(node, function (n) {\n var labels = [];\n\n if (n === activeElement) {\n labels.push('active element');\n }\n\n if (n === selection.anchorNode) {\n labels.push('selection anchor node');\n }\n\n if (n === selection.focusNode) {\n labels.push('selection focus node');\n }\n\n return labels;\n }),\n extraParams: JSON.stringify({\n activeElementName: activeElement ? activeElement.nodeName : null,\n nodeIsFocus: node === selection.focusNode,\n nodeWasFocus: nodeWasFocus,\n selectionRangeCount: selection.rangeCount,\n selectionAnchorNodeName: selection.anchorNode ? selection.anchorNode.nodeName : null,\n selectionAnchorOffset: selection.anchorOffset,\n selectionFocusNodeName: selection.focusNode ? selection.focusNode.nodeName : null,\n selectionFocusOffset: selection.focusOffset,\n message: e ? '' + e : null,\n offset: offset\n }, null, 2),\n selectionState: JSON.stringify(selectionState.toJS(), null, 2)\n }); // allow the error to be thrown -\n // better than continuing in a broken state\n\n throw e;\n }\n } else {\n // IE doesn't support extend. This will mean no backward selection.\n // Extract the existing selection range and add focus to it.\n // Additionally, clone the selection range. IE11 throws an\n // InvalidStateError when attempting to access selection properties\n // after the range is detached.\n if (node && selection.rangeCount > 0) {\n var range = selection.getRangeAt(0);\n range.setEnd(node, offset);\n selection.addRange(range.cloneRange());\n }\n }\n}\n\nfunction addPointToSelection(selection, node, offset, selectionState) {\n var range = getCorrectDocumentFromNode(node).createRange(); // logging to catch bug that is being reported in t16250795\n\n if (offset > getNodeLength(node)) {\n // in this case we know that the call to 'range.setStart' is about to throw\n DraftJsDebugLogging.logSelectionStateFailure({\n anonymizedDom: getAnonymizedEditorDOM(node),\n extraParams: JSON.stringify({\n offset: offset\n }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n DraftEffects.handleExtensionCausedError();\n }\n\n range.setStart(node, offset); // IE sometimes throws Unspecified Error when trying to addRange\n\n if (isIE) {\n try {\n selection.addRange(range);\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable-next-line no-console */\n console.warn('Call to selection.addRange() threw exception: ', e);\n }\n }\n } else {\n selection.addRange(range);\n }\n}\n\nmodule.exports = {\n setDraftEditorSelection: setDraftEditorSelection,\n addFocusToSelection: addFocusToSelection\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar modifyBlockForContentState = require(\"./modifyBlockForContentState\");\n\nvar List = Immutable.List,\n Map = Immutable.Map;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n if (!key) {\n return;\n }\n\n var block = blockMap.get(key);\n\n if (!block) {\n return;\n }\n\n blockMap.set(key, func(block));\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlock, belowBlock) {\n return blockMap.withMutations(function (blocks) {\n var originalBlockKey = originalBlock.getKey();\n var belowBlockKey = belowBlock.getKey(); // update block parent\n\n transformBlock(originalBlock.getParentKey(), blocks, function (block) {\n var parentChildrenList = block.getChildKeys();\n var insertionIndex = parentChildrenList.indexOf(originalBlockKey) + 1;\n var newChildrenArray = parentChildrenList.toArray();\n newChildrenArray.splice(insertionIndex, 0, belowBlockKey);\n return block.merge({\n children: List(newChildrenArray)\n });\n }); // update original next block\n\n transformBlock(originalBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: belowBlockKey\n });\n }); // update original block\n\n transformBlock(originalBlockKey, blocks, function (block) {\n return block.merge({\n nextSibling: belowBlockKey\n });\n }); // update below block\n\n transformBlock(belowBlockKey, blocks, function (block) {\n return block.merge({\n prevSibling: originalBlockKey\n });\n });\n });\n};\n\nvar splitBlockInContentState = function splitBlockInContentState(contentState, selectionState) {\n !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Selection range must be collapsed.') : invariant(false) : void 0;\n var key = selectionState.getAnchorKey();\n var blockMap = contentState.getBlockMap();\n var blockToSplit = blockMap.get(key);\n var text = blockToSplit.getText();\n\n if (!text) {\n var blockType = blockToSplit.getType();\n\n if (blockType === 'unordered-list-item' || blockType === 'ordered-list-item') {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n type: 'unstyled',\n depth: 0\n });\n });\n }\n }\n\n var offset = selectionState.getAnchorOffset();\n var chars = blockToSplit.getCharacterList();\n var keyBelow = generateRandomKey();\n var isExperimentalTreeBlock = blockToSplit instanceof ContentBlockNode;\n var blockAbove = blockToSplit.merge({\n text: text.slice(0, offset),\n characterList: chars.slice(0, offset)\n });\n var blockBelow = blockAbove.merge({\n key: keyBelow,\n text: text.slice(offset),\n characterList: chars.slice(offset),\n data: Map()\n });\n var blocksBefore = blockMap.toSeq().takeUntil(function (v) {\n return v === blockToSplit;\n });\n var blocksAfter = blockMap.toSeq().skipUntil(function (v) {\n return v === blockToSplit;\n }).rest();\n var newBlocks = blocksBefore.concat([[key, blockAbove], [keyBelow, blockBelow]], blocksAfter).toOrderedMap();\n\n if (isExperimentalTreeBlock) {\n !blockToSplit.getChildKeys().isEmpty() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ContentBlockNode must not have children') : invariant(false) : void 0;\n newBlocks = updateBlockMapLinks(newBlocks, blockAbove, blockBelow);\n }\n\n return contentState.merge({\n blockMap: newBlocks,\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: keyBelow,\n anchorOffset: 0,\n focusKey: keyBelow,\n focusOffset: 0,\n isBackward: false\n })\n });\n};\n\nmodule.exports = splitBlockInContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar NEWLINE_REGEX = /\\r\\n?|\\n/g;\n\nfunction splitTextIntoTextBlocks(text) {\n return text.split(NEWLINE_REGEX);\n}\n\nmodule.exports = splitTextIntoTextBlocks;","\"use strict\";\n\n/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @typechecks\n * \n * @format\n */\n\n/*eslint-disable no-bitwise */\n\n/**\n * Based on the rfc4122-compliant solution posted at\n * http://stackoverflow.com/questions/105034\n */\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c == 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n}\n\nmodule.exports = uuid;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar PhotosMimeType = require(\"./PhotosMimeType\");\n\nvar createArrayFromMixed = require(\"./createArrayFromMixed\");\n\nvar emptyFunction = require(\"./emptyFunction\");\n\nvar CR_LF_REGEX = new RegExp(\"\\r\\n\", 'g');\nvar LF_ONLY = \"\\n\";\nvar RICH_TEXT_TYPES = {\n 'text/rtf': 1,\n 'text/html': 1\n};\n/**\n * If DataTransferItem is a file then return the Blob of data.\n *\n * @param {object} item\n * @return {?blob}\n */\n\nfunction getFileFromDataTransfer(item) {\n if (item.kind == 'file') {\n return item.getAsFile();\n }\n}\n\nvar DataTransfer =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {object} data\n */\n function DataTransfer(data) {\n this.data = data; // Types could be DOMStringList or array\n\n this.types = data.types ? createArrayFromMixed(data.types) : [];\n }\n /**\n * Is this likely to be a rich text data transfer?\n *\n * @return {boolean}\n */\n\n\n var _proto = DataTransfer.prototype;\n\n _proto.isRichText = function isRichText() {\n // If HTML is available, treat this data as rich text. This way, we avoid\n // using a pasted image if it is packaged with HTML -- this may occur with\n // pastes from MS Word, for example. However this is only rich text if\n // there's accompanying text.\n if (this.getHTML() && this.getText()) {\n return true;\n } // When an image is copied from a preview window, you end up with two\n // DataTransferItems one of which is a file's metadata as text. Skip those.\n\n\n if (this.isImage()) {\n return false;\n }\n\n return this.types.some(function (type) {\n return RICH_TEXT_TYPES[type];\n });\n };\n /**\n * Get raw text.\n *\n * @return {?string}\n */\n\n\n _proto.getText = function getText() {\n var text;\n\n if (this.data.getData) {\n if (!this.types.length) {\n text = this.data.getData('Text');\n } else if (this.types.indexOf('text/plain') != -1) {\n text = this.data.getData('text/plain');\n }\n }\n\n return text ? text.replace(CR_LF_REGEX, LF_ONLY) : null;\n };\n /**\n * Get HTML paste data\n *\n * @return {?string}\n */\n\n\n _proto.getHTML = function getHTML() {\n if (this.data.getData) {\n if (!this.types.length) {\n return this.data.getData('Text');\n } else if (this.types.indexOf('text/html') != -1) {\n return this.data.getData('text/html');\n }\n }\n };\n /**\n * Is this a link data transfer?\n *\n * @return {boolean}\n */\n\n\n _proto.isLink = function isLink() {\n return this.types.some(function (type) {\n return type.indexOf('Url') != -1 || type.indexOf('text/uri-list') != -1 || type.indexOf('text/x-moz-url');\n });\n };\n /**\n * Get a link url.\n *\n * @return {?string}\n */\n\n\n _proto.getLink = function getLink() {\n if (this.data.getData) {\n if (this.types.indexOf('text/x-moz-url') != -1) {\n var url = this.data.getData('text/x-moz-url').split('\\n');\n return url[0];\n }\n\n return this.types.indexOf('text/uri-list') != -1 ? this.data.getData('text/uri-list') : this.data.getData('url');\n }\n\n return null;\n };\n /**\n * Is this an image data transfer?\n *\n * @return {boolean}\n */\n\n\n _proto.isImage = function isImage() {\n var isImage = this.types.some(function (type) {\n // Firefox will have a type of application/x-moz-file for images during\n // dragging\n return type.indexOf('application/x-moz-file') != -1;\n });\n\n if (isImage) {\n return true;\n }\n\n var items = this.getFiles();\n\n for (var i = 0; i < items.length; i++) {\n var type = items[i].type;\n\n if (!PhotosMimeType.isImage(type)) {\n return false;\n }\n }\n\n return true;\n };\n\n _proto.getCount = function getCount() {\n if (this.data.hasOwnProperty('items')) {\n return this.data.items.length;\n } else if (this.data.hasOwnProperty('mozItemCount')) {\n return this.data.mozItemCount;\n } else if (this.data.files) {\n return this.data.files.length;\n }\n\n return null;\n };\n /**\n * Get files.\n *\n * @return {array}\n */\n\n\n _proto.getFiles = function getFiles() {\n if (this.data.items) {\n // createArrayFromMixed doesn't properly handle DataTransferItemLists.\n return Array.prototype.slice.call(this.data.items).map(getFileFromDataTransfer).filter(emptyFunction.thatReturnsArgument);\n } else if (this.data.files) {\n return Array.prototype.slice.call(this.data.files);\n } else {\n return [];\n }\n };\n /**\n * Are there any files to fetch?\n *\n * @return {boolean}\n */\n\n\n _proto.hasFiles = function hasFiles() {\n return this.getFiles().length > 0;\n };\n\n return DataTransfer;\n}();\n\nmodule.exports = DataTransfer;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nmodule.exports = {\n BACKSPACE: 8,\n TAB: 9,\n RETURN: 13,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46,\n COMMA: 188,\n PERIOD: 190,\n A: 65,\n Z: 90,\n ZERO: 48,\n NUMPAD_0: 96,\n NUMPAD_9: 105\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nvar PhotosMimeType = {\n isImage: function isImage(mimeString) {\n return getParts(mimeString)[0] === 'image';\n },\n isJpeg: function isJpeg(mimeString) {\n var parts = getParts(mimeString);\n return PhotosMimeType.isImage(mimeString) && ( // see http://fburl.com/10972194\n parts[1] === 'jpeg' || parts[1] === 'pjpeg');\n }\n};\n\nfunction getParts(mimeString) {\n return mimeString.split('/');\n}\n\nmodule.exports = PhotosMimeType;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * @param {DOMElement} element\n * @param {DOMDocument} doc\n * @return {boolean}\n */\nfunction _isViewportScrollElement(element, doc) {\n return !!doc && (element === doc.documentElement || element === doc.body);\n}\n/**\n * Scroll Module. This class contains 4 simple static functions\n * to be used to access Element.scrollTop/scrollLeft properties.\n * To solve the inconsistencies between browsers when either\n * document.body or document.documentElement is supplied,\n * below logic will be used to alleviate the issue:\n *\n * 1. If 'element' is either 'document.body' or 'document.documentElement,\n * get whichever element's 'scroll{Top,Left}' is larger.\n * 2. If 'element' is either 'document.body' or 'document.documentElement',\n * set the 'scroll{Top,Left}' on both elements.\n */\n\n\nvar Scroll = {\n /**\n * @param {DOMElement} element\n * @return {number}\n */\n getTop: function getTop(element) {\n var doc = element.ownerDocument;\n return _isViewportScrollElement(element, doc) ? // In practice, they will either both have the same value,\n // or one will be zero and the other will be the scroll position\n // of the viewport. So we can use `X || Y` instead of `Math.max(X, Y)`\n doc.body.scrollTop || doc.documentElement.scrollTop : element.scrollTop;\n },\n\n /**\n * @param {DOMElement} element\n * @param {number} newTop\n */\n setTop: function setTop(element, newTop) {\n var doc = element.ownerDocument;\n\n if (_isViewportScrollElement(element, doc)) {\n doc.body.scrollTop = doc.documentElement.scrollTop = newTop;\n } else {\n element.scrollTop = newTop;\n }\n },\n\n /**\n * @param {DOMElement} element\n * @return {number}\n */\n getLeft: function getLeft(element) {\n var doc = element.ownerDocument;\n return _isViewportScrollElement(element, doc) ? doc.body.scrollLeft || doc.documentElement.scrollLeft : element.scrollLeft;\n },\n\n /**\n * @param {DOMElement} element\n * @param {number} newLeft\n */\n setLeft: function setLeft(element, newLeft) {\n var doc = element.ownerDocument;\n\n if (_isViewportScrollElement(element, doc)) {\n doc.body.scrollLeft = doc.documentElement.scrollLeft = newLeft;\n } else {\n element.scrollLeft = newLeft;\n }\n }\n};\nmodule.exports = Scroll;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getStyleProperty = require(\"./getStyleProperty\");\n/**\n * @param {DOMNode} element [description]\n * @param {string} name Overflow style property name.\n * @return {boolean} True if the supplied ndoe is scrollable.\n */\n\n\nfunction _isNodeScrollable(element, name) {\n var overflow = Style.get(element, name);\n return overflow === 'auto' || overflow === 'scroll';\n}\n/**\n * Utilities for querying and mutating style properties.\n */\n\n\nvar Style = {\n /**\n * Gets the style property for the supplied node. This will return either the\n * computed style, if available, or the declared style.\n *\n * @param {DOMNode} node\n * @param {string} name Style property name.\n * @return {?string} Style property value.\n */\n get: getStyleProperty,\n\n /**\n * Determines the nearest ancestor of a node that is scrollable.\n *\n * NOTE: This can be expensive if used repeatedly or on a node nested deeply.\n *\n * @param {?DOMNode} node Node from which to start searching.\n * @return {?DOMWindow|DOMElement} Scroll parent of the supplied node.\n */\n getScrollParent: function getScrollParent(node) {\n if (!node) {\n return null;\n }\n\n var ownerDocument = node.ownerDocument;\n\n while (node && node !== ownerDocument.body) {\n if (_isNodeScrollable(node, 'overflow') || _isNodeScrollable(node, 'overflowY') || _isNodeScrollable(node, 'overflowX')) {\n return node;\n }\n\n node = node.parentNode;\n }\n\n return ownerDocument.defaultView || ownerDocument.parentWindow;\n }\n};\nmodule.exports = Style;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * @stub\n * \n */\n'use strict'; // \\u00a1-\\u00b1\\u00b4-\\u00b8\\u00ba\\u00bb\\u00bf\n// is latin supplement punctuation except fractions and superscript\n// numbers\n// \\u2010-\\u2027\\u2030-\\u205e\n// is punctuation from the general punctuation block:\n// weird quotes, commas, bullets, dashes, etc.\n// \\u30fb\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301f\n// is CJK punctuation\n// \\uff1a-\\uff1f\\uff01-\\uff0f\\uff3b-\\uff40\\uff5b-\\uff65\n// is some full-width/half-width punctuation\n// \\u2E2E\\u061f\\u066a-\\u066c\\u061b\\u060c\\u060d\\uFD3e\\uFD3F\n// is some Arabic punctuation marks\n// \\u1801\\u0964\\u104a\\u104b\n// is misc. other language punctuation marks\n\nvar PUNCTUATION = '[.,+*?$|#{}()\\'\\\\^\\\\-\\\\[\\\\]\\\\\\\\\\\\/!@%\"~=<>_:;' + \"\\u30FB\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301F\\uFF1A-\\uFF1F\\uFF01-\\uFF0F\" + \"\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\u2E2E\\u061F\\u066A-\\u066C\\u061B\\u060C\\u060D\" + \"\\uFD3E\\uFD3F\\u1801\\u0964\\u104A\\u104B\\u2010-\\u2027\\u2030-\\u205E\" + \"\\xA1-\\xB1\\xB4-\\xB8\\xBA\\xBB\\xBF]\";\nmodule.exports = {\n getPunctuation: function getPunctuation() {\n return PUNCTUATION;\n }\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar URI =\n/*#__PURE__*/\nfunction () {\n function URI(uri) {\n _defineProperty(this, \"_uri\", void 0);\n\n this._uri = uri;\n }\n\n var _proto = URI.prototype;\n\n _proto.toString = function toString() {\n return this._uri;\n };\n\n return URI;\n}();\n\nmodule.exports = URI;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Basic (stateless) API for text direction detection\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\n/**\n * RegExp ranges of characters with a *Strong* Bidi_Class value.\n *\n * Data is based on DerivedBidiClass.txt in UCD version 7.0.0.\n *\n * NOTE: For performance reasons, we only support Unicode's\n * Basic Multilingual Plane (BMP) for now.\n */\nvar RANGE_BY_BIDI_TYPE = {\n L: \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u01BA\\u01BB\" + \"\\u01BC-\\u01BF\\u01C0-\\u01C3\\u01C4-\\u0293\\u0294\\u0295-\\u02AF\\u02B0-\\u02B8\" + \"\\u02BB-\\u02C1\\u02D0-\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376-\\u0377\" + \"\\u037A\\u037B-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\" + \"\\u03A3-\\u03F5\\u03F7-\\u0481\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559\" + \"\\u055A-\\u055F\\u0561-\\u0587\\u0589\\u0903\\u0904-\\u0939\\u093B\\u093D\" + \"\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0950\\u0958-\\u0961\\u0964-\\u0965\" + \"\\u0966-\\u096F\\u0970\\u0971\\u0972-\\u0980\\u0982-\\u0983\\u0985-\\u098C\" + \"\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\" + \"\\u09BE-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u09CE\\u09D7\\u09DC-\\u09DD\" + \"\\u09DF-\\u09E1\\u09E6-\\u09EF\\u09F0-\\u09F1\\u09F4-\\u09F9\\u09FA\\u0A03\" + \"\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\" + \"\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\" + \"\\u0A72-\\u0A74\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\" + \"\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0AD0\" + \"\\u0AE0-\\u0AE1\\u0AE6-\\u0AEF\\u0AF0\\u0B02-\\u0B03\\u0B05-\\u0B0C\\u0B0F-\\u0B10\" + \"\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\" + \"\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0B57\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\" + \"\\u0B70\\u0B71\\u0B72-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\" + \"\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\" + \"\\u0BBE-\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\" + \"\\u0BE6-\\u0BEF\\u0BF0-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\" + \"\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C59\\u0C60-\\u0C61\" + \"\\u0C66-\\u0C6F\\u0C7F\\u0C82-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\" + \"\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CBE\\u0CBF\\u0CC0-\\u0CC4\\u0CC6\" + \"\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0CD5-\\u0CD6\\u0CDE\\u0CE0-\\u0CE1\\u0CE6-\\u0CEF\" + \"\\u0CF1-\\u0CF2\\u0D02-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\" + \"\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D57\\u0D60-\\u0D61\" + \"\\u0D66-\\u0D6F\\u0D70-\\u0D75\\u0D79\\u0D7A-\\u0D7F\\u0D82-\\u0D83\\u0D85-\\u0D96\" + \"\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\" + \"\\u0DE6-\\u0DEF\\u0DF2-\\u0DF3\\u0DF4\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E45\" + \"\\u0E46\\u0E4F\\u0E50-\\u0E59\\u0E5A-\\u0E5B\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\" + \"\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\" + \"\\u0EAA-\\u0EAB\\u0EAD-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\" + \"\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F01-\\u0F03\\u0F04-\\u0F12\\u0F13\\u0F14\" + \"\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F20-\\u0F29\\u0F2A-\\u0F33\\u0F34\\u0F36\\u0F38\" + \"\\u0F3E-\\u0F3F\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\" + \"\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FCF\\u0FD0-\\u0FD4\\u0FD5-\\u0FD8\" + \"\\u0FD9-\\u0FDA\\u1000-\\u102A\\u102B-\\u102C\\u1031\\u1038\\u103B-\\u103C\\u103F\" + \"\\u1040-\\u1049\\u104A-\\u104F\\u1050-\\u1055\\u1056-\\u1057\\u105A-\\u105D\\u1061\" + \"\\u1062-\\u1064\\u1065-\\u1066\\u1067-\\u106D\\u106E-\\u1070\\u1075-\\u1081\" + \"\\u1083-\\u1084\\u1087-\\u108C\\u108E\\u108F\\u1090-\\u1099\\u109A-\\u109C\" + \"\\u109E-\\u109F\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FB\\u10FC\" + \"\\u10FD-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\" + \"\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\" + \"\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u1368\" + \"\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166D-\\u166E\" + \"\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EB-\\u16ED\\u16EE-\\u16F0\" + \"\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1735-\\u1736\" + \"\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\" + \"\\u17C7-\\u17C8\\u17D4-\\u17D6\\u17D7\\u17D8-\\u17DA\\u17DC\\u17E0-\\u17E9\" + \"\\u1810-\\u1819\\u1820-\\u1842\\u1843\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\" + \"\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\" + \"\\u1933-\\u1938\\u1946-\\u194F\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\" + \"\\u19B0-\\u19C0\\u19C1-\\u19C7\\u19C8-\\u19C9\\u19D0-\\u19D9\\u19DA\\u1A00-\\u1A16\" + \"\\u1A19-\\u1A1A\\u1A1E-\\u1A1F\\u1A20-\\u1A54\\u1A55\\u1A57\\u1A61\\u1A63-\\u1A64\" + \"\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AA6\\u1AA7\\u1AA8-\\u1AAD\" + \"\\u1B04\\u1B05-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B45-\\u1B4B\" + \"\\u1B50-\\u1B59\\u1B5A-\\u1B60\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1B82\\u1B83-\\u1BA0\" + \"\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BAE-\\u1BAF\\u1BB0-\\u1BB9\\u1BBA-\\u1BE5\\u1BE7\" + \"\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1BFC-\\u1BFF\\u1C00-\\u1C23\\u1C24-\\u1C2B\" + \"\\u1C34-\\u1C35\\u1C3B-\\u1C3F\\u1C40-\\u1C49\\u1C4D-\\u1C4F\\u1C50-\\u1C59\" + \"\\u1C5A-\\u1C77\\u1C78-\\u1C7D\\u1C7E-\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u1CE1\" + \"\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF2-\\u1CF3\\u1CF5-\\u1CF6\\u1D00-\\u1D2B\" + \"\\u1D2C-\\u1D6A\\u1D6B-\\u1D77\\u1D78\\u1D79-\\u1D9A\\u1D9B-\\u1DBF\\u1E00-\\u1F15\" + \"\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\" + \"\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\" + \"\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\" + \"\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\" + \"\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2134\\u2135-\\u2138\\u2139\" + \"\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2182\\u2183-\\u2184\" + \"\\u2185-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\" + \"\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C7B\\u2C7C-\\u2C7D\\u2C7E-\\u2CE4\" + \"\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\" + \"\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\" + \"\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005\\u3006\\u3007\" + \"\\u3021-\\u3029\\u302E-\\u302F\\u3031-\\u3035\\u3038-\\u303A\\u303B\\u303C\" + \"\\u3041-\\u3096\\u309D-\\u309E\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FE\\u30FF\" + \"\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u3191\\u3192-\\u3195\\u3196-\\u319F\" + \"\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3200-\\u321C\\u3220-\\u3229\\u322A-\\u3247\" + \"\\u3248-\\u324F\\u3260-\\u327B\\u327F\\u3280-\\u3289\\u328A-\\u32B0\\u32C0-\\u32CB\" + \"\\u32D0-\\u32FE\\u3300-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DB5\" + \"\\u4E00-\\u9FCC\\uA000-\\uA014\\uA015\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA4F8-\\uA4FD\" + \"\\uA4FE-\\uA4FF\\uA500-\\uA60B\\uA60C\\uA610-\\uA61F\\uA620-\\uA629\\uA62A-\\uA62B\" + \"\\uA640-\\uA66D\\uA66E\\uA680-\\uA69B\\uA69C-\\uA69D\\uA6A0-\\uA6E5\\uA6E6-\\uA6EF\" + \"\\uA6F2-\\uA6F7\\uA722-\\uA76F\\uA770\\uA771-\\uA787\\uA789-\\uA78A\\uA78B-\\uA78E\" + \"\\uA790-\\uA7AD\\uA7B0-\\uA7B1\\uA7F7\\uA7F8-\\uA7F9\\uA7FA\\uA7FB-\\uA801\" + \"\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA823-\\uA824\\uA827\\uA830-\\uA835\" + \"\\uA836-\\uA837\\uA840-\\uA873\\uA880-\\uA881\\uA882-\\uA8B3\\uA8B4-\\uA8C3\" + \"\\uA8CE-\\uA8CF\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8F8-\\uA8FA\\uA8FB\\uA900-\\uA909\" + \"\\uA90A-\\uA925\\uA92E-\\uA92F\\uA930-\\uA946\\uA952-\\uA953\\uA95F\\uA960-\\uA97C\" + \"\\uA983\\uA984-\\uA9B2\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BD-\\uA9C0\\uA9C1-\\uA9CD\" + \"\\uA9CF\\uA9D0-\\uA9D9\\uA9DE-\\uA9DF\\uA9E0-\\uA9E4\\uA9E6\\uA9E7-\\uA9EF\" + \"\\uA9F0-\\uA9F9\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA2F-\\uAA30\\uAA33-\\uAA34\" + \"\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA5F\\uAA60-\\uAA6F\" + \"\\uAA70\\uAA71-\\uAA76\\uAA77-\\uAA79\\uAA7A\\uAA7B\\uAA7D\\uAA7E-\\uAAAF\\uAAB1\" + \"\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADC\\uAADD\\uAADE-\\uAADF\" + \"\\uAAE0-\\uAAEA\\uAAEB\\uAAEE-\\uAAEF\\uAAF0-\\uAAF1\\uAAF2\\uAAF3-\\uAAF4\\uAAF5\" + \"\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\" + \"\\uAB30-\\uAB5A\\uAB5B\\uAB5C-\\uAB5F\\uAB64-\\uAB65\\uABC0-\\uABE2\\uABE3-\\uABE4\" + \"\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEB\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\" + \"\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uE000-\\uF8FF\\uF900-\\uFA6D\\uFA70-\\uFAD9\" + \"\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFF6F\\uFF70\" + \"\\uFF71-\\uFF9D\\uFF9E-\\uFF9F\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\" + \"\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\",\n R: \"\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05D0-\\u05EA\\u05EB-\\u05EF\" + \"\\u05F0-\\u05F2\\u05F3-\\u05F4\\u05F5-\\u05FF\\u07C0-\\u07C9\\u07CA-\\u07EA\" + \"\\u07F4-\\u07F5\\u07FA\\u07FB-\\u07FF\\u0800-\\u0815\\u081A\\u0824\\u0828\" + \"\\u082E-\\u082F\\u0830-\\u083E\\u083F\\u0840-\\u0858\\u085C-\\u085D\\u085E\" + \"\\u085F-\\u089F\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB37\\uFB38-\\uFB3C\" + \"\\uFB3D\\uFB3E\\uFB3F\\uFB40-\\uFB41\\uFB42\\uFB43-\\uFB44\\uFB45\\uFB46-\\uFB4F\",\n AL: \"\\u0608\\u060B\\u060D\\u061B\\u061C\\u061D\\u061E-\\u061F\\u0620-\\u063F\\u0640\" + \"\\u0641-\\u064A\\u066D\\u066E-\\u066F\\u0671-\\u06D3\\u06D4\\u06D5\\u06E5-\\u06E6\" + \"\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FD-\\u06FE\\u06FF\\u0700-\\u070D\\u070E\\u070F\" + \"\\u0710\\u0712-\\u072F\\u074B-\\u074C\\u074D-\\u07A5\\u07B1\\u07B2-\\u07BF\" + \"\\u08A0-\\u08B2\\u08B3-\\u08E3\\uFB50-\\uFBB1\\uFBB2-\\uFBC1\\uFBC2-\\uFBD2\" + \"\\uFBD3-\\uFD3D\\uFD40-\\uFD4F\\uFD50-\\uFD8F\\uFD90-\\uFD91\\uFD92-\\uFDC7\" + \"\\uFDC8-\\uFDCF\\uFDF0-\\uFDFB\\uFDFC\\uFDFE-\\uFDFF\\uFE70-\\uFE74\\uFE75\" + \"\\uFE76-\\uFEFC\\uFEFD-\\uFEFE\"\n};\nvar REGEX_STRONG = new RegExp('[' + RANGE_BY_BIDI_TYPE.L + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\nvar REGEX_RTL = new RegExp('[' + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\n/**\n * Returns the first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @return A character with strong bidi direction, or null if not found\n */\n\nfunction firstStrongChar(str) {\n var match = REGEX_STRONG.exec(str);\n return match == null ? null : match[0];\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @return The resolved direction\n */\n\n\nfunction firstStrongCharDir(str) {\n var strongChar = firstStrongChar(str);\n\n if (strongChar == null) {\n return UnicodeBidiDirection.NEUTRAL;\n }\n\n return REGEX_RTL.exec(strongChar) ? UnicodeBidiDirection.RTL : UnicodeBidiDirection.LTR;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @param fallback Fallback direction, used if no strong direction detected\n * for the block (default = NEUTRAL)\n * @return The resolved direction\n */\n\n\nfunction resolveBlockDir(str, fallback) {\n fallback = fallback || UnicodeBidiDirection.NEUTRAL;\n\n if (!str.length) {\n return fallback;\n }\n\n var blockDir = firstStrongCharDir(str);\n return blockDir === UnicodeBidiDirection.NEUTRAL ? fallback : blockDir;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * NOTE: This function is similar to resolveBlockDir(), but uses the global\n * direction as the fallback, so it *always* returns a Strong direction,\n * making it useful for integration in places that you need to make the final\n * decision, like setting some CSS class.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return The resolved Strong direction\n */\n\n\nfunction getDirection(str, strongFallback) {\n if (!strongFallback) {\n strongFallback = UnicodeBidiDirection.getGlobalDir();\n }\n\n !UnicodeBidiDirection.isStrong(strongFallback) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Fallback direction must be a strong direction') : invariant(false) : void 0;\n return resolveBlockDir(str, strongFallback);\n}\n/**\n * Returns true if getDirection(arguments...) returns LTR.\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return True if the resolved direction is LTR\n */\n\n\nfunction isDirectionLTR(str, strongFallback) {\n return getDirection(str, strongFallback) === UnicodeBidiDirection.LTR;\n}\n/**\n * Returns true if getDirection(arguments...) returns RTL.\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return True if the resolved direction is RTL\n */\n\n\nfunction isDirectionRTL(str, strongFallback) {\n return getDirection(str, strongFallback) === UnicodeBidiDirection.RTL;\n}\n\nvar UnicodeBidi = {\n firstStrongChar: firstStrongChar,\n firstStrongCharDir: firstStrongCharDir,\n resolveBlockDir: resolveBlockDir,\n getDirection: getDirection,\n isDirectionLTR: isDirectionLTR,\n isDirectionRTL: isDirectionRTL\n};\nmodule.exports = UnicodeBidi;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Constants to represent text directionality\n *\n * Also defines a *global* direciton, to be used in bidi algorithms as a\n * default fallback direciton, when no better direction is found or provided.\n *\n * NOTE: Use `setGlobalDir()`, or update `initGlobalDir()`, to set the initial\n * global direction value based on the application.\n *\n * Part of the implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar NEUTRAL = 'NEUTRAL'; // No strong direction\n\nvar LTR = 'LTR'; // Left-to-Right direction\n\nvar RTL = 'RTL'; // Right-to-Left direction\n\nvar globalDir = null; // == Helpers ==\n\n/**\n * Check if a directionality value is a Strong one\n */\n\nfunction isStrong(dir) {\n return dir === LTR || dir === RTL;\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property.\n */\n\n\nfunction getHTMLDir(dir) {\n !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n return dir === LTR ? 'ltr' : 'rtl';\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property, but returns null if `dir` has same value as `otherDir`.\n * `null`.\n */\n\n\nfunction getHTMLDirIfDifferent(dir, otherDir) {\n !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n !isStrong(otherDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`otherDir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n return dir === otherDir ? null : getHTMLDir(dir);\n} // == Global Direction ==\n\n/**\n * Set the global direction.\n */\n\n\nfunction setGlobalDir(dir) {\n globalDir = dir;\n}\n/**\n * Initialize the global direction\n */\n\n\nfunction initGlobalDir() {\n setGlobalDir(LTR);\n}\n/**\n * Get the global direction\n */\n\n\nfunction getGlobalDir() {\n if (!globalDir) {\n this.initGlobalDir();\n }\n\n !globalDir ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Global direction not set.') : invariant(false) : void 0;\n return globalDir;\n}\n\nvar UnicodeBidiDirection = {\n // Values\n NEUTRAL: NEUTRAL,\n LTR: LTR,\n RTL: RTL,\n // Helpers\n isStrong: isStrong,\n getHTMLDir: getHTMLDir,\n getHTMLDirIfDifferent: getHTMLDirIfDifferent,\n // Global Direction\n setGlobalDir: setGlobalDir,\n initGlobalDir: initGlobalDir,\n getGlobalDir: getGlobalDir\n};\nmodule.exports = UnicodeBidiDirection;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Stateful API for text direction detection\n *\n * This class can be used in applications where you need to detect the\n * direction of a sequence of text blocks, where each direction shall be used\n * as the fallback direction for the next one.\n *\n * NOTE: A default direction, if not provided, is set based on the global\n * direction, as defined by `UnicodeBidiDirection`.\n *\n * == Example ==\n * ```\n * var UnicodeBidiService = require('UnicodeBidiService');\n *\n * var bidiService = new UnicodeBidiService();\n *\n * ...\n *\n * bidiService.reset();\n * for (var para in paragraphs) {\n * var dir = bidiService.getDirection(para);\n * ...\n * }\n * ```\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar UnicodeBidi = require(\"./UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\nvar UnicodeBidiService =\n/*#__PURE__*/\nfunction () {\n /**\n * Stateful class for paragraph direction detection\n *\n * @param defaultDir Default direction of the service\n */\n function UnicodeBidiService(defaultDir) {\n _defineProperty(this, \"_defaultDir\", void 0);\n\n _defineProperty(this, \"_lastDir\", void 0);\n\n if (!defaultDir) {\n defaultDir = UnicodeBidiDirection.getGlobalDir();\n } else {\n !UnicodeBidiDirection.isStrong(defaultDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Default direction must be a strong direction (LTR or RTL)') : invariant(false) : void 0;\n }\n\n this._defaultDir = defaultDir;\n this.reset();\n }\n /**\n * Reset the internal state\n *\n * Instead of creating a new instance, you can just reset() your instance\n * everytime you start a new loop.\n */\n\n\n var _proto = UnicodeBidiService.prototype;\n\n _proto.reset = function reset() {\n this._lastDir = this._defaultDir;\n };\n /**\n * Returns the direction of a block of text, and remembers it as the\n * fall-back direction for the next paragraph.\n *\n * @param str A text block, e.g. paragraph, table cell, tag\n * @return The resolved direction\n */\n\n\n _proto.getDirection = function getDirection(str) {\n this._lastDir = UnicodeBidi.getDirection(str, this._lastDir);\n return this._lastDir;\n };\n\n return UnicodeBidiService;\n}();\n\nmodule.exports = UnicodeBidiService;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * Unicode-enabled replacesments for basic String functions.\n *\n * All the functions in this module assume that the input string is a valid\n * UTF-16 encoding of a Unicode sequence. If it's not the case, the behavior\n * will be undefined.\n *\n * WARNING: Since this module is typechecks-enforced, you may find new bugs\n * when replacing normal String functions with ones provided here.\n */\n'use strict';\n\nvar invariant = require(\"./invariant\"); // These two ranges are consecutive so anything in [HIGH_START, LOW_END] is a\n// surrogate code unit.\n\n\nvar SURROGATE_HIGH_START = 0xD800;\nvar SURROGATE_HIGH_END = 0xDBFF;\nvar SURROGATE_LOW_START = 0xDC00;\nvar SURROGATE_LOW_END = 0xDFFF;\nvar SURROGATE_UNITS_REGEX = /[\\uD800-\\uDFFF]/;\n/**\n * @param {number} codeUnit A Unicode code-unit, in range [0, 0x10FFFF]\n * @return {boolean} Whether code-unit is in a surrogate (hi/low) range\n */\n\nfunction isCodeUnitInSurrogateRange(codeUnit) {\n return SURROGATE_HIGH_START <= codeUnit && codeUnit <= SURROGATE_LOW_END;\n}\n/**\n * Returns whether the two characters starting at `index` form a surrogate pair.\n * For example, given the string s = \"\\uD83D\\uDE0A\", (s, 0) returns true and\n * (s, 1) returns false.\n *\n * @param {string} str\n * @param {number} index\n * @return {boolean}\n */\n\n\nfunction isSurrogatePair(str, index) {\n !(0 <= index && index < str.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isSurrogatePair: Invalid index %s for string length %s.', index, str.length) : invariant(false) : void 0;\n\n if (index + 1 === str.length) {\n return false;\n }\n\n var first = str.charCodeAt(index);\n var second = str.charCodeAt(index + 1);\n return SURROGATE_HIGH_START <= first && first <= SURROGATE_HIGH_END && SURROGATE_LOW_START <= second && second <= SURROGATE_LOW_END;\n}\n/**\n * @param {string} str Non-empty string\n * @return {boolean} True if the input includes any surrogate code units\n */\n\n\nfunction hasSurrogateUnit(str) {\n return SURROGATE_UNITS_REGEX.test(str);\n}\n/**\n * Return the length of the original Unicode character at given position in the\n * String by looking into the UTF-16 code unit; that is equal to 1 for any\n * non-surrogate characters in BMP ([U+0000..U+D7FF] and [U+E000, U+FFFF]); and\n * returns 2 for the hi/low surrogates ([U+D800..U+DFFF]), which are in fact\n * representing non-BMP characters ([U+10000..U+10FFFF]).\n *\n * Examples:\n * - '\\u0020' => 1\n * - '\\u3020' => 1\n * - '\\uD835' => 2\n * - '\\uD835\\uDDEF' => 2\n * - '\\uDDEF' => 2\n *\n * @param {string} str Non-empty string\n * @param {number} pos Position in the string to look for one code unit\n * @return {number} Number 1 or 2\n */\n\n\nfunction getUTF16Length(str, pos) {\n return 1 + isCodeUnitInSurrogateRange(str.charCodeAt(pos));\n}\n/**\n * Fully Unicode-enabled replacement for String#length\n *\n * @param {string} str Valid Unicode string\n * @return {number} The number of Unicode characters in the string\n */\n\n\nfunction strlen(str) {\n // Call the native functions if there's no surrogate char\n if (!hasSurrogateUnit(str)) {\n return str.length;\n }\n\n var len = 0;\n\n for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n len++;\n }\n\n return len;\n}\n/**\n * Fully Unicode-enabled replacement for String#substr()\n *\n * @param {string} str Valid Unicode string\n * @param {number} start Location in Unicode sequence to begin extracting\n * @param {?number} length The number of Unicode characters to extract\n * (default: to the end of the string)\n * @return {string} Extracted sub-string\n */\n\n\nfunction substr(str, start, length) {\n start = start || 0;\n length = length === undefined ? Infinity : length || 0; // Call the native functions if there's no surrogate char\n\n if (!hasSurrogateUnit(str)) {\n return str.substr(start, length);\n } // Obvious cases\n\n\n var size = str.length;\n\n if (size <= 0 || start > size || length <= 0) {\n return '';\n } // Find the actual starting position\n\n\n var posA = 0;\n\n if (start > 0) {\n for (; start > 0 && posA < size; start--) {\n posA += getUTF16Length(str, posA);\n }\n\n if (posA >= size) {\n return '';\n }\n } else if (start < 0) {\n for (posA = size; start < 0 && 0 < posA; start++) {\n posA -= getUTF16Length(str, posA - 1);\n }\n\n if (posA < 0) {\n posA = 0;\n }\n } // Find the actual ending position\n\n\n var posB = size;\n\n if (length < size) {\n for (posB = posA; length > 0 && posB < size; length--) {\n posB += getUTF16Length(str, posB);\n }\n }\n\n return str.substring(posA, posB);\n}\n/**\n * Fully Unicode-enabled replacement for String#substring()\n *\n * @param {string} str Valid Unicode string\n * @param {number} start Location in Unicode sequence to begin extracting\n * @param {?number} end Location in Unicode sequence to end extracting\n * (default: end of the string)\n * @return {string} Extracted sub-string\n */\n\n\nfunction substring(str, start, end) {\n start = start || 0;\n end = end === undefined ? Infinity : end || 0;\n\n if (start < 0) {\n start = 0;\n }\n\n if (end < 0) {\n end = 0;\n }\n\n var length = Math.abs(end - start);\n start = start < end ? start : end;\n return substr(str, start, length);\n}\n/**\n * Get a list of Unicode code-points from a String\n *\n * @param {string} str Valid Unicode string\n * @return {array} A list of code-points in [0..0x10FFFF]\n */\n\n\nfunction getCodePoints(str) {\n var codePoints = [];\n\n for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n codePoints.push(str.codePointAt(pos));\n }\n\n return codePoints;\n}\n\nvar UnicodeUtils = {\n getCodePoints: getCodePoints,\n getUTF16Length: getUTF16Length,\n hasSurrogateUnit: hasSurrogateUnit,\n isCodeUnitInSurrogateRange: isCodeUnitInSurrogateRange,\n isSurrogatePair: isSurrogatePair,\n strlen: strlen,\n substring: substring,\n substr: substr\n};\nmodule.exports = UnicodeUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar UserAgentData = require(\"./UserAgentData\");\n\nvar VersionRange = require(\"./VersionRange\");\n\nvar mapObject = require(\"./mapObject\");\n\nvar memoizeStringOnly = require(\"./memoizeStringOnly\");\n/**\n * Checks to see whether `name` and `version` satisfy `query`.\n *\n * @param {string} name Name of the browser, device, engine or platform\n * @param {?string} version Version of the browser, engine or platform\n * @param {string} query Query of form \"Name [range expression]\"\n * @param {?function} normalizer Optional pre-processor for range expression\n * @return {boolean}\n */\n\n\nfunction compare(name, version, query, normalizer) {\n // check for exact match with no version\n if (name === query) {\n return true;\n } // check for non-matching names\n\n\n if (!query.startsWith(name)) {\n return false;\n } // full comparison with version\n\n\n var range = query.slice(name.length);\n\n if (version) {\n range = normalizer ? normalizer(range) : range;\n return VersionRange.contains(range, version);\n }\n\n return false;\n}\n/**\n * Normalizes `version` by stripping any \"NT\" prefix, but only on the Windows\n * platform.\n *\n * Mimics the stripping performed by the `UserAgentWindowsPlatform` PHP class.\n *\n * @param {string} version\n * @return {string}\n */\n\n\nfunction normalizePlatformVersion(version) {\n if (UserAgentData.platformName === 'Windows') {\n return version.replace(/^\\s*NT/, '');\n }\n\n return version;\n}\n/**\n * Provides client-side access to the authoritative PHP-generated User Agent\n * information supplied by the server.\n */\n\n\nvar UserAgent = {\n /**\n * Check if the User Agent browser matches `query`.\n *\n * `query` should be a string like \"Chrome\" or \"Chrome > 33\".\n *\n * Valid browser names include:\n *\n * - ACCESS NetFront\n * - AOL\n * - Amazon Silk\n * - Android\n * - BlackBerry\n * - BlackBerry PlayBook\n * - Chrome\n * - Chrome for iOS\n * - Chrome frame\n * - Facebook PHP SDK\n * - Facebook for iOS\n * - Firefox\n * - IE\n * - IE Mobile\n * - Mobile Safari\n * - Motorola Internet Browser\n * - Nokia\n * - Openwave Mobile Browser\n * - Opera\n * - Opera Mini\n * - Opera Mobile\n * - Safari\n * - UIWebView\n * - Unknown\n * - webOS\n * - etc...\n *\n * An authoritative list can be found in the PHP `BrowserDetector` class and\n * related classes in the same file (see calls to `new UserAgentBrowser` here:\n * https://fburl.com/50728104).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isBrowser: function isBrowser(query) {\n return compare(UserAgentData.browserName, UserAgentData.browserFullVersion, query);\n },\n\n /**\n * Check if the User Agent browser uses a 32 or 64 bit architecture.\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"32\" or \"64\".\n * @return {boolean}\n */\n isBrowserArchitecture: function isBrowserArchitecture(query) {\n return compare(UserAgentData.browserArchitecture, null, query);\n },\n\n /**\n * Check if the User Agent device matches `query`.\n *\n * `query` should be a string like \"iPhone\" or \"iPad\".\n *\n * Valid device names include:\n *\n * - Kindle\n * - Kindle Fire\n * - Unknown\n * - iPad\n * - iPhone\n * - iPod\n * - etc...\n *\n * An authoritative list can be found in the PHP `DeviceDetector` class and\n * related classes in the same file (see calls to `new UserAgentDevice` here:\n * https://fburl.com/50728332).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name\"\n * @return {boolean}\n */\n isDevice: function isDevice(query) {\n return compare(UserAgentData.deviceName, null, query);\n },\n\n /**\n * Check if the User Agent rendering engine matches `query`.\n *\n * `query` should be a string like \"WebKit\" or \"WebKit >= 537\".\n *\n * Valid engine names include:\n *\n * - Gecko\n * - Presto\n * - Trident\n * - WebKit\n * - etc...\n *\n * An authoritative list can be found in the PHP `RenderingEngineDetector`\n * class related classes in the same file (see calls to `new\n * UserAgentRenderingEngine` here: https://fburl.com/50728617).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isEngine: function isEngine(query) {\n return compare(UserAgentData.engineName, UserAgentData.engineVersion, query);\n },\n\n /**\n * Check if the User Agent platform matches `query`.\n *\n * `query` should be a string like \"Windows\" or \"iOS 5 - 6\".\n *\n * Valid platform names include:\n *\n * - Android\n * - BlackBerry OS\n * - Java ME\n * - Linux\n * - Mac OS X\n * - Mac OS X Calendar\n * - Mac OS X Internet Account\n * - Symbian\n * - SymbianOS\n * - Windows\n * - Windows Mobile\n * - Windows Phone\n * - iOS\n * - iOS Facebook Integration Account\n * - iOS Facebook Social Sharing UI\n * - webOS\n * - Chrome OS\n * - etc...\n *\n * An authoritative list can be found in the PHP `PlatformDetector` class and\n * related classes in the same file (see calls to `new UserAgentPlatform`\n * here: https://fburl.com/50729226).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isPlatform: function isPlatform(query) {\n return compare(UserAgentData.platformName, UserAgentData.platformFullVersion, query, normalizePlatformVersion);\n },\n\n /**\n * Check if the User Agent platform is a 32 or 64 bit architecture.\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"32\" or \"64\".\n * @return {boolean}\n */\n isPlatformArchitecture: function isPlatformArchitecture(query) {\n return compare(UserAgentData.platformArchitecture, null, query);\n }\n};\nmodule.exports = mapObject(UserAgent, memoizeStringOnly);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Usage note:\n * This module makes a best effort to export the same data we would internally.\n * At Facebook we use a server-generated module that does the parsing and\n * exports the data for the client to use. We can't rely on a server-side\n * implementation in open source so instead we make use of an open source\n * library to do the heavy lifting and then make some adjustments as necessary.\n * It's likely there will be some differences. Some we can smooth over.\n * Others are going to be harder.\n */\n'use strict';\n\nvar UAParser = require(\"ua-parser-js\");\n\nvar UNKNOWN = 'Unknown';\nvar PLATFORM_MAP = {\n 'Mac OS': 'Mac OS X'\n};\n/**\n * Convert from UAParser platform name to what we expect.\n */\n\nfunction convertPlatformName(name) {\n return PLATFORM_MAP[name] || name;\n}\n/**\n * Get the version number in parts. This is very naive. We actually get major\n * version as a part of UAParser already, which is generally good enough, but\n * let's get the minor just in case.\n */\n\n\nfunction getBrowserVersion(version) {\n if (!version) {\n return {\n major: '',\n minor: ''\n };\n }\n\n var parts = version.split('.');\n return {\n major: parts[0],\n minor: parts[1]\n };\n}\n/**\n * Get the UA data fom UAParser and then convert it to the format we're\n * expecting for our APIS.\n */\n\n\nvar parser = new UAParser();\nvar results = parser.getResult(); // Do some conversion first.\n\nvar browserVersionData = getBrowserVersion(results.browser.version);\nvar uaData = {\n browserArchitecture: results.cpu.architecture || UNKNOWN,\n browserFullVersion: results.browser.version || UNKNOWN,\n browserMinorVersion: browserVersionData.minor || UNKNOWN,\n browserName: results.browser.name || UNKNOWN,\n browserVersion: results.browser.major || UNKNOWN,\n deviceName: results.device.model || UNKNOWN,\n engineName: results.engine.name || UNKNOWN,\n engineVersion: results.engine.version || UNKNOWN,\n platformArchitecture: results.cpu.architecture || UNKNOWN,\n platformName: convertPlatformName(results.os.name) || UNKNOWN,\n platformVersion: results.os.version || UNKNOWN,\n platformFullVersion: results.os.version || UNKNOWN\n};\nmodule.exports = uaData;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar componentRegex = /\\./;\nvar orRegex = /\\|\\|/;\nvar rangeRegex = /\\s+\\-\\s+/;\nvar modifierRegex = /^(<=|<|=|>=|~>|~|>|)?\\s*(.+)/;\nvar numericRegex = /^(\\d*)(.*)/;\n/**\n * Splits input `range` on \"||\" and returns true if any subrange matches\n * `version`.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\nfunction checkOrExpression(range, version) {\n var expressions = range.split(orRegex);\n\n if (expressions.length > 1) {\n return expressions.some(function (range) {\n return VersionRange.contains(range, version);\n });\n } else {\n range = expressions[0].trim();\n return checkRangeExpression(range, version);\n }\n}\n/**\n * Splits input `range` on \" - \" (the surrounding whitespace is required) and\n * returns true if version falls between the two operands.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkRangeExpression(range, version) {\n var expressions = range.split(rangeRegex);\n !(expressions.length > 0 && expressions.length <= 2) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'the \"-\" operator expects exactly 2 operands') : invariant(false) : void 0;\n\n if (expressions.length === 1) {\n return checkSimpleExpression(expressions[0], version);\n } else {\n var startVersion = expressions[0],\n endVersion = expressions[1];\n !(isSimpleVersion(startVersion) && isSimpleVersion(endVersion)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'operands to the \"-\" operator must be simple (no modifiers)') : invariant(false) : void 0;\n return checkSimpleExpression('>=' + startVersion, version) && checkSimpleExpression('<=' + endVersion, version);\n }\n}\n/**\n * Checks if `range` matches `version`. `range` should be a \"simple\" range (ie.\n * not a compound range using the \" - \" or \"||\" operators).\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkSimpleExpression(range, version) {\n range = range.trim();\n\n if (range === '') {\n return true;\n }\n\n var versionComponents = version.split(componentRegex);\n\n var _getModifierAndCompon = getModifierAndComponents(range),\n modifier = _getModifierAndCompon.modifier,\n rangeComponents = _getModifierAndCompon.rangeComponents;\n\n switch (modifier) {\n case '<':\n return checkLessThan(versionComponents, rangeComponents);\n\n case '<=':\n return checkLessThanOrEqual(versionComponents, rangeComponents);\n\n case '>=':\n return checkGreaterThanOrEqual(versionComponents, rangeComponents);\n\n case '>':\n return checkGreaterThan(versionComponents, rangeComponents);\n\n case '~':\n case '~>':\n return checkApproximateVersion(versionComponents, rangeComponents);\n\n default:\n return checkEqual(versionComponents, rangeComponents);\n }\n}\n/**\n * Checks whether `a` is less than `b`.\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThan(a, b) {\n return compareComponents(a, b) === -1;\n}\n/**\n * Checks whether `a` is less than or equal to `b`.\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThanOrEqual(a, b) {\n var result = compareComponents(a, b);\n return result === -1 || result === 0;\n}\n/**\n * Checks whether `a` is equal to `b`.\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkEqual(a, b) {\n return compareComponents(a, b) === 0;\n}\n/**\n * Checks whether `a` is greater than or equal to `b`.\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThanOrEqual(a, b) {\n var result = compareComponents(a, b);\n return result === 1 || result === 0;\n}\n/**\n * Checks whether `a` is greater than `b`.\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThan(a, b) {\n return compareComponents(a, b) === 1;\n}\n/**\n * Checks whether `a` is \"reasonably close\" to `b` (as described in\n * https://www.npmjs.org/doc/misc/semver.html). For example, if `b` is \"1.3.1\"\n * then \"reasonably close\" is defined as \">= 1.3.1 and < 1.4\".\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkApproximateVersion(a, b) {\n var lowerBound = b.slice();\n var upperBound = b.slice();\n\n if (upperBound.length > 1) {\n upperBound.pop();\n }\n\n var lastIndex = upperBound.length - 1;\n var numeric = parseInt(upperBound[lastIndex], 10);\n\n if (isNumber(numeric)) {\n upperBound[lastIndex] = numeric + 1 + '';\n }\n\n return checkGreaterThanOrEqual(a, lowerBound) && checkLessThan(a, upperBound);\n}\n/**\n * Extracts the optional modifier (<, <=, =, >=, >, ~, ~>) and version\n * components from `range`.\n *\n * For example, given `range` \">= 1.2.3\" returns an object with a `modifier` of\n * `\">=\"` and `components` of `[1, 2, 3]`.\n *\n * @param {string} range\n * @returns {object}\n */\n\n\nfunction getModifierAndComponents(range) {\n var rangeComponents = range.split(componentRegex);\n var matches = rangeComponents[0].match(modifierRegex);\n !matches ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'expected regex to match but it did not') : invariant(false) : void 0;\n return {\n modifier: matches[1],\n rangeComponents: [matches[2]].concat(rangeComponents.slice(1))\n };\n}\n/**\n * Determines if `number` is a number.\n *\n * @param {mixed} number\n * @returns {boolean}\n */\n\n\nfunction isNumber(number) {\n return !isNaN(number) && isFinite(number);\n}\n/**\n * Tests whether `range` is a \"simple\" version number without any modifiers\n * (\">\", \"~\" etc).\n *\n * @param {string} range\n * @returns {boolean}\n */\n\n\nfunction isSimpleVersion(range) {\n return !getModifierAndComponents(range).modifier;\n}\n/**\n * Zero-pads array `array` until it is at least `length` long.\n *\n * @param {array} array\n * @param {number} length\n */\n\n\nfunction zeroPad(array, length) {\n for (var i = array.length; i < length; i++) {\n array[i] = '0';\n }\n}\n/**\n * Normalizes `a` and `b` in preparation for comparison by doing the following:\n *\n * - zero-pads `a` and `b`\n * - marks any \"x\", \"X\" or \"*\" component in `b` as equivalent by zero-ing it out\n * in both `a` and `b`\n * - marks any final \"*\" component in `b` as a greedy wildcard by zero-ing it\n * and all of its successors in `a`\n *\n * @param {array} a\n * @param {array} b\n * @returns {array>}\n */\n\n\nfunction normalizeVersions(a, b) {\n a = a.slice();\n b = b.slice();\n zeroPad(a, b.length); // mark \"x\" and \"*\" components as equal\n\n for (var i = 0; i < b.length; i++) {\n var matches = b[i].match(/^[x*]$/i);\n\n if (matches) {\n b[i] = a[i] = '0'; // final \"*\" greedily zeros all remaining components\n\n if (matches[0] === '*' && i === b.length - 1) {\n for (var j = i; j < a.length; j++) {\n a[j] = '0';\n }\n }\n }\n }\n\n zeroPad(b, a.length);\n return [a, b];\n}\n/**\n * Returns the numerical -- not the lexicographical -- ordering of `a` and `b`.\n *\n * For example, `10-alpha` is greater than `2-beta`.\n *\n * @param {string} a\n * @param {string} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareNumeric(a, b) {\n var aPrefix = a.match(numericRegex)[1];\n var bPrefix = b.match(numericRegex)[1];\n var aNumeric = parseInt(aPrefix, 10);\n var bNumeric = parseInt(bPrefix, 10);\n\n if (isNumber(aNumeric) && isNumber(bNumeric) && aNumeric !== bNumeric) {\n return compare(aNumeric, bNumeric);\n } else {\n return compare(a, b);\n }\n}\n/**\n * Returns the ordering of `a` and `b`.\n *\n * @param {string|number} a\n * @param {string|number} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compare(a, b) {\n !(typeof a === typeof b) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '\"a\" and \"b\" must be of the same type') : invariant(false) : void 0;\n\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else {\n return 0;\n }\n}\n/**\n * Compares arrays of version components.\n *\n * @param {array} a\n * @param {array} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareComponents(a, b) {\n var _normalizeVersions = normalizeVersions(a, b),\n aNormalized = _normalizeVersions[0],\n bNormalized = _normalizeVersions[1];\n\n for (var i = 0; i < bNormalized.length; i++) {\n var result = compareNumeric(aNormalized[i], bNormalized[i]);\n\n if (result) {\n return result;\n }\n }\n\n return 0;\n}\n\nvar VersionRange = {\n /**\n * Checks whether `version` satisfies the `range` specification.\n *\n * We support a subset of the expressions defined in\n * https://www.npmjs.org/doc/misc/semver.html:\n *\n * version Must match version exactly\n * =version Same as just version\n * >version Must be greater than version\n * >=version Must be greater than or equal to version\n * = 1.2.3 and < 1.3\"\n * ~>version Equivalent to ~version\n * 1.2.x Must match \"1.2.x\", where \"x\" is a wildcard that matches\n * anything\n * 1.2.* Similar to \"1.2.x\", but \"*\" in the trailing position is a\n * \"greedy\" wildcard, so will match any number of additional\n * components:\n * \"1.2.*\" will match \"1.2.1\", \"1.2.1.1\", \"1.2.1.1.1\" etc\n * * Any version\n * \"\" (Empty string) Same as *\n * v1 - v2 Equivalent to \">= v1 and <= v2\"\n * r1 || r2 Passes if either r1 or r2 are satisfied\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n contains: function contains(range, version) {\n return checkOrExpression(range.trim(), version.trim());\n }\n};\nmodule.exports = VersionRange;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _hyphenPattern = /-(.)/g;\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar isTextNode = require(\"./isTextNode\");\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\n\n\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar invariant = require(\"./invariant\");\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\n\n\nfunction toArray(obj) {\n var length = obj.length; // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n !(typeof length === 'number') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0; // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {// IE < 9 does not support Array#slice on collections objects\n }\n } // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n\n\n var ret = Array(length);\n\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n\n return ret;\n}\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\n\n\nfunction hasArrayNature(obj) {\n return (// not null/false\n !!obj && ( // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') && // quacks like an array\n 'length' in obj && // not window\n !('setInterval' in obj) && // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && ( // a real array\n Array.isArray(obj) || // arguments\n 'callee' in obj || // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\n\n\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * This function is used to mark string literals representing CSS class names\n * so that they can be transformed statically. This allows for modularization\n * and minification of CSS class names.\n *\n * In static_upstream, this function is actually implemented, but it should\n * eventually be replaced with something more descriptive, and the transform\n * that is used in the main stack should be ported for use elsewhere.\n *\n * @param string|object className to modularize, or an object of key/values.\n * In the object case, the values are conditions that\n * determine if the className keys should be included.\n * @param [string ...] Variable list of classNames in the string case.\n * @return string Renderable space-separated CSS className.\n */\nfunction cx(classNames) {\n if (typeof classNames == 'object') {\n return Object.keys(classNames).filter(function (className) {\n return classNames[className];\n }).map(replace).join(' ');\n }\n\n return Array.prototype.map.call(arguments, replace).join(' ');\n}\n\nfunction replace(str) {\n return str.replace(/\\//g, '-');\n}\n\nmodule.exports = cx;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc)\n/*?DOMElement*/\n{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n if (typeof doc === 'undefined') {\n return null;\n }\n\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar isWebkit = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('AppleWebKit') > -1;\n/**\n * Gets the element with the document scroll properties such as `scrollLeft` and\n * `scrollHeight`. This may differ across different browsers.\n *\n * NOTE: The return value can be null if the DOM is not yet ready.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\n\nfunction getDocumentScrollElement(doc) {\n doc = doc || document;\n\n if (doc.scrollingElement) {\n return doc.scrollingElement;\n }\n\n return !isWebkit && doc.compatMode === 'CSS1Compat' ? doc.documentElement : doc.body;\n}\n\nmodule.exports = getDocumentScrollElement;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getElementRect = require(\"./getElementRect\");\n/**\n * Gets an element's position in pixels relative to the viewport. The returned\n * object represents the position of the element's top left corner.\n *\n * @param {DOMElement} element\n * @return {object}\n */\n\n\nfunction getElementPosition(element) {\n var rect = getElementRect(element);\n return {\n x: rect.left,\n y: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n}\n\nmodule.exports = getElementPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar containsNode = require(\"./containsNode\");\n/**\n * Gets an element's bounding rect in pixels relative to the viewport.\n *\n * @param {DOMElement} elem\n * @return {object}\n */\n\n\nfunction getElementRect(elem) {\n var docElem = elem.ownerDocument.documentElement; // FF 2, Safari 3 and Opera 9.5- do not support getBoundingClientRect().\n // IE9- will throw if the element is not in the document.\n\n if (!('getBoundingClientRect' in elem) || !containsNode(docElem, elem)) {\n return {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n } // Subtracts clientTop/Left because IE8- added a 2px border to the\n // element (see http://fburl.com/1493213). IE 7 in\n // Quicksmode does not report clientLeft/clientTop so there\n // will be an unaccounted offset of 2px when in quirksmode\n\n\n var rect = elem.getBoundingClientRect();\n return {\n left: Math.round(rect.left) - docElem.clientLeft,\n right: Math.round(rect.right) - docElem.clientLeft,\n top: Math.round(rect.top) - docElem.clientTop,\n bottom: Math.round(rect.bottom) - docElem.clientTop\n };\n}\n\nmodule.exports = getElementRect;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar getDocumentScrollElement = require(\"./getDocumentScrollElement\");\n\nvar getUnboundedScrollPosition = require(\"./getUnboundedScrollPosition\");\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are bounded. This means that if the scroll position is\n * negative or exceeds the element boundaries (which is possible using inertial\n * scrolling), you will get zero or the maximum scroll position, respectively.\n *\n * If you need the unbound scroll position, use `getUnboundedScrollPosition`.\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\n\nfunction getScrollPosition(scrollable) {\n var documentScrollElement = getDocumentScrollElement(scrollable.ownerDocument || scrollable.document);\n\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n scrollable = documentScrollElement;\n }\n\n var scrollPosition = getUnboundedScrollPosition(scrollable);\n var viewport = scrollable === documentScrollElement ? scrollable.ownerDocument.documentElement : scrollable;\n var xMax = scrollable.scrollWidth - viewport.clientWidth;\n var yMax = scrollable.scrollHeight - viewport.clientHeight;\n scrollPosition.x = Math.max(0, Math.min(scrollPosition.x, xMax));\n scrollPosition.y = Math.max(0, Math.min(scrollPosition.y, yMax));\n return scrollPosition;\n}\n\nmodule.exports = getScrollPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar camelize = require(\"./camelize\");\n\nvar hyphenate = require(\"./hyphenate\");\n\nfunction asString(value)\n/*?string*/\n{\n return value == null ? value : String(value);\n}\n\nfunction getStyleProperty(\n/*DOMNode*/\nnode,\n/*string*/\nname)\n/*?string*/\n{\n var computedStyle; // W3C Standard\n\n if (window.getComputedStyle) {\n // In certain cases such as within an iframe in FF3, this returns null.\n computedStyle = window.getComputedStyle(node, null);\n\n if (computedStyle) {\n return asString(computedStyle.getPropertyValue(hyphenate(name)));\n }\n } // Safari\n\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(node, null); // A Safari bug causes this to return null for `display: none` elements.\n\n if (computedStyle) {\n return asString(computedStyle.getPropertyValue(hyphenate(name)));\n }\n\n if (name === 'display') {\n return 'none';\n }\n } // Internet Explorer\n\n\n if (node.currentStyle) {\n if (name === 'float') {\n return asString(node.currentStyle.cssFloat || node.currentStyle.styleFloat);\n }\n\n return asString(node.currentStyle[camelize(name)]);\n }\n\n return asString(node.style && node.style[camelize(name)]);\n}\n\nmodule.exports = getStyleProperty;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks\n */\nfunction getViewportWidth() {\n var width;\n\n if (document.documentElement) {\n width = document.documentElement.clientWidth;\n }\n\n if (!width && document.body) {\n width = document.body.clientWidth;\n }\n\n return width || 0;\n}\n\nfunction getViewportHeight() {\n var height;\n\n if (document.documentElement) {\n height = document.documentElement.clientHeight;\n }\n\n if (!height && document.body) {\n height = document.body.clientHeight;\n }\n\n return height || 0;\n}\n/**\n * Gets the viewport dimensions including any scrollbars.\n */\n\n\nfunction getViewportDimensions() {\n return {\n width: window.innerWidth || getViewportWidth(),\n height: window.innerHeight || getViewportHeight()\n };\n}\n/**\n * Gets the viewport dimensions excluding any scrollbars.\n */\n\n\ngetViewportDimensions.withoutScrollbars = function () {\n return {\n width: getViewportWidth(),\n height: getViewportHeight()\n };\n};\n\nmodule.exports = getViewportDimensions;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _uppercasePattern = /([A-Z])/g;\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {\n if (format === undefined) {\n throw new Error('invariant(...): Second argument must be a string.');\n }\n} : function (format) {};\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return String(args[argIndex++]);\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // Skip invariant's own stack frame.\n\n throw error;\n }\n}\n\nmodule.exports = invariant;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar isNode = require(\"./isNode\");\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\n\n\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Combines multiple className strings into one.\n */\n\nfunction joinClasses(className) {\n var newClassName = className || '';\n var argLength = arguments.length;\n\n if (argLength > 1) {\n for (var index = 1; index < argLength; index++) {\n var nextClass = arguments[index];\n\n if (nextClass) {\n newClassName = (newClassName ? newClassName + ' ' : '') + nextClass;\n }\n }\n }\n\n return newClassName;\n}\n\nmodule.exports = joinClasses;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Executes the provided `callback` once for each enumerable own property in the\n * object and constructs a new object from the results. The `callback` is\n * invoked with three arguments:\n *\n * - the property value\n * - the property name\n * - the object being traversed\n *\n * Properties that are added after the call to `mapObject` will not be visited\n * by `callback`. If the values of existing properties are changed, the value\n * passed to `callback` will be the value at the time `mapObject` visits them.\n * Properties that are deleted before being visited are not visited.\n *\n * @grep function objectMap()\n * @grep function objMap()\n *\n * @param {?object} object\n * @param {function} callback\n * @param {*} context\n * @return {?object}\n */\n\nfunction mapObject(object, callback, context) {\n if (!object) {\n return null;\n }\n\n var result = {};\n\n for (var name in object) {\n if (hasOwnProperty.call(object, name)) {\n result[name] = callback.call(context, object[name], name, object);\n }\n }\n\n return result;\n}\n\nmodule.exports = mapObject;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar nullthrows = function nullthrows(x) {\n if (x != null) {\n return x;\n }\n\n throw new Error(\"Got unexpected null or undefined\");\n};\n\nmodule.exports = nullthrows;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict'; // setimmediate adds setImmediate to the global. We want to make sure we export\n// the actual function.\n\nrequire(\"setimmediate\");\n\nmodule.exports = global.setImmediate;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar emptyFunction = require(\"./emptyFunction\");\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nfunction printWarning(format) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n}\n\nvar warning = process.env.NODE_ENV !== \"production\" ? function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(void 0, [format].concat(args));\n }\n} : emptyFunction;\nmodule.exports = warning;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.Immutable = factory();\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step > 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n findEntry: function(predicate, context) {\n var found;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findLastEntry: function(predicate, context) {\n return this.toSeq().reverse().findEntry(predicate, context);\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n // Temporary warning about using length\n (function () {\n try {\n Object.defineProperty(IterablePrototype, 'length', {\n get: function () {\n if (!Iterable.noLengthWarning) {\n var stack;\n try {\n throw new Error();\n } catch (error) {\n stack = error.stack;\n }\n if (stack.indexOf('_wrapObject') === -1) {\n console && console.warn && console.warn(\n 'iterable.length has been deprecated, '+\n 'use iterable.size or iterable.count(). '+\n 'This warning will become a silent error in a future version. ' +\n stack\n );\n return this.size;\n }\n }\n }\n });\n } catch (e) {}\n })();\n\n\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLastKey: function(predicate, context) {\n return this.toSeq().reverse().findKey(predicate, context);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n lastKeyOf: function(searchValue) {\n return this.findLastKey(function(value ) {return is(value, searchValue)});\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.toKeyedSeq().keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.toKeyedSeq().reverse().keyOf(searchValue);\n return key === undefined ? -1 : key;\n\n // var index =\n // return this.toSeq().reverse().indexOf(searchValue);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var key = this.toKeyedSeq().findLastKey(predicate, context);\n return key === undefined ? -1 : key;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : value;\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Selection_private;\nimport { EditorState, SelectionState } from \"draft-js\";\nfunction editorStateToTextAnchorFocus(editorState) {\n if (!editorState) {\n return { anchor: 0, focus: 0 };\n }\n let contentState = editorState.getCurrentContent();\n let selection = editorState.getSelection();\n let blocks = contentState.getBlocksAsArray();\n let anchorKey = selection.getAnchorKey();\n let anchorOffset = selection.getAnchorOffset();\n let focusKey = selection.getFocusKey();\n let focusOffset = selection.getFocusOffset();\n let blockStart = 0;\n let anchor = undefined;\n let focus = undefined;\n if (anchorKey == \"\" && focusKey == \"\") {\n return { anchor: 0, focus: 0 };\n }\n for (const block of blocks) {\n if (block.getKey() == anchorKey) {\n anchor = blockStart + anchorOffset;\n }\n if (block.getKey() == focusKey) {\n focus = blockStart + focusOffset;\n }\n if (anchor != undefined && focus != undefined) {\n break;\n }\n blockStart += block.getLength() + 1;\n }\n if (anchor == undefined || focus == undefined) {\n throw new ReferenceError(\"Potentially corrupt editorState.\");\n }\n return { anchor, focus };\n}\nfunction forceSelection(editorState, anchor, focus) {\n if (!editorState) {\n throw new ReferenceError(\"editorState is required\");\n }\n let contentState = editorState.getCurrentContent();\n let blocks = contentState.getBlocksAsArray();\n let blockStart = 0;\n let blockEnd = undefined;\n let anchorKey = undefined;\n let anchorOffset = undefined;\n let focusKey = undefined;\n let focusOffset = undefined;\n let block = undefined;\n for (block of blocks) {\n blockEnd = blockStart + block.getLength();\n if (anchorKey == undefined && blockEnd >= anchor) {\n anchorKey = block.getKey();\n anchorOffset = Math.max(0, anchor - blockStart);\n }\n if (focusKey == undefined && blockEnd >= focus) {\n focusKey = block.getKey();\n focusOffset = Math.max(0, focus - blockStart);\n }\n if (anchorKey != undefined && focusKey != undefined) {\n break;\n }\n }\n if (block == undefined) {\n throw \"Unexpected undefined block\";\n }\n if (anchorKey == undefined) {\n anchorKey = block.getKey();\n anchorOffset = block.getLength();\n }\n if (focusKey == undefined) {\n focusKey = block.getKey();\n focusOffset = block.getLength();\n }\n let selectionState = SelectionState.createEmpty(\"\");\n selectionState\n .set(\"anchorKey\", anchorKey)\n .set(\"anchorOffset\", anchorOffset)\n .set(\"focusKey\", focusKey)\n .set(\"focusOffset\", focusOffset);\n return EditorState.forceSelection(editorState, selectionState);\n}\nclass Selection {\n constructor(editorStateOrAnchor, focus) {\n _Selection_private.set(this, void 0);\n let editorState = undefined;\n let anchor = -1;\n let initFunc = () => undefined;\n if (typeof editorStateOrAnchor == \"number\") {\n anchor = editorStateOrAnchor;\n focus = focus == undefined ? anchor : focus;\n }\n else {\n focus = -1; // Silence ts until the below init is called\n editorState = editorStateOrAnchor;\n initFunc = () => {\n __classPrivateFieldSet(this, _Selection_private, Object.assign(Object.assign(Object.assign({}, __classPrivateFieldGet(this, _Selection_private, \"f\")), editorStateToTextAnchorFocus(__classPrivateFieldGet(this, _Selection_private, \"f\").editorState)), { init: () => undefined }), \"f\");\n };\n }\n __classPrivateFieldSet(this, _Selection_private, {\n editorState,\n anchor,\n focus,\n init: initFunc,\n }, \"f\");\n }\n get anchor() {\n __classPrivateFieldGet(this, _Selection_private, \"f\").init();\n return __classPrivateFieldGet(this, _Selection_private, \"f\").anchor;\n }\n set anchor(value) {\n __classPrivateFieldGet(this, _Selection_private, \"f\").init();\n __classPrivateFieldGet(this, _Selection_private, \"f\").anchor = value;\n }\n get focus() {\n __classPrivateFieldGet(this, _Selection_private, \"f\").init();\n return __classPrivateFieldGet(this, _Selection_private, \"f\").focus;\n }\n set focus(value) {\n __classPrivateFieldGet(this, _Selection_private, \"f\").init();\n __classPrivateFieldGet(this, _Selection_private, \"f\").focus = value;\n }\n get start() {\n return Math.min(this.anchor, this.focus);\n }\n set start(value) {\n throw new ReferenceError(`start (${value}) is read only. use anchor instead`);\n }\n get end() {\n return Math.max(this.anchor, this.focus);\n }\n set end(value) {\n throw new ReferenceError(`end (${value}) is read only. use focus instead`);\n }\n forceSelection(editorState) {\n return forceSelection(editorState, this.anchor, this.focus);\n }\n getHasFocus() {\n let editorState = __classPrivateFieldGet(this, _Selection_private, \"f\").editorState;\n return editorState && editorState.getSelection().getHasFocus();\n }\n}\n_Selection_private = new WeakMap();\nexport { Selection };\n","import * as React from \"react\";\nexport const highlightToStrategyAndComponents = (highlight, classHint, componentHint) => {\n let result;\n if (highlight instanceof RegExp) {\n result = [regExpToSAndC(highlight, classHint, componentHint)];\n }\n else if (typeof highlight == \"string\") {\n result = [stringToSAndC(highlight, classHint, componentHint)];\n }\n else if (typeof highlight == \"function\") {\n result = [strategyToSAndC(highlight, classHint, componentHint)];\n }\n else if (highlight instanceof Object && \"highlight\" in highlight) {\n result = customToSAndCs(highlight, classHint, componentHint);\n }\n else if (highlight instanceof Array) {\n if (highlight.length === 2 &&\n typeof highlight[0] === \"number\" &&\n typeof highlight[1] === \"number\") {\n result = [rangeToSAndC(highlight, classHint, componentHint)];\n }\n else {\n result = arrayToSAndCs(highlight, classHint, componentHint);\n }\n }\n else {\n throw new TypeError(`Not a Highlight type: ${highlight}`);\n }\n return result;\n};\nfunction arrayToSAndCs(highlight, className, component) {\n const sAndCs = highlight.map((h) => highlightToStrategyAndComponents(h, className, component));\n return Array.prototype.concat.apply([], sAndCs);\n}\nfunction strategyToSAndC(strategy, className, component) {\n return {\n strategy: strategy,\n component: hwtComponent(className, component),\n };\n}\nfunction regExpToSAndC(highlight, className, component) {\n const regExpStrategy = (text, callback) => {\n let matchArr, start;\n while ((matchArr = highlight.exec(text)) !== null) {\n start = matchArr.index;\n callback(start, start + matchArr[0].length);\n }\n };\n return {\n strategy: regExpStrategy,\n component: hwtComponent(className, component),\n };\n}\nfunction stringToSAndC(highlight, className, component) {\n const stringStrategy = (text, callback) => {\n const textLower = text.toLowerCase();\n const strLower = highlight.toLowerCase();\n let index = 0;\n while (((index = textLower.indexOf(strLower, index)), index !== -1)) {\n callback(index, index + strLower.length);\n index += strLower.length;\n }\n };\n return {\n strategy: stringStrategy,\n component: hwtComponent(className, component),\n };\n}\nfunction rangeToSAndC(highlight, className, component) {\n const rangeStrategy = (text, callback) => {\n const low = Math.max(0, highlight[0]);\n const high = Math.min(highlight[1], text.length);\n if (low < high) {\n callback(low, high);\n }\n };\n return {\n strategy: rangeStrategy,\n component: hwtComponent(className, component),\n };\n}\nfunction customToSAndCs(highlight, className, component) {\n const hl = highlight.highlight;\n className = 'className' in highlight ? highlight.className : className;\n component = 'component' in highlight ? highlight.component : component;\n return highlightToStrategyAndComponents(hl, className, component);\n}\nconst hwtComponent = (className, Component) => {\n if (Component) {\n const Cmp = Component;\n return (props) => React.createElement(Cmp, Object.assign({ className: className }, props));\n }\n else {\n return (props) => React.createElement(\"mark\", { className: className }, props.children);\n }\n};\n","import React from 'react';\nimport { CompositeDecorator } from \"draft-js\";\nimport { highlightToStrategyAndComponents } from \"./highlightToStrategyAndComponents\";\n;\nconst getMatches = (text, strategyAndComponents) => {\n // Calls each strategy to get all matches and then filters out overlaps.\n let finds = [];\n for (const sc of strategyAndComponents) {\n const strategy = sc.strategy;\n strategy(text, (start, end) => {\n if (start < end && start >= 0 && end <= text.length) {\n finds.push({\n Component: sc.component,\n matchStart: start,\n matchEnd: end,\n matchText: text.slice(start, end),\n });\n }\n });\n }\n let maps = [];\n // Eliminate overlapping finds.\n loop: for (const find of finds) {\n for (let i = find.matchStart; i < find.matchEnd; i++) {\n if (maps[i]) {\n continue loop;\n }\n }\n for (let i = find.matchStart; i < find.matchEnd; i++) {\n maps[i] = find;\n }\n }\n let matches = Array.from(new Set(Object.values(maps))).sort((a, b) => a.matchStart - b.matchStart);\n return matches;\n};\nconst extractBlockData = (contentState, text) => {\n let blocks = contentState.getBlocksAsArray();\n let blockData = [];\n let blockEnd = 0;\n for (const block of blocks) {\n let blockLength = block.getLength();\n if (blockLength == 0) {\n continue;\n }\n let blockText = block.getText();\n let blockStart = text.indexOf(blockText[0], blockEnd);\n blockEnd = blockStart + blockLength;\n blockData.push({\n blockStart: blockStart,\n blockEnd: blockEnd,\n blockText: text.slice(blockStart, blockEnd),\n block: block,\n });\n }\n return blockData;\n};\nconst breakSpansByBlocks = (contentState, matches, text) => {\n const blockData = extractBlockData(contentState, text);\n let newSpans = [];\n loop: for (const match of matches) {\n for (const block of blockData) {\n if (block.blockStart >= match.matchEnd) {\n continue loop;\n }\n if (block.blockEnd < match.matchStart) {\n continue;\n }\n const spanStart = Math.max(match.matchStart, block.blockStart);\n const spanEnd = Math.min(match.matchEnd, block.blockEnd);\n const spanText = text.slice(spanStart, spanEnd);\n newSpans.push(Object.assign(Object.assign(Object.assign({ text: text }, match), block), { spanStart: spanStart, spanEnd: spanEnd, spanText: spanText }));\n }\n }\n return newSpans;\n};\nconst blockSpansToDecorators = (blockSpans) => {\n let decorators = [];\n for (const blockSpan of blockSpans) {\n const { block, spanStart, spanEnd, blockStart, Component } = blockSpan;\n const strategy = (contentBlock, callback) => {\n if (contentBlock === block) {\n callback(spanStart - blockStart, spanEnd - blockStart);\n }\n };\n delete blockSpan.Component;\n delete blockSpan.block;\n const component = (props) => {\n const Cpt = Component;\n return React.createElement(Cpt, Object.assign({}, blockSpan, { children: props.children }));\n };\n decorators.push({ strategy: strategy, component: component });\n }\n return decorators;\n};\nconst createDecorator = (contentState, highlight, text) => {\n text = text || contentState.getPlainText();\n const sc = highlightToStrategyAndComponents(highlight);\n const matches = getMatches(text, sc);\n const blockSpans = breakSpansByBlocks(contentState, matches, text);\n const decorators = blockSpansToDecorators(blockSpans);\n return new CompositeDecorator(decorators);\n};\nexport { createDecorator };\n","import React from \"react\";\nimport { useState, useRef, useMemo } from \"react\";\nimport { Editor, EditorState, ContentState } from \"draft-js\";\nimport { createDecorator } from \"./createDecorator\";\nimport { Selection } from \"./Selection\";\nconst HighlightWithinTextarea = React.forwardRef((props, ref) => {\n let { value, onChange, highlight, placeholder = \"Enter some text...\", selection, } = props;\n const [, forceUpdate] = useState({});\n const myRef = useRef({});\n let editorState;\n const { prevValue, prevEditorState, nextValue, nextEditorState } = myRef.current;\n if (nextValue == value) {\n // Change was accepted.\n editorState = nextEditorState;\n }\n else if (prevValue == value) {\n // They blocked the state change.\n editorState = prevEditorState;\n if (!selection && nextValue) {\n selection = new Selection(editorState);\n selection.focus = Math.max(selection.anchor, selection.focus);\n selection.anchor = selection.focus;\n }\n }\n else if (prevEditorState) {\n // They chose a whole new value.\n const contentState = ContentState.createFromText(value);\n const changeType = \"change-block-data\";\n editorState = EditorState.push(prevEditorState, contentState, changeType);\n if (!selection) {\n let fixedValue, offset;\n if (nextEditorState) {\n selection = new Selection(nextEditorState);\n fixedValue = value.replaceAll(\"\\r\\n\", \"\\n\");\n offset = fixedValue.length - nextValue.length;\n }\n else {\n selection = new Selection(prevEditorState);\n fixedValue = value.replaceAll(\"\\r\\n\", \"\\n\");\n offset = fixedValue.length - prevValue.length;\n }\n selection.anchor += offset;\n selection.focus += offset;\n }\n }\n else {\n // First time in here.\n const contentState = ContentState.createFromText(value);\n editorState = EditorState.createWithContent(contentState);\n }\n const contentState = editorState.getCurrentContent();\n let decorator;\n decorator = useMemo(() => highlight &&\n createDecorator(contentState, highlight, value), [contentState, highlight, value]);\n editorState = EditorState.set(editorState, {\n decorator: decorator,\n });\n if (selection) {\n editorState = selection.forceSelection(editorState);\n }\n myRef.current = {\n prevEditorState: editorState,\n prevValue: value,\n };\n const onDraftChange = (nextEditorState) => {\n const nextValue = nextEditorState.getCurrentContent().getPlainText();\n myRef.current = Object.assign(Object.assign({}, myRef.current), { nextEditorState: nextEditorState, nextValue: nextValue });\n let selection = undefined;\n selection = new Selection(nextEditorState);\n if (onChange) {\n onChange(nextValue, selection);\n }\n forceUpdate({});\n };\n const newProps = Object.assign({}, props);\n delete newProps.highlight;\n delete newProps.selection;\n delete newProps.placeholder;\n delete newProps.onChange;\n delete newProps.value;\n return (React.createElement(Editor, Object.assign({}, newProps, { editorState: editorState, onChange: onDraftChange, placeholder: placeholder, ref: ref })));\n});\nexport default HighlightWithinTextarea;\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a