Nessuna descrizione

index.js.map 3.4MB

1
  1. {"version":3,"file":"index.js","sources":["../../node_modules/object-assign/index.js","../../node_modules/draft-js/node_modules/immutable/dist/immutable.js","../../node_modules/draft-js/lib/BlockMapBuilder.js","../../node_modules/draft-js/lib/CharacterMetadata.js","../../node_modules/draft-js/lib/findRangesImmutable.js","../../node_modules/draft-js/lib/ContentBlock.js","../../node_modules/draft-js/lib/ContentBlockNode.js","../../node_modules/draft-js/lib/DraftFeatureFlags-core.js","../../node_modules/draft-js/lib/DraftFeatureFlags.js","../../node_modules/draft-js/lib/ContentStateInlineStyle.js","../../node_modules/draft-js/lib/applyEntityToContentBlock.js","../../node_modules/draft-js/lib/applyEntityToContentState.js","../../node_modules/draft-js/lib/DraftEntitySegments.js","../../node_modules/fbjs/lib/invariant.js","../../node_modules/draft-js/lib/getRangesForDraftEntity.js","../../node_modules/draft-js/lib/getCharacterRemovalRange.js","../../node_modules/draft-js/lib/generateRandomKey.js","../../node_modules/draft-js/lib/randomizeBlockMapKeys.js","../../node_modules/draft-js/lib/removeEntitiesAtEdges.js","../../node_modules/draft-js/lib/getContentStateFragment.js","../../node_modules/draft-js/lib/insertIntoList.js","../../node_modules/draft-js/lib/insertFragmentIntoContentState.js","../../node_modules/draft-js/lib/insertTextIntoContentState.js","../../node_modules/draft-js/lib/modifyBlockForContentState.js","../../node_modules/draft-js/lib/getNextDelimiterBlockKey.js","../../node_modules/draft-js/lib/removeRangeFromContentState.js","../../node_modules/draft-js/lib/splitBlockInContentState.js","../../node_modules/draft-js/lib/DraftModifier.js","../../node_modules/fbjs/lib/emptyFunction.js","../../node_modules/draft-js/lib/BlockTree.js","../../node_modules/draft-js/lib/DraftEntityInstance.js","../../node_modules/draft-js/lib/DraftEntity.js","../../node_modules/draft-js/lib/SelectionState.js","../../node_modules/draft-js/lib/sanitizeDraftText.js","../../node_modules/draft-js/lib/ContentState.js","../../node_modules/fbjs/lib/UnicodeBidiDirection.js","../../node_modules/fbjs/lib/UnicodeBidi.js","../../node_modules/fbjs/lib/UnicodeBidiService.js","../../node_modules/fbjs/lib/nullthrows.js","../../node_modules/draft-js/lib/EditorBidiService.js","../../node_modules/draft-js/lib/EditorState.js","../../node_modules/draft-js/lib/moveBlockInContentState.js","../../node_modules/draft-js/lib/AtomicBlockUtils.js","../../node_modules/draft-js/lib/CompositeDraftDecorator.js","../../node_modules/fbjs/lib/cx.js","../../node_modules/draft-js/lib/DefaultDraftBlockRenderMap.js","../../node_modules/draft-js/lib/DefaultDraftInlineStyle.js","../../node_modules/fbjs/lib/Keys.js","../../node_modules/draft-js/lib/getEntityKeyForSelection.js","../../node_modules/draft-js/lib/isEventHandled.js","../../node_modules/draft-js/lib/isSelectionAtLeafStart.js","../../node_modules/draft-js/lib/DraftEditorCompositionHandler.js","../../node_modules/ua-parser-js/src/ua-parser.js","../../node_modules/fbjs/lib/UserAgentData.js","../../node_modules/fbjs/lib/VersionRange.js","../../node_modules/fbjs/lib/mapObject.js","../../node_modules/fbjs/lib/memoizeStringOnly.js","../../node_modules/fbjs/lib/UserAgent.js","../../node_modules/draft-js/lib/DraftEditorTextNode.react.js","../../node_modules/draft-js/lib/DraftJsDebugLogging.js","../../node_modules/fbjs/lib/isNode.js","../../node_modules/fbjs/lib/isTextNode.js","../../node_modules/fbjs/lib/containsNode.js","../../node_modules/fbjs/lib/getActiveElement.js","../../node_modules/draft-js/lib/setDraftEditorSelection.js","../../node_modules/draft-js/lib/DraftEditorLeaf.react.js","../../node_modules/draft-js/lib/DraftOffsetKey.js","../../node_modules/fbjs/lib/Scroll.js","../../node_modules/fbjs/lib/camelize.js","../../node_modules/fbjs/lib/hyphenate.js","../../node_modules/fbjs/lib/getStyleProperty.js","../../node_modules/fbjs/lib/Style.js","../../node_modules/fbjs/lib/getElementRect.js","../../node_modules/fbjs/lib/getElementPosition.js","../../node_modules/fbjs/lib/getDocumentScrollElement.js","../../node_modules/fbjs/lib/getUnboundedScrollPosition.js","../../node_modules/fbjs/lib/getScrollPosition.js","../../node_modules/fbjs/lib/getViewportDimensions.js","../../node_modules/draft-js/lib/DraftEditorBlock.react.js","../../node_modules/fbjs/lib/joinClasses.js","../../node_modules/draft-js/lib/DraftEditorContents-core.react.js","../../node_modules/draft-js/lib/DraftEditorContents.react.js","../../node_modules/fbjs/lib/PhotosMimeType.js","../../node_modules/fbjs/lib/createArrayFromMixed.js","../../node_modules/fbjs/lib/DataTransfer.js","../../node_modules/draft-js/lib/getSelectionOffsetKeyForNode.js","../../node_modules/draft-js/lib/findAncestorOffsetKey.js","../../node_modules/draft-js/lib/getTextContentFromFiles.js","../../node_modules/draft-js/lib/getUpdatedSelectionState.js","../../node_modules/draft-js/lib/DraftEditorDragHandler.js","../../node_modules/setimmediate/setImmediate.js","../../node_modules/fbjs/lib/setImmediate.js","../../node_modules/draft-js/lib/editOnBeforeInput.js","../../node_modules/draft-js/lib/editOnBlur.js","../../node_modules/draft-js/lib/editOnCompositionStart.js","../../node_modules/draft-js/lib/getFragmentFromSelection.js","../../node_modules/draft-js/lib/editOnCopy.js","../../node_modules/draft-js/lib/editOnCut.js","../../node_modules/draft-js/lib/editOnDragOver.js","../../node_modules/draft-js/lib/editOnDragStart.js","../../node_modules/draft-js/lib/editOnFocus.js","../../node_modules/draft-js/lib/editOnInput.js","../../node_modules/draft-js/lib/KeyBindingUtil.js","../../node_modules/draft-js/lib/SecondaryClipboard.js","../../node_modules/fbjs/lib/UnicodeUtils.js","../../node_modules/draft-js/lib/getRangeClientRects.js","../../node_modules/draft-js/lib/expandRangeToStartOfLine.js","../../node_modules/draft-js/lib/getDraftEditorSelectionWithNodes.js","../../node_modules/draft-js/lib/moveSelectionBackward.js","../../node_modules/draft-js/lib/removeTextWithStrategy.js","../../node_modules/draft-js/lib/keyCommandBackspaceToStartOfLine.js","../../node_modules/fbjs/lib/TokenizeUtil.js","../../node_modules/draft-js/lib/DraftRemovableWord.js","../../node_modules/draft-js/lib/keyCommandBackspaceWord.js","../../node_modules/draft-js/lib/moveSelectionForward.js","../../node_modules/draft-js/lib/keyCommandDeleteWord.js","../../node_modules/draft-js/lib/keyCommandInsertNewline.js","../../node_modules/draft-js/lib/keyCommandMoveSelectionToEndOfBlock.js","../../node_modules/draft-js/lib/keyCommandMoveSelectionToStartOfBlock.js","../../node_modules/draft-js/lib/keyCommandPlainBackspace.js","../../node_modules/draft-js/lib/keyCommandPlainDelete.js","../../node_modules/draft-js/lib/keyCommandTransposeCharacters.js","../../node_modules/draft-js/lib/keyCommandUndo.js","../../node_modules/draft-js/lib/editOnKeyDown.js","../../node_modules/fbjs/lib/URI.js","../../node_modules/draft-js/lib/getSafeBodyFromHTML.js","../../node_modules/draft-js/lib/convertFromHTMLToContentBlocks.js","../../node_modules/draft-js/lib/DraftPasteProcessor.js","../../node_modules/draft-js/lib/adjustBlockDepthForContentState.js","../../node_modules/draft-js/lib/RichTextEditorUtil.js","../../node_modules/draft-js/lib/splitTextIntoTextBlocks.js","../../node_modules/draft-js/lib/editOnPaste.js","../../node_modules/draft-js/lib/getDraftEditorSelection.js","../../node_modules/draft-js/lib/editOnSelect.js","../../node_modules/draft-js/lib/DraftEditorEditHandler.js","../../node_modules/draft-js/lib/DraftEditorPlaceholder.react.js","../../node_modules/draft-js/lib/getDefaultKeyBinding.js","../../node_modules/draft-js/lib/DraftEditor.react.js","../../node_modules/draft-js/lib/DraftStringKey.js","../../node_modules/draft-js/lib/encodeEntityRanges.js","../../node_modules/draft-js/lib/encodeInlineStyleRanges.js","../../node_modules/draft-js/lib/convertFromDraftStateToRaw.js","../../node_modules/draft-js/lib/DraftTreeAdapter.js","../../node_modules/draft-js/lib/createCharacterList.js","../../node_modules/draft-js/lib/decodeEntityRanges.js","../../node_modules/draft-js/lib/decodeInlineStyleRanges.js","../../node_modules/draft-js/lib/convertFromRawToDraftState.js","../../node_modules/draft-js/lib/getRangeBoundingClientRect.js","../../node_modules/draft-js/lib/getVisibleSelectionRect.js","../../node_modules/draft-js/lib/Draft.js","../../node_modules/braft-editor/node_modules/immutable/dist/immutable.js","../../node_modules/braft-editor/node_modules/draftjs-utils/lib/draftjs-utils.js","../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../node_modules/invariant/browser.js","../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../node_modules/draft-convert/lib/util/updateMutation.js","../../node_modules/draft-convert/lib/util/rangeSort.js","../../node_modules/draft-convert/lib/encodeBlock.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/draft-convert/lib/util/splitReactElement.js","../../node_modules/draft-convert/lib/util/getElementHTML.js","../../node_modules/draft-convert/lib/util/getElementTagLength.js","../../node_modules/draft-convert/lib/blockEntities.js","../../node_modules/draft-convert/lib/util/styleObjectFunction.js","../../node_modules/draft-convert/lib/util/accumulateFunction.js","../../node_modules/draft-convert/lib/default/defaultInlineHTML.js","../../node_modules/draft-convert/lib/blockInlineStyles.js","../../node_modules/draft-convert/lib/util/blockTypeObjectFunction.js","../../node_modules/draft-convert/lib/util/getBlockTags.js","../../node_modules/draft-convert/lib/util/getNestedBlockTags.js","../../node_modules/draft-convert/lib/default/defaultBlockHTML.js","../../node_modules/draft-convert/lib/convertToHTML.js","../../node_modules/draft-convert/node_modules/immutable/dist/immutable.js","../../node_modules/draft-convert/lib/util/parseHTML.js","../../node_modules/draft-convert/lib/convertFromHTML.js","../../node_modules/draft-convert/lib/index.js","../../node_modules/braft-convert/dist/configs.js","../../node_modules/braft-convert/dist/index.js","../../node_modules/braft-editor/node_modules/braft-utils/dist/content.js","../../node_modules/braft-editor/node_modules/braft-utils/dist/base.js","../../node_modules/braft-editor/node_modules/braft-utils/dist/color.js","../../node_modules/braft-editor/node_modules/braft-utils/dist/index.js","../../node_modules/braft-finder/dist/index.js","../../node_modules/braft-editor/dist/index.js","../../node_modules/immutable/dist/immutable.js","../../node_modules/draftjs-utils/lib/draftjs-utils.js","../../node_modules/braft-utils/dist/content.js","../../node_modules/braft-utils/dist/base.js","../../node_modules/braft-utils/dist/color.js","../../node_modules/braft-utils/dist/index.js","../../node_modules/braft-extensions/dist/emoticon.js","../../node_modules/braft-extensions/dist/max-length.js","../../src/components/Editor/BraftEditor/index.tsx","../../src/components/Editor/RichTextEditor/index.tsx","../../node_modules/slate/node_modules/is-plain-object/index.cjs.js","../../node_modules/slate/node_modules/immer/dist/immer.js","../../node_modules/esrever/esrever.js","../../node_modules/slate/dist/index.js","../../node_modules/debounce/index.js","../../node_modules/compute-scroll-into-view/index.js","../../node_modules/scroll-into-view-if-needed/index.js","../../node_modules/direction/index.js","../../node_modules/is-hotkey/lib/index.js","../../node_modules/slate-react/dist/index.js","../../src/components/Editor/RichTextEditorForSlate/index.tsx"],"sourcesContent":["/*\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","/**\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}));","/**\n * Copyright (c) 2013-present, 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 * @providesModule BlockMapBuilder\n * @format\n * \n */\n\n'use strict';\n\nvar Immutable = require('immutable');\n\nvar OrderedMap = Immutable.OrderedMap;\n\n\nvar BlockMapBuilder = {\n createFromArray: function createFromArray(blocks) {\n return OrderedMap(blocks.map(function (block) {\n return [block.getKey(), block];\n }));\n }\n};\n\nmodule.exports = BlockMapBuilder;","/**\n * Copyright (c) 2013-present, 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 * @providesModule CharacterMetadata\n * @format\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _require = require('immutable'),\n Map = _require.Map,\n OrderedSet = _require.OrderedSet,\n Record = _require.Record;\n\n// 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();\n\nvar defaultRecord = {\n style: EMPTY_SET,\n entity: null\n};\n\nvar CharacterMetadataRecord = Record(defaultRecord);\n\nvar CharacterMetadata = function (_CharacterMetadataRec) {\n _inherits(CharacterMetadata, _CharacterMetadataRec);\n\n function CharacterMetadata() {\n _classCallCheck(this, CharacterMetadata);\n\n return _possibleConstructorReturn(this, _CharacterMetadataRec.apply(this, arguments));\n }\n\n CharacterMetadata.prototype.getStyle = function getStyle() {\n return this.get('style');\n };\n\n CharacterMetadata.prototype.getEntity = function getEntity() {\n return this.get('entity');\n };\n\n CharacterMetadata.prototype.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 /**\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 };\n\n // Fill in unspecified properties, if necessary.\n var configMap = Map(defaultConfig).merge(config);\n\n var existing = pool.get(configMap);\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 return CharacterMetadata;\n}(CharacterMetadataRecord);\n\nvar EMPTY = new CharacterMetadata();\nvar pool = Map([[Map(defaultRecord), EMPTY]]);\n\nCharacterMetadata.EMPTY = EMPTY;\n\nmodule.exports = CharacterMetadata;","/**\n * Copyright (c) 2013-present, 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 * @providesModule findRangesImmutable\n * @format\n * \n */\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\n haystack.reduce(function (value, nextValue, nextIndex) {\n if (!areEqualFn(value, nextValue)) {\n if (filterFn(value)) {\n foundFn(cursor, nextIndex);\n }\n cursor = nextIndex;\n }\n return nextValue;\n });\n\n filterFn(haystack.last()) && foundFn(cursor, haystack.count());\n}\n\nmodule.exports = findRangesImmutable;","/**\n * Copyright (c) 2013-present, 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 * @providesModule ContentBlock\n * @format\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require('./CharacterMetadata');\nvar Immutable = require('immutable');\n\nvar findRangesImmutable = require('./findRangesImmutable');\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\n\n\nvar EMPTY_SET = OrderedSet();\n\nvar defaultRecord = {\n key: '',\n type: 'unstyled',\n text: '',\n characterList: List(),\n depth: 0,\n data: Map()\n};\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\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlock = function (_ContentBlockRecord) {\n _inherits(ContentBlock, _ContentBlockRecord);\n\n function ContentBlock(config) {\n _classCallCheck(this, ContentBlock);\n\n return _possibleConstructorReturn(this, _ContentBlockRecord.call(this, decorateCharacterList(config)));\n }\n\n ContentBlock.prototype.getKey = function getKey() {\n return this.get('key');\n };\n\n ContentBlock.prototype.getType = function getType() {\n return this.get('type');\n };\n\n ContentBlock.prototype.getText = function getText() {\n return this.get('text');\n };\n\n ContentBlock.prototype.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n ContentBlock.prototype.getLength = function getLength() {\n return this.getText().length;\n };\n\n ContentBlock.prototype.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n ContentBlock.prototype.getData = function getData() {\n return this.get('data');\n };\n\n ContentBlock.prototype.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n ContentBlock.prototype.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n };\n\n /**\n * Execute a callback for every contiguous range of styles within the block.\n */\n\n\n ContentBlock.prototype.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n };\n\n /**\n * Execute a callback for every contiguous range of entities within the block.\n */\n\n\n ContentBlock.prototype.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) 2013-present, 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 * @providesModule ContentBlockNode\n * @format\n * \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\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require('./CharacterMetadata');\nvar Immutable = require('immutable');\n\nvar findRangesImmutable = require('./findRangesImmutable');\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\n\n\nvar EMPTY_SET = OrderedSet();\n\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\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlockNode = function (_Record) {\n _inherits(ContentBlockNode, _Record);\n\n function ContentBlockNode() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultRecord;\n\n _classCallCheck(this, ContentBlockNode);\n\n return _possibleConstructorReturn(this, _Record.call(this, decorateCharacterList(props)));\n }\n\n ContentBlockNode.prototype.getKey = function getKey() {\n return this.get('key');\n };\n\n ContentBlockNode.prototype.getType = function getType() {\n return this.get('type');\n };\n\n ContentBlockNode.prototype.getText = function getText() {\n return this.get('text');\n };\n\n ContentBlockNode.prototype.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n ContentBlockNode.prototype.getLength = function getLength() {\n return this.getText().length;\n };\n\n ContentBlockNode.prototype.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n ContentBlockNode.prototype.getData = function getData() {\n return this.get('data');\n };\n\n ContentBlockNode.prototype.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n ContentBlockNode.prototype.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n };\n\n ContentBlockNode.prototype.getChildKeys = function getChildKeys() {\n return this.get('children');\n };\n\n ContentBlockNode.prototype.getParentKey = function getParentKey() {\n return this.get('parent');\n };\n\n ContentBlockNode.prototype.getPrevSiblingKey = function getPrevSiblingKey() {\n return this.get('prevSibling');\n };\n\n ContentBlockNode.prototype.getNextSiblingKey = function getNextSiblingKey() {\n return this.get('nextSibling');\n };\n\n ContentBlockNode.prototype.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n };\n\n ContentBlockNode.prototype.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 2013-present, 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 * @providesModule DraftFeatureFlags-core\n * @format\n * \n */\n\n'use strict';\n\nvar DraftFeatureFlags = {\n draft_killswitch_allow_nontextnodes: false,\n draft_segmented_entities_behavior: false,\n draft_handlebeforeinput_composed_text: false,\n draft_tree_data_support: false\n};\n\nmodule.exports = DraftFeatureFlags;","/**\n * Copyright 2013-present, 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 * @providesModule DraftFeatureFlags\n * @format\n * \n */\n\n'use strict';\n\nvar DraftFeatureFlags = require('./DraftFeatureFlags-core');\n\nmodule.exports = DraftFeatureFlags;","/**\n * Copyright (c) 2013-present, 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 * @providesModule ContentStateInlineStyle\n * @format\n * \n */\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\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\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 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\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = ContentStateInlineStyle;","/**\n * Copyright (c) 2013-present, 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 * @providesModule applyEntityToContentBlock\n * @format\n * \n */\n\n'use strict';\n\nvar CharacterMetadata = require('./CharacterMetadata');\n\nfunction applyEntityToContentBlock(contentBlock, start, end, entityKey) {\n var characterList = contentBlock.getCharacterList();\n while (start < end) {\n characterList = characterList.set(start, CharacterMetadata.applyEntity(characterList.get(start), entityKey));\n start++;\n }\n return contentBlock.set('characterList', characterList);\n}\n\nmodule.exports = applyEntityToContentBlock;","/**\n * Copyright (c) 2013-present, 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 * @providesModule applyEntityToContentState\n * @format\n * \n */\n\n'use strict';\n\nvar Immutable = require('immutable');\n\nvar applyEntityToContentBlock = require('./applyEntityToContentBlock');\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\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\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = applyEntityToContentState;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftEntitySegments\n * @format\n * \n */\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 ( /*string*/segment, /*number*/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 return segment;\n });\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;\n\n // Our selection overlaps this segment.\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};\n\nmodule.exports = DraftEntitySegments;","/**\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\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\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\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 args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;","/**\n * Copyright (c) 2013-present, 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 * @providesModule getRangesForDraftEntity\n * @format\n * \n */\n\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n\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 */\nfunction getRangesForDraftEntity(block, key) {\n var ranges = [];\n block.findEntityRanges(function (c) {\n return c.getEntity() === key;\n }, function (start, end) {\n ranges.push({ start: start, 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\n return ranges;\n}\n\nmodule.exports = getRangesForDraftEntity;","/**\n * Copyright (c) 2013-present, 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 * @providesModule getCharacterRemovalRange\n * @format\n * \n */\n\n'use strict';\n\nvar DraftEntitySegments = require('./DraftEntitySegments');\n\nvar getRangesForDraftEntity = require('./getRangesForDraftEntity');\nvar invariant = require('fbjs/lib/invariant');\n\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 */\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 if (!startEntityKey && !endEntityKey) {\n return selectionState;\n }\n var newSelectionState = selectionState;\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 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 newSelectionState = newSelectionState.merge({\n focusOffset: _endSelectionState.getEndOffset(),\n isBackward: false\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 var entity = entityMap.__get(entityKey);\n var mutability = entity.getMutability();\n var sideToConsider = isEntityAtStart ? start : end;\n\n // `MUTABLE` entities can just have the specified range of text removed\n // directly. No adjustments are needed.\n if (mutability === 'MUTABLE') {\n return selectionState;\n }\n\n // Find the entity range that overlaps with our removal range.\n var entityRanges = getRangesForDraftEntity(block, entityKey).filter(function (range) {\n return sideToConsider <= range.end && sideToConsider >= range.start;\n });\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\n var entityRange = entityRanges[0];\n\n // For `IMMUTABLE` entity types, we will remove the entire entity range.\n if (mutability === 'IMMUTABLE') {\n return selectionState.merge({\n anchorOffset: entityRange.start,\n focusOffset: entityRange.end,\n isBackward: false\n });\n }\n\n // For `SEGMENTED` entity types, determine the appropriate segment to\n // remove.\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\n return selectionState.merge({\n anchorOffset: removalRange.start,\n focusOffset: removalRange.end,\n isBackward: false\n });\n}\n\nmodule.exports = getCharacterRemovalRange;","/**\n * Copyright (c) 2013-present, 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 * @providesModule generateRandomKey\n * @format\n * \n */\n\n'use strict';\n\nvar seenKeys = {};\nvar MULTIPLIER = Math.pow(2, 24);\n\nfunction generateRandomKey() {\n var key = void 0;\n while (key === undefined || seenKeys.hasOwnProperty(key) || !isNaN(+key)) {\n key = Math.floor(Math.random() * MULTIPLIER).toString(32);\n }\n seenKeys[key] = true;\n return key;\n}\n\nmodule.exports = generateRandomKey;","/**\n * Copyright (c) 2013-present, 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 * @providesModule randomizeBlockMapKeys\n * @format\n * \n */\n\n'use strict';\n\nvar ContentBlockNode = require('./ContentBlockNode');\nvar Immutable = require('immutable');\n\nvar generateRandomKey = require('./generateRandomKey');\n\nvar OrderedMap = Immutable.OrderedMap;\n\n\nvar randomizeContentBlockNodeKeys = function randomizeContentBlockNodeKeys(blockMap) {\n var newKeysRef = {};\n\n // we keep track of root blocks in order to update subsequent sibling links\n var lastRootBlock = void 0;\n\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();\n\n // new key that we will use to build linking\n var key = generateRandomKey();\n\n // we will add it here to re-use it later\n newKeysRef[oldKey] = key;\n\n if (nextKey) {\n var nextBlock = blockMapState.get(nextKey);\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 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 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) 2013-present, 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 * @providesModule removeEntitiesAtEdges\n * @format\n * \n */\n\n'use strict';\n\nvar CharacterMetadata = require('./CharacterMetadata');\n\nvar findRangesImmutable = require('./findRangesImmutable');\nvar invariant = require('fbjs/lib/invariant');\n\nfunction removeEntitiesAtEdges(contentState, selectionState) {\n var blockMap = contentState.getBlockMap();\n var entityMap = contentState.getEntityMap();\n\n var updatedBlocks = {};\n\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 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\nfunction getRemovalRange(characters, key, offset) {\n var removalRange;\n findRangesImmutable(characters, function (a, b) {\n return a.getEntity() === b.getEntity();\n }, function (element) {\n return element.getEntity() === key;\n }, function (start, end) {\n if (start <= offset && end >= offset) {\n removalRange = { start: start, end: end };\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 if (entity.getMutability() !== 'MUTABLE') {\n var _getRemovalRange = getRemovalRange(chars, entityAfterCursor, offset),\n start = _getRemovalRange.start,\n end = _getRemovalRange.end;\n\n var current;\n while (start < end) {\n current = chars.get(start);\n chars = chars.set(start, CharacterMetadata.applyEntity(current, null));\n start++;\n }\n return block.set('characterList', chars);\n }\n }\n\n return block;\n}\n\nmodule.exports = removeEntitiesAtEdges;","/**\n * Copyright (c) 2013-present, 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 * @providesModule getContentStateFragment\n * @format\n * \n */\n\n'use strict';\n\nvar randomizeBlockMapKeys = require('./randomizeBlockMapKeys');\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();\n\n // 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 var contentWithoutEdgeEntities = removeEntitiesAtEdges(contentState, selectionState);\n\n var blockMap = contentWithoutEdgeEntities.getBlockMap();\n var blockKeys = blockMap.keySeq();\n var startIndex = blockKeys.indexOf(startKey);\n var endIndex = blockKeys.indexOf(endKey) + 1;\n\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;","/**\n * Copyright (c) 2013-present, 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 * @providesModule insertIntoList\n * @format\n * \n */\n\n'use strict';\n\n/**\n * Maintain persistence for target list when appending and prepending.\n */\nfunction insertIntoList(targetList, toInsert, offset) {\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 return targetList;\n}\n\nmodule.exports = insertIntoList;","/**\n * Copyright (c) 2013-present, 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 * @providesModule insertFragmentIntoContentState\n * @format\n * \n */\n\n'use strict';\n\nvar BlockMapBuilder = require('./BlockMapBuilder');\nvar ContentBlockNode = require('./ContentBlockNode');\nvar Immutable = require('immutable');\n\nvar insertIntoList = require('./insertIntoList');\nvar invariant = require('fbjs/lib/invariant');\nvar randomizeBlockMapKeys = require('./randomizeBlockMapKeys');\n\nvar List = Immutable.List;\n\n\nvar updateExistingBlock = function updateExistingBlock(contentState, selectionState, blockMap, fragmentBlock, targetKey, targetOffset) {\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\n var newBlock = targetBlock.merge({\n text: text.slice(0, targetOffset) + fragmentBlock.getText() + text.slice(targetOffset),\n characterList: insertIntoList(chars, fragmentBlock.getCharacterList(), targetOffset),\n data: fragmentBlock.getData()\n });\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/**\n * Appends text/characterList from the fragment first block to\n * target block.\n */\nvar updateHead = function updateHead(block, targetOffset, fragment) {\n var text = block.getText();\n var chars = block.getCharacterList();\n\n // Modify head portion of block.\n var headText = text.slice(0, targetOffset);\n var headCharacters = chars.slice(0, targetOffset);\n var appendToHead = fragment.first();\n\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/**\n * Appends offset text/characterList from the target block to the last\n * fragment block.\n */\nvar updateTail = function updateTail(block, targetOffset, fragment) {\n // Modify tail portion of block.\n var text = block.getText();\n var chars = block.getCharacterList();\n\n // Modify head portion of block.\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\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 = [];\n\n // 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 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 }\n\n // update the last root block fragment\n blockMapState.setIn([lastRootFragmentBlockKey, 'nextSibling'], targetNextKey);\n\n // update the original target next block\n if (targetNextKey) {\n blockMapState.setIn([targetNextKey, 'prevSibling'], lastRootFragmentBlockKey);\n }\n\n // update fragment parent links\n fragmentRootBlocks.forEach(function (blockKey) {\n return blockMapState.setIn([blockKey, 'parent'], targetParentKey);\n });\n\n // update targetBlock parent child links\n if (targetParentKey) {\n var targetParent = blockMap.get(targetParentKey);\n var originalTargetParentChildKeys = targetParent.getChildKeys();\n\n var targetBlockIndex = originalTargetParentChildKeys.indexOf(targetKey);\n var insertionIndex = targetBlockIndex + 1;\n\n var newChildrenKeysArray = originalTargetParentChildKeys.toArray();\n\n // insert fragment children\n newChildrenKeysArray.splice.apply(newChildrenKeysArray, [insertionIndex, 0].concat(fragmentRootBlocks));\n\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\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 }\n\n // Insert fragment blocks after the head and before the tail.\n fragment\n // 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 });\n\n // update tail\n newBlockArr.push(updateTail(block, targetOffset, fragment));\n });\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 !selectionState.isCollapsed() ? process.env.NODE_ENV !== 'production' ? invariant(false, '`insertFragment` should only be called with a collapsed selection state.') : invariant(false) : void 0;\n\n var blockMap = contentState.getBlockMap();\n var fragment = randomizeBlockMapKeys(fragmentBlockMap);\n var targetKey = selectionState.getStartKey();\n var targetOffset = selectionState.getStartOffset();\n\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 }\n\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 if (fragment.size === 1) {\n return updateExistingBlock(contentState, selectionState, blockMap, fragment.first(), targetKey, targetOffset);\n }\n\n return insertFragment(contentState, selectionState, blockMap, fragment, targetKey, targetOffset);\n};\n\nmodule.exports = insertFragmentIntoContentState;","/**\n * Copyright (c) 2013-present, 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 * @providesModule insertTextIntoContentState\n * @format\n * \n */\n\n'use strict';\n\nvar Immutable = require('immutable');\n\nvar insertIntoList = require('./insertIntoList');\nvar invariant = require('fbjs/lib/invariant');\n\nvar Repeat = Immutable.Repeat;\n\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\n var len = text.length;\n if (!len) {\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\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\n var newOffset = offset + len;\n\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;","/**\n * Copyright (c) 2013-present, 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 * @providesModule modifyBlockForContentState\n * @format\n * \n */\n\n'use strict';\n\nvar Immutable = require('immutable');\n\nvar Map = Immutable.Map;\n\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\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = modifyBlockForContentState;","'use strict';\n\n/**\n * Copyright (c) 2013-present, 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 * @providesModule getNextDelimiterBlockKey\n * @format\n * \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\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 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;","/**\n * Copyright (c) 2013-present, 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 * @providesModule removeRangeFromContentState\n * @format\n * \n */\n\n'use strict';\n\nvar ContentBlockNode = require('./ContentBlockNode');\nvar Immutable = require('immutable');\n\nvar getNextDelimiterBlockKey = require('./getNextDelimiterBlockKey');\n\nvar List = Immutable.List,\n Map = Immutable.Map;\n\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/**\n * Ancestors needs to be preserved when there are non selected\n * children to make sure we do not leave any orphans behind\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 while (blockNode && blockNode.getParentKey()) {\n var parentKey = blockNode.getParentKey();\n if (parentKey) {\n parents.push(parentKey);\n }\n blockNode = parentKey ? blockMap.get(parentKey) : null;\n }\n\n return parents;\n};\n\n/**\n * Get all next delimiter keys until we hit a root delimiter and return\n * an array of key references\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 while (nextDelimiter && blockMap.get(nextDelimiter)) {\n var _block = blockMap.get(nextDelimiter);\n nextDelimiters.push(nextDelimiter);\n\n // we do not need to keep checking all root node siblings, just the first occurance\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 }\n\n // note that we need to make sure we refer to the original block since this\n // function is called within a withMutations\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 }\n\n // note that we need to make sure we refer to the original block since this\n // function is called within a withMutations\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(startBlock, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(startBlock, blocks, originalBlockMap)\n });\n });\n\n // update endblock if its retained\n transformBlock(endBlock.getKey(), blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(endBlock, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(endBlock, blocks, originalBlockMap)\n });\n });\n\n // update start block parent ancestors\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 });\n\n // update start block next - can only happen if startBlock == endBlock\n transformBlock(startBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: startBlock.getPrevSiblingKey()\n });\n });\n\n // update start block prev\n transformBlock(startBlock.getPrevSiblingKey(), blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(startBlock, blocks, originalBlockMap)\n });\n });\n\n // update end block next\n transformBlock(endBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: getPrevValidSibling(endBlock, blocks, originalBlockMap)\n });\n });\n\n // update end block prev\n transformBlock(endBlock.getPrevSiblingKey(), blocks, function (block) {\n return block.merge({\n nextSibling: endBlock.getNextSiblingKey()\n });\n });\n\n // update end block parent ancestors\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 });\n\n // update next delimiters all the way to a root delimiter\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 });\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\n var startBlock = blockMap.get(startKey);\n var endBlock = blockMap.get(endKey);\n\n // we assume that ContentBlockNode and ContentBlocks are not mixed together\n var isExperimentalTreeBlock = startBlock instanceof ContentBlockNode;\n\n // used to retain blocks that should not be deleted to avoid orphan children\n var parentAncestors = [];\n\n if (isExperimentalTreeBlock) {\n var endBlockchildrenKeys = endBlock.getChildKeys();\n var endBlockAncestors = getAncestorsKeys(endKey, blockMap);\n\n // endBlock has unselected sibblings so we can not remove its ancestors parents\n if (endBlock.getNextSiblingKey()) {\n parentAncestors = parentAncestors.concat(endBlockAncestors);\n }\n\n // endBlock has children so can not remove this block or any of its ancestors\n if (!endBlockchildrenKeys.isEmpty()) {\n parentAncestors = parentAncestors.concat(endBlockAncestors.concat([endKey]));\n }\n\n // we need to retain all ancestors of the next delimiter block\n parentAncestors = parentAncestors.concat(getAncestorsKeys(getNextDelimiterBlockKey(endBlock, blockMap), blockMap));\n }\n\n var characterList = void 0;\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 });\n\n var newBlocks = 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\n var updatedBlockMap = blockMap.merge(newBlocks).filter(function (block) {\n return !!block;\n });\n\n if (isExperimentalTreeBlock) {\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/**\n * Maintain persistence for target list when removing characters on the\n * head and tail of the character list.\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 return targetList;\n};\n\nmodule.exports = removeRangeFromContentState;","/**\n * Copyright (c) 2013-present, 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 * @providesModule splitBlockInContentState\n * @format\n * \n */\n\n'use strict';\n\nvar ContentBlockNode = require('./ContentBlockNode');\nvar Immutable = require('immutable');\n\nvar generateRandomKey = require('./generateRandomKey');\nvar invariant = require('fbjs/lib/invariant');\n\nvar List = Immutable.List,\n Map = Immutable.Map;\n\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();\n\n // update block parent\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\n newChildrenArray.splice(insertionIndex, 0, belowBlockKey);\n\n return block.merge({\n children: List(newChildrenArray)\n });\n });\n\n // update original next block\n transformBlock(originalBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: belowBlockKey\n });\n });\n\n // update original block\n transformBlock(originalBlockKey, blocks, function (block) {\n return block.merge({\n nextSibling: belowBlockKey\n });\n });\n\n // update below block\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\n var key = selectionState.getAnchorKey();\n var offset = selectionState.getAnchorOffset();\n var blockMap = contentState.getBlockMap();\n var blockToSplit = blockMap.get(key);\n var text = blockToSplit.getText();\n var chars = blockToSplit.getCharacterList();\n var keyBelow = generateRandomKey();\n var isExperimentalTreeBlock = blockToSplit instanceof ContentBlockNode;\n\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\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\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) 2013-present, 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 * @providesModule DraftModifier\n * @format\n * \n */\n\n'use strict';\n\nvar CharacterMetadata = require('./CharacterMetadata');\nvar ContentStateInlineStyle = require('./ContentStateInlineStyle');\nvar DraftFeatureFlags = require('./DraftFeatureFlags');\nvar Immutable = require('immutable');\n\nvar applyEntityToContentState = require('./applyEntityToContentState');\nvar getCharacterRemovalRange = require('./getCharacterRemovalRange');\nvar getContentStateFragment = require('./getContentStateFragment');\nvar insertFragmentIntoContentState = require('./insertFragmentIntoContentState');\nvar insertTextIntoContentState = require('./insertTextIntoContentState');\nvar invariant = require('fbjs/lib/invariant');\nvar modifyBlockForContentState = require('./modifyBlockForContentState');\nvar removeEntitiesAtEdges = require('./removeEntitiesAtEdges');\nvar removeRangeFromContentState = require('./removeRangeFromContentState');\nvar splitBlockInContentState = require('./splitBlockInContentState');\n\nvar OrderedSet = Immutable.OrderedSet;\n\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\n var character = CharacterMetadata.create({\n style: inlineStyle || OrderedSet(),\n entity: entityKey || null\n });\n\n return insertTextIntoContentState(withoutText, withoutText.getSelectionAfter(), text, character);\n },\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\n moveText: function moveText(contentState, removalRange, targetRange) {\n var movedFragment = getContentStateFragment(contentState, removalRange);\n\n var afterRemoval = DraftModifier.removeRange(contentState, removalRange, 'backward');\n\n return DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n },\n\n replaceWithFragment: function replaceWithFragment(contentState, targetRange, fragment) {\n var withoutEntities = removeEntitiesAtEdges(contentState, targetRange);\n var withoutText = removeRangeFromContentState(withoutEntities, targetRange);\n\n return insertFragmentIntoContentState(withoutText, withoutText.getSelectionAfter(), fragment);\n },\n\n removeRange: function removeRange(contentState, rangeToRemove, removalDirection) {\n var startKey = void 0,\n endKey = void 0,\n startBlock = void 0,\n endBlock = void 0;\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 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\n var startEntityKey = startBlock.getEntityAt(startOffset);\n var endEntityKey = endBlock.getEntityAt(endOffset - 1);\n\n // Check whether the selection state overlaps with a single entity.\n // If so, try to remove the appropriate substring of the entity text.\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 var adjustedRemovalRange = rangeToRemove;\n if (DraftFeatureFlags.draft_segmented_entities_behavior) {\n // Adjust the selection to properly delete segemented and immutable\n // entities\n adjustedRemovalRange = getCharacterRemovalRange(contentState.getEntityMap(), startBlock, endBlock, rangeToRemove, removalDirection);\n }\n\n var withoutEntities = removeEntitiesAtEdges(contentState, adjustedRemovalRange);\n return removeRangeFromContentState(withoutEntities, adjustedRemovalRange);\n },\n\n splitBlock: function splitBlock(contentState, selectionState) {\n var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n var withoutText = removeRangeFromContentState(withoutEntities, selectionState);\n\n return splitBlockInContentState(withoutText, withoutText.getSelectionAfter());\n },\n\n applyInlineStyle: function applyInlineStyle(contentState, selectionState, inlineStyle) {\n return ContentStateInlineStyle.add(contentState, selectionState, inlineStyle);\n },\n\n removeInlineStyle: function removeInlineStyle(contentState, selectionState, inlineStyle) {\n return ContentStateInlineStyle.remove(contentState, selectionState, inlineStyle);\n },\n\n setBlockType: function setBlockType(contentState, selectionState, blockType) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({ type: blockType, depth: 0 });\n });\n },\n\n setBlockData: function setBlockData(contentState, selectionState, blockData) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({ data: blockData });\n });\n },\n\n mergeBlockData: function mergeBlockData(contentState, selectionState, blockData) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({ 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};\n\nmodule.exports = DraftModifier;","\"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\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\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 */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) 2013-present, 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 * @providesModule BlockTree\n * @format\n * \n */\n\n'use strict';\n\nvar Immutable = require('immutable');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar findRangesImmutable = require('./findRangesImmutable');\n\nvar List = Immutable.List,\n Repeat = Immutable.Repeat,\n Record = Immutable.Record;\n\n\nvar returnTrue = emptyFunction.thatReturnsTrue;\n\nvar FINGERPRINT_DELIMITER = '-';\n\nvar defaultLeafRange = {\n start: null,\n end: null\n};\n\nvar LeafRange = Record(defaultLeafRange);\n\nvar defaultDecoratorRange = {\n start: null,\n end: null,\n decoratorKey: null,\n leaves: null\n};\n\nvar DecoratorRange = Record(defaultDecoratorRange);\n\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 if (!textLength) {\n return List.of(new DecoratorRange({\n start: 0,\n end: 0,\n decoratorKey: null,\n leaves: List.of(new LeafRange({ start: 0, end: 0 }))\n }));\n }\n\n var leafSets = [];\n var decorations = decorator ? decorator.getDecorations(block, contentState) : List(Repeat(null, textLength));\n\n var chars = block.getCharacterList();\n\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\n return List(leafSets);\n },\n\n /**\n * Create a string representation of the given tree map. This allows us\n * to rapidly determine whether a tree has undergone a significant\n * structural change.\n */\n getFingerprint: function getFingerprint(tree) {\n return tree.map(function (leafSet) {\n var decoratorKey = leafSet.get('decoratorKey');\n var fingerprintString = decoratorKey !== null ? decoratorKey + '.' + (leafSet.get('end') - leafSet.get('start')) : '';\n return '' + fingerprintString + '.' + leafSet.get('leaves').size;\n }).join(FINGERPRINT_DELIMITER);\n }\n};\n\n/**\n * Generate LeafRange records for a given character list.\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) 2013-present, 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 * @providesModule DraftEntityInstance\n * @legacyServerCallableInstance\n * @format\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Immutable = require('immutable');\n\nvar Record = Immutable.Record;\n\n\nvar DraftEntityInstanceRecord = Record({\n type: 'TOKEN',\n mutability: 'IMMUTABLE',\n data: Object\n});\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 = function (_DraftEntityInstanceR) {\n _inherits(DraftEntityInstance, _DraftEntityInstanceR);\n\n function DraftEntityInstance() {\n _classCallCheck(this, DraftEntityInstance);\n\n return _possibleConstructorReturn(this, _DraftEntityInstanceR.apply(this, arguments));\n }\n\n DraftEntityInstance.prototype.getType = function getType() {\n return this.get('type');\n };\n\n DraftEntityInstance.prototype.getMutability = function getMutability() {\n return this.get('mutability');\n };\n\n DraftEntityInstance.prototype.getData = function getData() {\n return this.get('data');\n };\n\n return DraftEntityInstance;\n}(DraftEntityInstanceRecord);\n\nmodule.exports = DraftEntityInstance;","'use strict';\n\nvar _assign = require('object-assign');\n\nvar _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; };\n\n/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftEntity\n * @format\n * \n */\n\nvar DraftEntityInstance = require('./DraftEntityInstance');\nvar Immutable = require('immutable');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar Map = Immutable.Map;\n\n\nvar instances = Map();\nvar instanceKey = 0;\n\n/**\n * Temporary utility for generating the warnings\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 * 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\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({ type: type, mutability: mutability, data: data || {} }));\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 var key = '' + ++instanceKey;\n instances = instances.set(key, instance);\n return key;\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 var newData = _extends({}, instance.getData(), toMerge);\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 var newInstance = instance.set('data', newData);\n instances = instances.set(key, newInstance);\n return newInstance;\n }\n};\n\nmodule.exports = DraftEntity;","/**\n * Copyright (c) 2013-present, 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 * @providesModule SelectionState\n * @format\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Immutable = require('immutable');\n\nvar Record = Immutable.Record;\n\n\nvar defaultRecord = {\n anchorKey: '',\n anchorOffset: 0,\n focusKey: '',\n focusOffset: 0,\n isBackward: false,\n hasFocus: false\n};\n\nvar SelectionStateRecord = Record(defaultRecord);\n\nvar SelectionState = function (_SelectionStateRecord) {\n _inherits(SelectionState, _SelectionStateRecord);\n\n function SelectionState() {\n _classCallCheck(this, SelectionState);\n\n return _possibleConstructorReturn(this, _SelectionStateRecord.apply(this, arguments));\n }\n\n SelectionState.prototype.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 SelectionState.prototype.getAnchorKey = function getAnchorKey() {\n return this.get('anchorKey');\n };\n\n SelectionState.prototype.getAnchorOffset = function getAnchorOffset() {\n return this.get('anchorOffset');\n };\n\n SelectionState.prototype.getFocusKey = function getFocusKey() {\n return this.get('focusKey');\n };\n\n SelectionState.prototype.getFocusOffset = function getFocusOffset() {\n return this.get('focusOffset');\n };\n\n SelectionState.prototype.getIsBackward = function getIsBackward() {\n return this.get('isBackward');\n };\n\n SelectionState.prototype.getHasFocus = function getHasFocus() {\n return this.get('hasFocus');\n };\n\n /**\n * Return whether the specified range overlaps with an edge of the\n * SelectionState.\n */\n\n\n SelectionState.prototype.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 <= selectionEnd && selectionStart <= end;\n }\n\n if (blockKey !== anchorKey && blockKey !== focusKey) {\n return false;\n }\n\n var offsetToCheck = blockKey === anchorKey ? this.getAnchorOffset() : this.getFocusOffset();\n\n return start <= offsetToCheck && end >= offsetToCheck;\n };\n\n SelectionState.prototype.isCollapsed = function isCollapsed() {\n return this.getAnchorKey() === this.getFocusKey() && this.getAnchorOffset() === this.getFocusOffset();\n };\n\n SelectionState.prototype.getStartKey = function getStartKey() {\n return this.getIsBackward() ? this.getFocusKey() : this.getAnchorKey();\n };\n\n SelectionState.prototype.getStartOffset = function getStartOffset() {\n return this.getIsBackward() ? this.getFocusOffset() : this.getAnchorOffset();\n };\n\n SelectionState.prototype.getEndKey = function getEndKey() {\n return this.getIsBackward() ? this.getAnchorKey() : this.getFocusKey();\n };\n\n SelectionState.prototype.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) 2013-present, 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 * @providesModule sanitizeDraftText\n * @format\n * \n */\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) 2013-present, 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 * @providesModule ContentState\n * @format\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BlockMapBuilder = require('./BlockMapBuilder');\nvar CharacterMetadata = require('./CharacterMetadata');\nvar ContentBlock = require('./ContentBlock');\nvar ContentBlockNode = require('./ContentBlockNode');\nvar DraftEntity = require('./DraftEntity');\nvar DraftFeatureFlags = require('./DraftFeatureFlags');\nvar Immutable = require('immutable');\nvar SelectionState = require('./SelectionState');\n\nvar generateRandomKey = require('./generateRandomKey');\nvar sanitizeDraftText = require('./sanitizeDraftText');\n\nvar List = Immutable.List,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\n\n\nvar experimentalTreeDataSupport = DraftFeatureFlags.draft_tree_data_support;\n\nvar defaultRecord = {\n entityMap: null,\n blockMap: null,\n selectionBefore: null,\n selectionAfter: null\n};\n\nvar ContentBlockNodeRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\n\nvar ContentStateRecord = Record(defaultRecord);\n\nvar ContentState = function (_ContentStateRecord) {\n _inherits(ContentState, _ContentStateRecord);\n\n function ContentState() {\n _classCallCheck(this, ContentState);\n\n return _possibleConstructorReturn(this, _ContentStateRecord.apply(this, arguments));\n }\n\n ContentState.prototype.getEntityMap = function getEntityMap() {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity;\n };\n\n ContentState.prototype.getBlockMap = function getBlockMap() {\n return this.get('blockMap');\n };\n\n ContentState.prototype.getSelectionBefore = function getSelectionBefore() {\n return this.get('selectionBefore');\n };\n\n ContentState.prototype.getSelectionAfter = function getSelectionAfter() {\n return this.get('selectionAfter');\n };\n\n ContentState.prototype.getBlockForKey = function getBlockForKey(key) {\n var block = this.getBlockMap().get(key);\n return block;\n };\n\n ContentState.prototype.getKeyBefore = function getKeyBefore(key) {\n return this.getBlockMap().reverse().keySeq().skipUntil(function (v) {\n return v === key;\n }).skip(1).first();\n };\n\n ContentState.prototype.getKeyAfter = function getKeyAfter(key) {\n return this.getBlockMap().keySeq().skipUntil(function (v) {\n return v === key;\n }).skip(1).first();\n };\n\n ContentState.prototype.getBlockAfter = function getBlockAfter(key) {\n return this.getBlockMap().skipUntil(function (_, k) {\n return k === key;\n }).skip(1).first();\n };\n\n ContentState.prototype.getBlockBefore = function getBlockBefore(key) {\n return this.getBlockMap().reverse().skipUntil(function (_, k) {\n return k === key;\n }).skip(1).first();\n };\n\n ContentState.prototype.getBlocksAsArray = function getBlocksAsArray() {\n return this.getBlockMap().toArray();\n };\n\n ContentState.prototype.getFirstBlock = function getFirstBlock() {\n return this.getBlockMap().first();\n };\n\n ContentState.prototype.getLastBlock = function getLastBlock() {\n return this.getBlockMap().last();\n };\n\n ContentState.prototype.getPlainText = function getPlainText(delimiter) {\n return this.getBlockMap().map(function (block) {\n return block ? block.getText() : '';\n }).join(delimiter || '\\n');\n };\n\n ContentState.prototype.getLastCreatedEntityKey = function getLastCreatedEntityKey() {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity.__getLastCreatedEntityKey();\n };\n\n ContentState.prototype.hasText = function hasText() {\n var blockMap = this.getBlockMap();\n return blockMap.size > 1 || blockMap.first().getLength() > 0;\n };\n\n ContentState.prototype.createEntity = function createEntity(type, mutability, data) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__create(type, mutability, data);\n return this;\n };\n\n ContentState.prototype.mergeEntityData = function mergeEntityData(key, toMerge) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__mergeData(key, toMerge);\n return this;\n };\n\n ContentState.prototype.replaceEntityData = function replaceEntityData(key, newData) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__replaceData(key, newData);\n return this;\n };\n\n ContentState.prototype.addEntity = function addEntity(instance) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__add(instance);\n return this;\n };\n\n ContentState.prototype.getEntity = function getEntity(key) {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity.__get(key);\n };\n\n ContentState.createFromBlockArray = function createFromBlockArray(\n // 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\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 return ContentState;\n}(ContentStateRecord);\n\nmodule.exports = ContentState;","/**\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\n'use strict';\n\nvar invariant = require('./invariant');\n\nvar NEUTRAL = 'NEUTRAL'; // No strong direction\nvar LTR = 'LTR'; // Left-to-Right direction\nvar RTL = 'RTL'; // Right-to-Left direction\n\nvar globalDir = null;\n\n// == Helpers ==\n\n/**\n * Check if a directionality value is a Strong one\n */\nfunction isStrong(dir) {\n return dir === LTR || dir === RTL;\n}\n\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property.\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/**\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 */\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}\n\n// == Global Direction ==\n\n/**\n * Set the global direction.\n */\nfunction setGlobalDir(dir) {\n globalDir = dir;\n}\n\n/**\n * Initialize the global direction\n */\nfunction initGlobalDir() {\n setGlobalDir(LTR);\n}\n\n/**\n * Get the global direction\n */\nfunction getGlobalDir() {\n if (!globalDir) {\n this.initGlobalDir();\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};\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 * 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\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\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\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\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\n};\n\nvar REGEX_STRONG = new RegExp('[' + RANGE_BY_BIDI_TYPE.L + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\n\nvar REGEX_RTL = new RegExp('[' + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\n\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 */\nfunction firstStrongChar(str) {\n var match = REGEX_STRONG.exec(str);\n return match == null ? null : match[0];\n}\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 */\nfunction firstStrongCharDir(str) {\n var strongChar = firstStrongChar(str);\n if (strongChar == null) {\n return UnicodeBidiDirection.NEUTRAL;\n }\n return REGEX_RTL.exec(strongChar) ? UnicodeBidiDirection.RTL : UnicodeBidiDirection.LTR;\n}\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 */\nfunction resolveBlockDir(str, fallback) {\n fallback = fallback || UnicodeBidiDirection.NEUTRAL;\n if (!str.length) {\n return fallback;\n }\n var blockDir = firstStrongCharDir(str);\n return blockDir === UnicodeBidiDirection.NEUTRAL ? fallback : blockDir;\n}\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 */\nfunction getDirection(str, strongFallback) {\n if (!strongFallback) {\n strongFallback = UnicodeBidiDirection.getGlobalDir();\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/**\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 */\nfunction isDirectionLTR(str, strongFallback) {\n return getDirection(str, strongFallback) === UnicodeBidiDirection.LTR;\n}\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 */\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};\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 * 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\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar UnicodeBidi = require('./UnicodeBidi');\nvar UnicodeBidiDirection = require('./UnicodeBidiDirection');\n\nvar invariant = require('./invariant');\n\nvar UnicodeBidiService = function () {\n\n /**\n * Stateful class for paragraph direction detection\n *\n * @param defaultDir Default direction of the service\n */\n function UnicodeBidiService(defaultDir) {\n _classCallCheck(this, UnicodeBidiService);\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 this._defaultDir = defaultDir;\n this.reset();\n }\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 UnicodeBidiService.prototype.reset = function reset() {\n this._lastDir = this._defaultDir;\n };\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 UnicodeBidiService.prototype.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;","\"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\nvar nullthrows = function nullthrows(x) {\n if (x != null) {\n return x;\n }\n throw new Error(\"Got unexpected null or undefined\");\n};\n\nmodule.exports = nullthrows;","/**\n * Copyright (c) 2013-present, 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 * @providesModule EditorBidiService\n * @format\n * \n */\n\n'use strict';\n\nvar Immutable = require('immutable');\nvar UnicodeBidiService = require('fbjs/lib/UnicodeBidiService');\n\nvar nullthrows = require('fbjs/lib/nullthrows');\n\nvar OrderedMap = Immutable.OrderedMap;\n\n\nvar bidiService;\n\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};\n\nmodule.exports = EditorBidiService;","/**\n * Copyright (c) 2013-present, 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 * @providesModule EditorState\n * @format\n * \n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar _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; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BlockTree = require('./BlockTree');\nvar ContentState = require('./ContentState');\nvar EditorBidiService = require('./EditorBidiService');\nvar Immutable = require('immutable');\nvar SelectionState = require('./SelectionState');\n\nvar OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Stack = Immutable.Stack;\n\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};\n\nvar EditorStateRecord = Record(defaultRecord);\n\nvar EditorState = function () {\n EditorState.createEmpty = function createEmpty(decorator) {\n return EditorState.createWithContent(ContentState.createFromText(''), decorator);\n };\n\n EditorState.createWithContent = function createWithContent(contentState, decorator) {\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 = _extends({}, config, {\n treeMap: generateNewTreeMap(currentContent, decorator),\n directionMap: EditorBidiService.getDirectionMap(currentContent)\n });\n return new EditorState(new EditorStateRecord(recordConfig));\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 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 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 if (newContent !== existingContent) {\n state.set('treeMap', regenerateTreeForNewBlocks(editorState, newContent.getBlockMap(), newContent.getEntityMap(), decorator));\n }\n\n state.merge(put);\n });\n\n return new EditorState(map);\n };\n\n EditorState.prototype.toJS = function toJS() {\n return this.getImmutable().toJS();\n };\n\n EditorState.prototype.getAllowUndo = function getAllowUndo() {\n return this.getImmutable().get('allowUndo');\n };\n\n EditorState.prototype.getCurrentContent = function getCurrentContent() {\n return this.getImmutable().get('currentContent');\n };\n\n EditorState.prototype.getUndoStack = function getUndoStack() {\n return this.getImmutable().get('undoStack');\n };\n\n EditorState.prototype.getRedoStack = function getRedoStack() {\n return this.getImmutable().get('redoStack');\n };\n\n EditorState.prototype.getSelection = function getSelection() {\n return this.getImmutable().get('selection');\n };\n\n EditorState.prototype.getDecorator = function getDecorator() {\n return this.getImmutable().get('decorator');\n };\n\n EditorState.prototype.isInCompositionMode = function isInCompositionMode() {\n return this.getImmutable().get('inCompositionMode');\n };\n\n EditorState.prototype.mustForceSelection = function mustForceSelection() {\n return this.getImmutable().get('forceSelection');\n };\n\n EditorState.prototype.getNativelyRenderedContent = function getNativelyRenderedContent() {\n return this.getImmutable().get('nativelyRenderedContent');\n };\n\n EditorState.prototype.getLastChangeType = function getLastChangeType() {\n return this.getImmutable().get('lastChangeType');\n };\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 EditorState.prototype.getInlineStyleOverride = function getInlineStyleOverride() {\n return this.getImmutable().get('inlineStyleOverride');\n };\n\n EditorState.setInlineStyleOverride = function setInlineStyleOverride(editorState, inlineStyleOverride) {\n return EditorState.set(editorState, { 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 EditorState.prototype.getCurrentInlineStyle = function getCurrentInlineStyle() {\n var override = this.getInlineStyleOverride();\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 EditorState.prototype.getBlockTree = function getBlockTree(blockKey) {\n return this.getImmutable().getIn(['treeMap', blockKey]);\n };\n\n EditorState.prototype.isSelectionAtStartOfContent = function isSelectionAtStartOfContent() {\n var firstKey = this.getCurrentContent().getBlockMap().first().getKey();\n return this.getSelection().hasEdgeWithin(firstKey, 0, 0);\n };\n\n EditorState.prototype.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 EditorState.prototype.getDirectionMap = function getDirectionMap() {\n return this.getImmutable().get('directionMap');\n };\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 /**\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 return updateSelection(editorState, selection, true);\n };\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\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 /**\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 /**\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 if (editorState.getCurrentContent() === contentState) {\n return editorState;\n }\n\n var forceSelection = changeType !== 'insert-characters';\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();\n\n // Don't discard inline style overrides for the following change types:\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\n return EditorState.set(editorState, editorStateChanges);\n };\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 if (!newCurrentContent) {\n return editorState;\n }\n\n var currentContent = editorState.getCurrentContent();\n var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n\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 /**\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 if (!newCurrentContent) {\n return editorState;\n }\n\n var currentContent = editorState.getCurrentContent();\n var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n\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 /**\n * Not for public consumption.\n */\n\n\n function EditorState(immutable) {\n _classCallCheck(this, EditorState);\n\n this._immutable = immutable;\n }\n\n /**\n * Not for public consumption.\n */\n\n\n EditorState.prototype.getImmutable = function getImmutable() {\n return this._immutable;\n };\n\n return EditorState;\n}();\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/**\n * Regenerate the entire tree map for a given ContentState and decorator.\n * Returns an OrderedMap that maps all available ContentBlock objects.\n */\nfunction generateNewTreeMap(contentState, decorator) {\n return contentState.getBlockMap().map(function (block) {\n return BlockTree.generate(contentState, block, decorator);\n }).toOrderedMap();\n}\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 */\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/**\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 */\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/**\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 */\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);\n\n // If the cursor is not at the start of the block, look backward to\n // preserve the style of the preceding character.\n if (startOffset > 0) {\n return startBlock.getInlineStyleAt(startOffset - 1);\n }\n\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 if (startBlock.getLength()) {\n return startBlock.getInlineStyleAt(0);\n }\n\n // Otherwise, look upward in the document to find the closest character.\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);\n\n // If there is a character just inside the selection, use its style.\n if (startOffset < startBlock.getLength()) {\n return startBlock.getInlineStyleAt(startOffset);\n }\n\n // Check if the selection at the end of a non-empty block. Use the last\n // style in the block.\n if (startOffset > 0) {\n return startBlock.getInlineStyleAt(startOffset - 1);\n }\n\n // Otherwise, look upward in the document to find the closest character.\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) return lastNonEmpty.getInlineStyleAt(lastNonEmpty.getLength() - 1);\n return OrderedSet();\n}\n\nmodule.exports = EditorState;","/**\n * Copyright (c) 2013-present, 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 * @providesModule moveBlockInContentState\n * @format\n * \n */\n\n'use strict';\n\nvar ContentBlockNode = require('./ContentBlockNode');\nvar Immutable = require('immutable');\n\nvar getNextDelimiterBlockKey = require('./getNextDelimiterBlockKey');\nvar invariant = require('fbjs/lib/invariant');\n\nvar OrderedMap = Immutable.OrderedMap,\n List = Immutable.List;\n\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 }\n // possible values of 'insertionMode' are: 'after', 'before'\n var isInsertedAfterTarget = insertionMode === 'after';\n\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\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 });\n\n // update old prev\n transformBlock(originalPrevSiblingKey, blocks, function (block) {\n return block.merge({\n nextSibling: originalNextSiblingKey\n });\n });\n\n // update old next\n transformBlock(originalNextSiblingKey, blocks, function (block) {\n return block.merge({\n prevSibling: originalPrevSiblingKey\n });\n });\n\n // update new next\n transformBlock(newNextSiblingKey, blocks, function (block) {\n return block.merge({\n prevSibling: originalBlockKey\n });\n });\n\n // update new prev\n transformBlock(newPrevSiblingKey, blocks, function (block) {\n return block.merge({\n nextSibling: originalBlockKey\n });\n });\n\n // update new parent\n transformBlock(newParentKey, blocks, function (block) {\n var newParentChildrenList = block.getChildKeys();\n var targetBlockIndex = newParentChildrenList.indexOf(originalTargetKey);\n\n var insertionIndex = isInsertedAfterTarget ? targetBlockIndex + 1 : targetBlockIndex !== 0 ? targetBlockIndex - 1 : 0;\n\n var newChildrenArray = newParentChildrenList.toArray();\n newChildrenArray.splice(insertionIndex, 0, originalBlockKey);\n\n return block.merge({\n children: List(newChildrenArray)\n });\n });\n\n // update block\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\n var targetKey = targetBlock.getKey();\n var blockKey = blockToBeMoved.getKey();\n\n !(blockKey !== targetKey) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n\n var blockMap = contentState.getBlockMap();\n var isExperimentalTreeBlock = blockToBeMoved instanceof ContentBlockNode;\n\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\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\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\n var blocksAfter = blockMapWithoutBlocksToBeMoved.toSeq().skipUntil(function (v) {\n return v === targetBlock;\n }).skip(1);\n\n var slicedBlocks = blocksToBeMoved.map(function (block) {\n return [block.getKey(), block];\n });\n\n var newBlocks = OrderedMap();\n\n if (insertionMode === 'before') {\n var blockBefore = contentState.getBlockBefore(targetKey);\n\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\n newBlocks = blocksBefore.concat([].concat(slicedBlocks, [[targetKey, targetBlock]]), blocksAfter).toOrderedMap();\n } else if (insertionMode === 'after') {\n var blockAfter = contentState.getBlockAfter(targetKey);\n\n !(!blockAfter || blockAfter.getKey() !== blockKey) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n\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) 2013-present, 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 * @providesModule AtomicBlockUtils\n * @format\n * \n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar _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; };\n\nvar BlockMapBuilder = require('./BlockMapBuilder');\nvar CharacterMetadata = require('./CharacterMetadata');\nvar ContentBlock = require('./ContentBlock');\nvar ContentBlockNode = require('./ContentBlockNode');\nvar DraftFeatureFlags = require('./DraftFeatureFlags');\nvar DraftModifier = require('./DraftModifier');\nvar EditorState = require('./EditorState');\nvar Immutable = require('immutable');\nvar SelectionState = require('./SelectionState');\n\nvar generateRandomKey = require('./generateRandomKey');\nvar moveBlockInContentState = require('./moveBlockInContentState');\n\nvar experimentalTreeDataSupport = DraftFeatureFlags.draft_tree_data_support;\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\n\nvar List = Immutable.List,\n Repeat = Immutable.Repeat;\n\n\nvar AtomicBlockUtils = {\n insertAtomicBlock: function insertAtomicBlock(editorState, entityKey, character) {\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n\n var afterRemoval = DraftModifier.removeRange(contentState, selectionState, 'backward');\n\n var targetSelection = afterRemoval.getSelectionAfter();\n var afterSplit = DraftModifier.splitBlock(afterRemoval, targetSelection);\n var insertionTarget = afterSplit.getSelectionAfter();\n\n var asAtomicBlock = DraftModifier.setBlockType(afterSplit, insertionTarget, 'atomic');\n\n var charData = CharacterMetadata.create({ entity: entityKey });\n\n var atomicBlockConfig = {\n key: generateRandomKey(),\n type: 'atomic',\n text: character,\n characterList: List(Repeat(charData, character.length))\n };\n\n var atomicDividerBlockConfig = {\n key: generateRandomKey(),\n type: 'unstyled'\n };\n\n if (experimentalTreeDataSupport) {\n atomicBlockConfig = _extends({}, atomicBlockConfig, {\n nextSibling: atomicDividerBlockConfig.key\n });\n atomicDividerBlockConfig = _extends({}, atomicDividerBlockConfig, {\n prevSibling: atomicBlockConfig.key\n });\n }\n\n var fragmentArray = [new ContentBlockRecord(atomicBlockConfig), new ContentBlockRecord(atomicDividerBlockConfig)];\n\n var fragment = BlockMapBuilder.createFromArray(fragmentArray);\n\n var withAtomicBlock = DraftModifier.replaceWithFragment(asAtomicBlock, insertionTarget, fragment);\n\n var newContent = withAtomicBlock.merge({\n selectionBefore: selectionState,\n selectionAfter: withAtomicBlock.getSelectionAfter().set('hasFocus', true)\n });\n\n return EditorState.push(editorState, newContent, 'insert-fragment');\n },\n\n moveAtomicBlock: function moveAtomicBlock(editorState, atomicBlock, targetRange, insertionMode) {\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n\n var withMovedAtomicBlock = void 0;\n\n if (insertionMode === 'before' || insertionMode === 'after') {\n var targetBlock = contentState.getBlockForKey(insertionMode === 'before' ? targetRange.getStartKey() : targetRange.getEndKey());\n\n withMovedAtomicBlock = moveBlockInContentState(contentState, atomicBlock, targetBlock, insertionMode);\n } else {\n var afterRemoval = DraftModifier.removeRange(contentState, targetRange, 'backward');\n\n var selectionAfterRemoval = afterRemoval.getSelectionAfter();\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\n var selectionAfterSplit = afterSplit.getSelectionAfter();\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\n return EditorState.push(editorState, newContent, 'move-block');\n }\n};\n\nmodule.exports = AtomicBlockUtils;","/**\n * Copyright (c) 2013-present, 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 * @providesModule CompositeDraftDecorator\n * @format\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Immutable = require('immutable');\n\nvar List = Immutable.List;\n\n\nvar DELIMITER = '.';\n\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 = function () {\n function CompositeDraftDecorator(decorators) {\n _classCallCheck(this, CompositeDraftDecorator);\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 CompositeDraftDecorator.prototype.getDecorations = function getDecorations(block, contentState) {\n var decorations = Array(block.getText().length).fill(null);\n\n this._decorators.forEach(function ( /*object*/decorator, /*number*/ii) {\n var counter = 0;\n var strategy = decorator.strategy;\n var callback = function callback( /*number*/start, /*number*/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 strategy(block, callback, contentState);\n });\n\n return List(decorations);\n };\n\n CompositeDraftDecorator.prototype.getComponentForKey = function getComponentForKey(key) {\n var componentKey = parseInt(key.split(DELIMITER)[0], 10);\n return this._decorators[componentKey].component;\n };\n\n CompositeDraftDecorator.prototype.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/**\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 return true;\n}\n\n/**\n * Splice the specified component into our decoration array at the desired\n * range.\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;","'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 return Array.prototype.map.call(arguments, replace).join(' ');\n}\n\nfunction replace(str) {\n return str.replace(/\\//g, '-');\n}\n\nmodule.exports = cx;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DefaultDraftBlockRenderMap\n * @format\n * \n */\n\n'use strict';\n\nvar _require = require('immutable'),\n Map = _require.Map;\n\nvar React = require('react');\n\nvar cx = require('fbjs/lib/cx');\n\nvar UL_WRAP = React.createElement('ul', { className: cx('public/DraftStyleDefault/ul') });\nvar OL_WRAP = React.createElement('ol', { className: cx('public/DraftStyleDefault/ol') });\nvar PRE_WRAP = React.createElement('pre', { 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 '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});\n\nmodule.exports = DefaultDraftBlockRenderMap;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DefaultDraftInlineStyle\n * @format\n * \n */\n\n'use strict';\n\nmodule.exports = {\n BOLD: {\n fontWeight: 'bold'\n },\n\n CODE: {\n fontFamily: 'monospace',\n wordWrap: 'break-word'\n },\n\n ITALIC: {\n fontStyle: 'italic'\n },\n\n STRIKETHROUGH: {\n textDecoration: 'line-through'\n },\n\n UNDERLINE: {\n textDecoration: 'underline'\n }\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 */\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};","/**\n * Copyright (c) 2013-present, 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 * @providesModule getEntityKeyForSelection\n * @format\n * \n */\n\n'use strict';\n\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 */\nfunction getEntityKeyForSelection(contentState, targetSelection) {\n var entityKey;\n\n if (targetSelection.isCollapsed()) {\n var key = targetSelection.getAnchorKey();\n var offset = targetSelection.getAnchorOffset();\n if (offset > 0) {\n entityKey = contentState.getBlockForKey(key).getEntityAt(offset - 1);\n if (entityKey !== contentState.getBlockForKey(key).getEntityAt(offset)) {\n return null;\n }\n return filterKey(contentState.getEntityMap(), entityKey);\n }\n return null;\n }\n\n var startKey = targetSelection.getStartKey();\n var startOffset = targetSelection.getStartOffset();\n var startBlock = contentState.getBlockForKey(startKey);\n\n entityKey = startOffset === startBlock.getLength() ? null : startBlock.getEntityAt(startOffset);\n\n return filterKey(contentState.getEntityMap(), entityKey);\n}\n\n/**\n * Determine whether an entity key corresponds to a `MUTABLE` entity. If so,\n * return it. If not, return null.\n */\nfunction filterKey(entityMap, entityKey) {\n if (entityKey) {\n var entity = entityMap.__get(entityKey);\n return entity.getMutability() === 'MUTABLE' ? entityKey : null;\n }\n return null;\n}\n\nmodule.exports = getEntityKeyForSelection;","/**\n * Copyright (c) 2013-present, 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 * @providesModule isEventHandled\n * @format\n * \n */\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;","/**\n * Copyright (c) 2013-present, 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 * @providesModule isSelectionAtLeafStart\n * @format\n * \n */\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\n var isAtStart = false;\n\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 if (offset === leafStart) {\n isAtStart = true;\n return true;\n }\n\n return false;\n });\n }\n\n return false;\n });\n\n return isAtStart;\n}\n\nmodule.exports = isSelectionAtLeafStart;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftEditorCompositionHandler\n * @format\n * \n */\n\n'use strict';\n\nvar DraftFeatureFlags = require('./DraftFeatureFlags');\nvar DraftModifier = require('./DraftModifier');\nvar EditorState = require('./EditorState');\nvar Keys = require('fbjs/lib/Keys');\n\nvar getEntityKeyForSelection = require('./getEntityKeyForSelection');\nvar isEventHandled = require('./isEventHandled');\nvar isSelectionAtLeafStart = require('./isSelectionAtLeafStart');\n\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 */\nvar RESOLVE_DELAY = 20;\n\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 */\nvar resolved = false;\nvar stillComposing = false;\nvar textInputData = '';\n\nvar DraftEditorCompositionHandler = {\n onBeforeInput: function onBeforeInput(editor, e) {\n textInputData = (textInputData || '') + e.data;\n },\n\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 },\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\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 editor._onKeyDown(e);\n return;\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 resolved = true;\n var composedChars = textInputData;\n textInputData = '';\n\n var editorState = EditorState.set(editor._latestEditorState, {\n inCompositionMode: false\n });\n\n var currentStyle = editorState.getCurrentInlineStyle();\n var entityKey = getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection());\n\n var mustReset = !composedChars || isSelectionAtLeafStart(editorState) || currentStyle.size > 0 || entityKey !== null;\n\n if (mustReset) {\n editor.restoreEditorDOM();\n }\n\n editor.exitCurrentMode();\n\n if (composedChars) {\n if (DraftFeatureFlags.draft_handlebeforeinput_composed_text && editor.props.handleBeforeInput && isEventHandled(editor.props.handleBeforeInput(composedChars, editorState))) {\n return;\n }\n // If characters have been composed, re-rendering with the update\n // is sufficient to reset the editor.\n var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), composedChars, currentStyle, entityKey);\n editor.update(EditorState.push(editorState, contentState, 'insert-characters'));\n return;\n }\n\n if (mustReset) {\n editor.update(EditorState.set(editorState, {\n nativelyRenderedContent: null,\n forceSelection: true\n }));\n }\n }\n};\n\nmodule.exports = DraftEditorCompositionHandler;","/*!\n * UAParser.js v0.7.21\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2019 Faisal Salman <f@faisalman.com>\n * Licensed under MIT License\n */\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.21',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major', // deprecated\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded';\n\n\n ///////////\n // Helper\n //////////\n\n\n var util = {\n extend : function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n has : function (str1, str2) {\n if (typeof str1 === \"string\") {\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n } else {\n return false;\n }\n },\n lowerize : function (str) {\n return str.toLowerCase();\n },\n major : function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n },\n trim : function (str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n };\n\n\n ///////////////\n // Map helper\n //////////////\n\n\n var mapper = {\n\n rgx : function (ua, arrays) {\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length == 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length == 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n str : function (str, map) {\n\n for (var i in map) {\n // check if array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (util.has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (util.has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n }\n };\n\n\n ///////////////\n // String map\n //////////////\n\n\n var maps = {\n\n browser : {\n oldsafari : {\n version : {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n }\n }\n },\n\n device : {\n amazon : {\n model : {\n 'Fire Phone' : ['SD', 'KF']\n }\n },\n sprint : {\n model : {\n 'Evo Shift 4G' : '7373KT'\n },\n vendor : {\n 'HTC' : 'APA',\n 'Sprint' : 'Sprint'\n }\n }\n },\n\n os : {\n windows : {\n version : {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n }\n }\n }\n };\n\n\n //////////////\n // Regex map\n /////////////\n\n\n var regexes = {\n\n browser : [[\n\n // Presto based\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\n ], [NAME, VERSION], [\n\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [[NAME, 'Opera Mini'], VERSION], [\n\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\n ], [[NAME, 'Opera'], VERSION], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant\\s|iemobile|slim)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n // Avant/IEMobile/SlimBrowser\n /(bidubrowser|baidubrowser)[\\/\\s]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based\n /(rekonq)\\/([\\w\\.]*)/i, // Rekonq\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\\/([\\w\\.-]+)/i\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n ], [NAME, VERSION], [\n\n /(konqueror)\\/([\\w\\.]+)/i // Konqueror\n ], [[NAME, 'Konqueror'], VERSION], [\n\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\n ], [[NAME, 'IE'], VERSION], [\n\n /(edge|edgios|edga|edg)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\n ], [[NAME, 'Edge'], VERSION], [\n\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\n ], [[NAME, 'Yandex'], VERSION], [\n\n /(Avast)\\/([\\w\\.]+)/i // Avast Secure Browser\n ], [[NAME, 'Avast Secure Browser'], VERSION], [\n\n /(AVG)\\/([\\w\\.]+)/i // AVG Secure Browser\n ], [[NAME, 'AVG Secure Browser'], VERSION], [\n\n /(puffin)\\/([\\w\\.]+)/i // Puffin\n ], [[NAME, 'Puffin'], VERSION], [\n\n /(focus)\\/([\\w\\.]+)/i // Firefox Focus\n ], [[NAME, 'Firefox Focus'], VERSION], [\n\n /(opt)\\/([\\w\\.]+)/i // Opera Touch\n ], [[NAME, 'Opera Touch'], VERSION], [\n\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i // UCBrowser\n ], [[NAME, 'UCBrowser'], VERSION], [\n\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(windowswechat qbcore)\\/([\\w\\.]+)/i // WeChat Desktop for Windows Built-in Browser\n ], [[NAME, 'WeChat(Win) Desktop'], VERSION], [\n\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\n ], [[NAME, 'WeChat'], VERSION], [\n\n /(brave)\\/([\\w\\.]+)/i // Brave browser\n ], [[NAME, 'Brave'], VERSION], [\n\n /(qqbrowserlite)\\/([\\w\\.]+)/i // QQBrowserLite\n ], [NAME, VERSION], [\n\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\n ], [NAME, VERSION], [\n\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\n ], [NAME, VERSION], [\n\n /(baiduboxapp)[\\/\\s]?([\\w\\.]+)/i // Baidu App\n ], [NAME, VERSION], [\n\n /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i // 2345 Browser\n ], [NAME, VERSION], [\n\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i // SouGouBrowser\n ], [NAME], [\n\n /(LBBROWSER)/i // LieBao Browser\n ], [NAME], [\n\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI Browser']], [\n\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\n ], [VERSION, [NAME, 'Facebook']], [\n\n /safari\\s(line)\\/([\\w\\.]+)/i, // Line App for iOS\n /android.+(line)\\/([\\w\\.]+)\\/iab/i // Line App for Android\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\n ], [VERSION, [NAME, 'Chrome Headless']], [\n\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\n\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\n ], [VERSION, [NAME, 'Android Browser']], [\n\n /(sailfishbrowser)\\/([\\w\\.]+)/i // Sailfish Browser\n ], [[NAME, 'Sailfish Browser'], VERSION], [\n\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\n ], [[NAME, 'Dolphin'], VERSION], [\n\n /(qihu|qhbrowser|qihoobrowser|360browser)/i // 360\n ], [[NAME, '360 Browser']], [\n\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [[NAME, 'Chrome'], VERSION], [\n\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\n ], [[NAME, 'Opera Coast'], VERSION], [\n\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, 'Firefox']], [\n\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\n ], [[NAME, 'GSA'], VERSION], [\n\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\n\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n /(links)\\s\\(([\\w\\.]+)/i, // Links\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\n ], [NAME, VERSION]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, util.lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32\n ], [[ARCHITECTURE, 'ia32']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows\\s(ce|mobile);\\sppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+[;l]))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, util.lowerize]]\n ],\n\n device : [[\n\n /\\((ipad|playbook);[\\w\\s\\),;-]+(rim|apple)/i // iPad/PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n /(apple\\s{0,1}tv)/i // Apple TV\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple'], [TYPE, SMARTTV]], [\n\n /(archos)\\s(gamepad2?)/i, // Archos\n /(hp).+(touchpad)/i, // HP TouchPad\n /(hp).+(tablet)/i, // HP Tablet\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(kf[A-z]+)\\sbuild\\/.+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i // Fire Phone\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n /android.+aft([bms])\\sbuild/i // Fire TV\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\n\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i // Asus\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n // Asus Tablets\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone|p00c)/i\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\n /(sony)?(?:sgp.+)\\sbuild\\//i\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)(?=\\sbuild\\/|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /\\s(ouya)\\s/i, // Ouya\n /(nintendo)\\s([wids3u]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n /android.+;\\s(shield)\\sbuild/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n /(playstation\\s[34portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n /(sprint\\s(\\w+))/i // Sprint Phones\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\)|\\sbuild)|\\w+)/i, // HTC\n /(zte)-(\\w*)/i, // ZTE\n /(alcatel|geeksphone|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\n // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n /(nexus\\s9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n /(nexus\\s6p|vog-l29|ane-lx1|eml-l29)/i // Huawei\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n /android.+(bah2?-a?[lw]\\d{2})/i // Huawei MediaPad\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, TABLET]], [\n\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\n /mot[\\s-]?(\\w*)/i,\n /(XT\\d{3,4}) build\\//i,\n /(nexus\\s6)/i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n /((SM-T\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\n /smart-tv.+(samsung)/i\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\n /sec-((sgh\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n /sie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\n /(nokia)[\\s_-]?([\\w-]*)/i\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n /android[x\\d\\.\\s;]+\\s([ab][1-7]\\-?[0178a]\\d\\d?)/i // Acer\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n /(lg) netcast\\.tv/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nexus\\s[45])/i, // LG\n /lg[e;\\s\\/-]+(\\w*)/i,\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n /(lenovo)\\s?(s(?:5000|6000)(?:[\\w-]+)|tab(?:[\\s\\w]+))/i // Lenovo tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n /(lenovo)[_\\s-]?([\\w-]+)/i\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /linux;.+((jolla));/i // Jolla\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /crkey/i // Google Chromecast\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google'], [TYPE, SMARTTV]], [\n\n /android.+;\\s(glass)\\s\\d/i // Google Glass\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n /android.+;\\s(pixel c)[\\s)]/i // Google Pixel C\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n /android.+;\\s(pixel( [23])?( xl)?)[\\s)]/i // Google Pixel\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n /android.+;\\s(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\n /android.+(mi[\\s\\-_]*(?:a\\d|one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i, \n // Xiaomi Mi\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i // Redmi Phones\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n /(mz)-([\\w-]{2,})/i\n ], [[VENDOR, 'Meizu'], MODEL, [TYPE, MOBILE]], [\n\n /android.+a000(1)\\s+build/i, // OnePlus\n /android.+oneplus\\s(a\\d{4})[\\s)]/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n /android.+;\\s(k88)\\sbuild/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\n\n /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n /android.+;\\s(PH-1)\\s/i\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [ // Essential PH-1\n\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i // Le Pan Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i // Gigaset Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n /[\\s\\/\\(](smart-?tv)[;\\)]/i // SmartTV\n ], [[TYPE, SMARTTV]], [\n\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, 'EdgeHTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, \n // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9}).+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows based\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n // Mobile/Embedded OS\n /\\((bb)(10);/i // BlackBerry 10\n ], [[NAME, 'BlackBerry'], VERSION], [\n /(blackberry)\\w*\\/?([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/\\s]([\\w\\.]+)/i, // Tizen/KaiOS\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|sailfish|contiki)[\\/\\s-]?([\\w\\.]*)/i\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki/Sailfish OS\n ], [NAME, VERSION], [\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i // Symbian\n ], [[NAME, 'Symbian'], VERSION], [\n /\\((series40);/i // Series 40\n ], [NAME], [\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\n ], [[NAME, 'Firefox OS'], VERSION], [\n\n // Console\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\n\n // GNU/Linux based\n /(mint)[\\/\\s\\(]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu)\\s?([\\w\\.]*)/i // GNU\n ], [NAME, VERSION], [\n\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Solaris\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n\n // BSD based\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n ], [NAME, VERSION],[\n\n /(haiku)\\s(\\w+)/i // Haiku\n ], [NAME, VERSION],[\n\n /cfnetwork\\/.+darwin/i,\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Other\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms|fuchsia)/i,\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS/Fuchsia\n /(unix)\\s?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n\n /////////////////\n // Constructor\n ////////////////\n var UAParser = function (uastring, extensions) {\n\n if (typeof uastring === 'object') {\n extensions = uastring;\n uastring = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(uastring, extensions).getResult();\n }\n\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var browser = { name: undefined, version: undefined };\n mapper.rgx.call(browser, ua, rgxmap.browser);\n browser.major = util.major(browser.version); // deprecated\n return browser;\n };\n this.getCPU = function () {\n var cpu = { architecture: undefined };\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\n return cpu;\n };\n this.getDevice = function () {\n var device = { vendor: undefined, model: undefined, type: undefined };\n mapper.rgx.call(device, ua, rgxmap.device);\n return device;\n };\n this.getEngine = function () {\n var engine = { name: undefined, version: undefined };\n mapper.rgx.call(engine, ua, rgxmap.engine);\n return engine;\n };\n this.getOS = function () {\n var os = { name: undefined, version: undefined };\n mapper.rgx.call(os, ua, rgxmap.os);\n return os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return ua;\n };\n this.setUA = function (uastring) {\n ua = uastring;\n return this;\n };\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = {\n NAME : NAME,\n MAJOR : MAJOR, // deprecated\n VERSION : VERSION\n };\n UAParser.CPU = {\n ARCHITECTURE : ARCHITECTURE\n };\n UAParser.DEVICE = {\n MODEL : MODEL,\n VENDOR : VENDOR,\n TYPE : TYPE,\n CONSOLE : CONSOLE,\n MOBILE : MOBILE,\n SMARTTV : SMARTTV,\n TABLET : TABLET,\n WEARABLE: WEARABLE,\n EMBEDDED: EMBEDDED\n };\n UAParser.ENGINE = {\n NAME : NAME,\n VERSION : VERSION\n };\n UAParser.OS = {\n NAME : NAME,\n VERSION : VERSION\n };\n\n ///////////\n // Export\n //////////\n\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === 'function' && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (window) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = window && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (uastring) {\n parser.setUA(uastring);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\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 * 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\n'use strict';\n\nvar UAParser = require('ua-parser-js');\n\nvar UNKNOWN = 'Unknown';\n\nvar PLATFORM_MAP = {\n 'Mac OS': 'Mac OS X'\n};\n\n/**\n * Convert from UAParser platform name to what we expect.\n */\nfunction convertPlatformName(name) {\n return PLATFORM_MAP[name] || name;\n}\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 */\nfunction getBrowserVersion(version) {\n if (!version) {\n return {\n major: '',\n minor: ''\n };\n }\n var parts = version.split('.');\n return {\n major: parts[0],\n minor: parts[1]\n };\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 */\nvar parser = new UAParser();\nvar results = parser.getResult();\n\n// Do some conversion first.\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};\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\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/**\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 */\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/**\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 */\nfunction checkRangeExpression(range, version) {\n var expressions = range.split(rangeRegex);\n\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\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\n return checkSimpleExpression('>=' + startVersion, version) && checkSimpleExpression('<=' + endVersion, version);\n }\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 */\nfunction checkSimpleExpression(range, version) {\n range = range.trim();\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 case '<=':\n return checkLessThanOrEqual(versionComponents, rangeComponents);\n case '>=':\n return checkGreaterThanOrEqual(versionComponents, rangeComponents);\n case '>':\n return checkGreaterThan(versionComponents, rangeComponents);\n case '~':\n case '~>':\n return checkApproximateVersion(versionComponents, rangeComponents);\n default:\n return checkEqual(versionComponents, rangeComponents);\n }\n}\n\n/**\n * Checks whether `a` is less than `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\nfunction checkLessThan(a, b) {\n return compareComponents(a, b) === -1;\n}\n\n/**\n * Checks whether `a` is less than or equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\nfunction checkLessThanOrEqual(a, b) {\n var result = compareComponents(a, b);\n return result === -1 || result === 0;\n}\n\n/**\n * Checks whether `a` is equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\nfunction checkEqual(a, b) {\n return compareComponents(a, b) === 0;\n}\n\n/**\n * Checks whether `a` is greater than or equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\nfunction checkGreaterThanOrEqual(a, b) {\n var result = compareComponents(a, b);\n return result === 1 || result === 0;\n}\n\n/**\n * Checks whether `a` is greater than `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\nfunction checkGreaterThan(a, b) {\n return compareComponents(a, b) === 1;\n}\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<string>} a\n * @param {array<string>} b\n * @returns {boolean}\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 var lastIndex = upperBound.length - 1;\n var numeric = parseInt(upperBound[lastIndex], 10);\n if (isNumber(numeric)) {\n upperBound[lastIndex] = numeric + 1 + '';\n }\n\n return checkGreaterThanOrEqual(a, lowerBound) && checkLessThan(a, upperBound);\n}\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 */\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\n return {\n modifier: matches[1],\n rangeComponents: [matches[2]].concat(rangeComponents.slice(1))\n };\n}\n\n/**\n * Determines if `number` is a number.\n *\n * @param {mixed} number\n * @returns {boolean}\n */\nfunction isNumber(number) {\n return !isNaN(number) && isFinite(number);\n}\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 */\nfunction isSimpleVersion(range) {\n return !getModifierAndComponents(range).modifier;\n}\n\n/**\n * Zero-pads array `array` until it is at least `length` long.\n *\n * @param {array} array\n * @param {number} length\n */\nfunction zeroPad(array, length) {\n for (var i = array.length; i < length; i++) {\n array[i] = '0';\n }\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<string>} a\n * @param {array<string>} b\n * @returns {array<array<string>>}\n */\nfunction normalizeVersions(a, b) {\n a = a.slice();\n b = b.slice();\n\n zeroPad(a, b.length);\n\n // mark \"x\" and \"*\" components as equal\n for (var i = 0; i < b.length; i++) {\n var matches = b[i].match(/^[x*]$/i);\n if (matches) {\n b[i] = a[i] = '0';\n\n // final \"*\" greedily zeros all remaining components\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\n return [a, b];\n}\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 */\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/**\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 */\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/**\n * Compares arrays of version components.\n *\n * @param {array<string>} a\n * @param {array<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 */\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 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 * <version Must be less than version\n * <=version Must be less than or equal to version\n * ~version Must be at least version, but less than the next significant\n * revision above version:\n * \"~1.2.3\" is equivalent to \">= 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};\n\nmodule.exports = VersionRange;","/**\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 hasOwnProperty = Object.prototype.hasOwnProperty;\n\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 */\nfunction mapObject(object, callback, context) {\n if (!object) {\n return null;\n }\n var result = {};\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 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\n'use strict';\n\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 return cache[string];\n };\n}\n\nmodule.exports = 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'use strict';\n\nvar UserAgentData = require('./UserAgentData');\nvar VersionRange = require('./VersionRange');\n\nvar mapObject = require('./mapObject');\nvar memoizeStringOnly = require('./memoizeStringOnly');\n\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 */\nfunction compare(name, version, query, normalizer) {\n // check for exact match with no version\n if (name === query) {\n return true;\n }\n\n // check for non-matching names\n if (!query.startsWith(name)) {\n return false;\n }\n\n // full comparison with version\n var range = query.slice(name.length);\n if (version) {\n range = normalizer ? normalizer(range) : range;\n return VersionRange.contains(range, version);\n }\n\n return false;\n}\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 */\nfunction normalizePlatformVersion(version) {\n if (UserAgentData.platformName === 'Windows') {\n return version.replace(/^\\s*NT/, '');\n }\n\n return version;\n}\n\n/**\n * Provides client-side access to the authoritative PHP-generated User Agent\n * information supplied by the server.\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 /**\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 /**\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 /**\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 /**\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 /**\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};\n\nmodule.exports = mapObject(UserAgent, memoizeStringOnly);","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftEditorTextNode.react\n * @format\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar UserAgent = require('fbjs/lib/UserAgent');\n\nvar invariant = require('fbjs/lib/invariant');\n\n// In IE, spans with <br> tags render as two newlines. By rendering a span\n// with only a newline character, we can be sure to render a single line.\nvar useNewlineChar = UserAgent.isBrowser('IE <= 11');\n\n/**\n * Check whether the node should be considered a newline.\n */\nfunction isNewline(node) {\n return useNewlineChar ? node.textContent === '\\n' : node.tagName === 'BR';\n}\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 <span> is naked, Chrome and Safari may do\n * bizarre things to do the DOM -- split text nodes, create extra spans, etc.\n * If the <span> 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 */\nvar NEWLINE_A = useNewlineChar ? React.createElement(\n 'span',\n { key: 'A', 'data-text': 'true' },\n '\\n'\n) : React.createElement('br', { key: 'A', 'data-text': 'true' });\n\nvar NEWLINE_B = useNewlineChar ? React.createElement(\n 'span',\n { key: 'B', 'data-text': 'true' },\n '\\n'\n) : React.createElement('br', { key: 'B', 'data-text': 'true' });\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 = function (_React$Component) {\n _inherits(DraftEditorTextNode, _React$Component);\n\n function DraftEditorTextNode(props) {\n _classCallCheck(this, DraftEditorTextNode);\n\n // By flipping this flag, we also keep flipping keys which forces\n // React to remount this node every time it rerenders.\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _this._forceFlag = false;\n return _this;\n }\n\n DraftEditorTextNode.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var node = ReactDOM.findDOMNode(this);\n var shouldBeNewline = nextProps.children === '';\n !(node instanceof Element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'node is not an Element') : invariant(false) : void 0;\n if (shouldBeNewline) {\n return !isNewline(node);\n }\n return node.textContent !== nextProps.children;\n };\n\n DraftEditorTextNode.prototype.componentDidMount = function componentDidMount() {\n this._forceFlag = !this._forceFlag;\n };\n\n DraftEditorTextNode.prototype.componentDidUpdate = function componentDidUpdate() {\n this._forceFlag = !this._forceFlag;\n };\n\n DraftEditorTextNode.prototype.render = function render() {\n if (this.props.children === '') {\n return this._forceFlag ? NEWLINE_A : NEWLINE_B;\n }\n return React.createElement(\n 'span',\n { key: this._forceFlag ? 'A' : 'B', 'data-text': 'true' },\n this.props.children\n );\n };\n\n return DraftEditorTextNode;\n}(React.Component);\n\nmodule.exports = DraftEditorTextNode;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftJsDebugLogging\n */\n\n'use strict';\n\nmodule.exports = {\n logSelectionStateFailure: function logSelectionStateFailure() {\n return null;\n }\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 * @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 */\n\nvar isNode = require('./isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;","'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\nvar isTextNode = require('./isTextNode');\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\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 */\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) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\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 * 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 * @providesModule setDraftEditorSelection\n * @format\n * \n */\n\n'use strict';\n\nvar DraftJsDebugLogging = require('./DraftJsDebugLogging');\n\nvar containsNode = require('fbjs/lib/containsNode');\nvar getActiveElement = require('fbjs/lib/getActiveElement');\nvar invariant = require('fbjs/lib/invariant');\n\nfunction getAnonymizedDOM(node, getNodeLabels) {\n if (!node) {\n return '[empty]';\n }\n\n var anonymized = anonymizeTextWithin(node, getNodeLabels);\n if (anonymized.nodeType === Node.TEXT_NODE) {\n return anonymized.textContent;\n }\n\n !(anonymized instanceof Element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Node must be an Element if it is not a text node.') : invariant(false) : void 0;\n return anonymized.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 document.createTextNode('[text ' + length + (labels.length ? ' | ' + labels.join(', ') : '') + ']');\n }\n\n var clone = node.cloneNode();\n if (clone.nodeType === 1 && labels.length) {\n clone.setAttribute('data-labels', labels.join(', '));\n }\n var childNodes = node.childNodes;\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;\n while (currentNode) {\n if (currentNode instanceof Element && currentNode.hasAttribute('contenteditable')) {\n // found the Draft editor container\n return getAnonymizedDOM(currentNode, getNodeLabels);\n } else {\n currentNode = currentNode.parentNode;\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/**\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 */\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 if (!containsNode(document.documentElement, node)) {\n return;\n }\n\n var selection = global.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();\n\n // IE doesn't support backward selection. Swap key/offset pairs.\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\n var hasFocus = focusKey === blockKey && nodeStart <= focusOffset && nodeEnd >= focusOffset;\n\n // If the selection is entirely bound within this node, set the selection\n // and be done.\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 }\n\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 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 }\n\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 if (hasAnchor) {\n var storedFocusNode = selection.focusNode;\n var storedFocusOffset = selection.focusOffset;\n\n selection.removeAllRanges();\n addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n addFocusToSelection(selection, storedFocusNode, storedFocusOffset, selectionState);\n }\n }\n}\n\n/**\n * Extend selection towards focus point.\n */\nfunction addFocusToSelection(selection, node, offset, selectionState) {\n var activeElement = getActiveElement();\n if (selection.extend && 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\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({ offset: offset }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n }\n\n // logging to catch bug that is being reported in t18110632\n var nodeWasFocus = node === selection.focusNode;\n try {\n selection.extend(node, offset);\n } catch (e) {\n DraftJsDebugLogging.logSelectionStateFailure({\n anonymizedDom: getAnonymizedEditorDOM(node, function (n) {\n var labels = [];\n if (n === activeElement) {\n labels.push('active element');\n }\n if (n === selection.anchorNode) {\n labels.push('selection anchor node');\n }\n if (n === selection.focusNode) {\n labels.push('selection focus node');\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 });\n // allow the error to be thrown -\n // better than continuing in a broken state\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 var range = selection.getRangeAt(0);\n range.setEnd(node, offset);\n selection.addRange(range.cloneRange());\n }\n}\n\nfunction addPointToSelection(selection, node, offset, selectionState) {\n var range = document.createRange();\n // logging to catch bug that is being reported in t16250795\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({ offset: offset }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n }\n range.setStart(node, offset);\n selection.addRange(range);\n}\n\nmodule.exports = setDraftEditorSelection;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftEditorLeaf.react\n * @format\n * \n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DraftEditorTextNode = require('./DraftEditorTextNode.react');\nvar React = require('react');\nvar ReactDOM = require('react-dom');\n\nvar invariant = require('fbjs/lib/invariant');\nvar setDraftEditorSelection = require('./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 = function (_React$Component) {\n _inherits(DraftEditorLeaf, _React$Component);\n\n function DraftEditorLeaf() {\n _classCallCheck(this, DraftEditorLeaf);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n DraftEditorLeaf.prototype._setSelection = function _setSelection() {\n var selection = this.props.selection;\n\n // If selection state is irrelevant to the parent block, no-op.\n\n if (selection == null || !selection.getHasFocus()) {\n return;\n }\n\n var _props = this.props,\n block = _props.block,\n start = _props.start,\n text = _props.text;\n\n var blockKey = block.getKey();\n var end = start + text.length;\n if (!selection.hasEdgeWithin(blockKey, start, end)) {\n return;\n }\n\n // Determine the appropriate target node for selection. If the child\n // is not a text node, it is a <br /> spacer. In this case, use the\n // <span> itself as the selection target.\n var node = ReactDOM.findDOMNode(this);\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 = void 0;\n\n if (child.nodeType === Node.TEXT_NODE) {\n targetNode = child;\n } else if (child.tagName === 'BR') {\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 * By making individual leaf instances aware of their context within\n * the text of the editor, we can set our selection range more\n * easily than we could in the non-React world.\n *\n * Note that this depends on our maintaining tight control over the\n * DOM structure of the DraftEditor component. If leaves had multiple\n * text nodes, this would be harder.\n */\n\n DraftEditorLeaf.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var leafNode = ReactDOM.findDOMNode(this.leaf);\n !leafNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing leafNode') : invariant(false) : void 0;\n return leafNode.textContent !== nextProps.text || nextProps.styleSet !== this.props.styleSet || nextProps.forceSelection;\n };\n\n DraftEditorLeaf.prototype.componentDidUpdate = function componentDidUpdate() {\n this._setSelection();\n };\n\n DraftEditorLeaf.prototype.componentDidMount = function componentDidMount() {\n this._setSelection();\n };\n\n DraftEditorLeaf.prototype.render = function render() {\n var _this2 = this;\n\n var block = this.props.block;\n var text = this.props.text;\n\n // 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 _props2 = this.props,\n customStyleMap = _props2.customStyleMap,\n customStyleFn = _props2.customStyleFn,\n offsetKey = _props2.offsetKey,\n styleSet = _props2.styleSet;\n\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(\n 'span',\n {\n 'data-offset-key': offsetKey,\n ref: function ref(_ref) {\n return _this2.leaf = _ref;\n },\n style: styleObj },\n React.createElement(\n DraftEditorTextNode,\n null,\n text\n )\n );\n };\n\n return DraftEditorLeaf;\n}(React.Component);\n\nmodule.exports = DraftEditorLeaf;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftOffsetKey\n * @format\n * \n */\n\n'use strict';\n\nvar KEY_DELIMITER = '-';\n\nvar DraftOffsetKey = {\n encode: function encode(blockKey, decoratorKey, leafKey) {\n return blockKey + KEY_DELIMITER + decoratorKey + KEY_DELIMITER + leafKey;\n },\n\n decode: function decode(offsetKey) {\n var _offsetKey$split = offsetKey.split(KEY_DELIMITER),\n blockKey = _offsetKey$split[0],\n decoratorKey = _offsetKey$split[1],\n leafKey = _offsetKey$split[2];\n\n return {\n blockKey: blockKey,\n decoratorKey: parseInt(decoratorKey, 10),\n leafKey: parseInt(leafKey, 10)\n };\n }\n};\n\nmodule.exports = DraftOffsetKey;","\"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/**\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\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) ?\n // 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 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 if (_isViewportScrollElement(element, doc)) {\n doc.body.scrollLeft = doc.documentElement.scrollLeft = newLeft;\n } else {\n element.scrollLeft = newLeft;\n }\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 */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\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 * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\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 */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;","'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\nvar camelize = require('./camelize');\nvar hyphenate = require('./hyphenate');\n\nfunction asString(value) /*?string*/{\n return value == null ? value : String(value);\n}\n\nfunction getStyleProperty( /*DOMNode*/node, /*string*/name) /*?string*/{\n var computedStyle = void 0;\n\n // W3C Standard\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 if (computedStyle) {\n return asString(computedStyle.getPropertyValue(hyphenate(name)));\n }\n }\n // Safari\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(node, null);\n // A Safari bug causes this to return null for `display: none` elements.\n if (computedStyle) {\n return asString(computedStyle.getPropertyValue(hyphenate(name)));\n }\n if (name === 'display') {\n return 'none';\n }\n }\n // Internet Explorer\n if (node.currentStyle) {\n if (name === 'float') {\n return asString(node.currentStyle.cssFloat || node.currentStyle.styleFloat);\n }\n return asString(node.currentStyle[camelize(name)]);\n }\n return asString(node.style && node.style[camelize(name)]);\n}\n\nmodule.exports = getStyleProperty;","'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\nvar getStyleProperty = require('./getStyleProperty');\n\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 */\nfunction _isNodeScrollable(element, name) {\n var overflow = Style.get(element, name);\n return overflow === 'auto' || overflow === 'scroll';\n}\n\n/**\n * Utilities for querying and mutating style properties.\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 var ownerDocument = node.ownerDocument;\n while (node && node !== ownerDocument.body) {\n if (_isNodeScrollable(node, 'overflow') || _isNodeScrollable(node, 'overflowY') || _isNodeScrollable(node, 'overflowX')) {\n return node;\n }\n node = node.parentNode;\n }\n return ownerDocument.defaultView || ownerDocument.parentWindow;\n }\n\n};\n\nmodule.exports = Style;","'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\nvar containsNode = require('./containsNode');\n\n/**\n * Gets an element's bounding rect in pixels relative to the viewport.\n *\n * @param {DOMElement} elem\n * @return {object}\n */\nfunction getElementRect(elem) {\n var docElem = elem.ownerDocument.documentElement;\n\n // 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 if (!('getBoundingClientRect' in elem) || !containsNode(docElem, elem)) {\n return {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n }\n\n // Subtracts clientTop/Left because IE8- added a 2px border to the\n // <html> 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 var rect = elem.getBoundingClientRect();\n\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;","'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\nvar getElementRect = require('./getElementRect');\n\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 */\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;","/**\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'use strict';\n\nvar isWebkit = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('AppleWebKit') > -1;\n\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 */\nfunction getDocumentScrollElement(doc) {\n doc = doc || document;\n if (doc.scrollingElement) {\n return doc.scrollingElement;\n }\n return !isWebkit && doc.compatMode === 'CSS1Compat' ? doc.documentElement : doc.body;\n}\n\nmodule.exports = getDocumentScrollElement;","/**\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'use strict';\n\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 return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;","/**\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'use strict';\n\nvar getDocumentScrollElement = require('./getDocumentScrollElement');\nvar getUnboundedScrollPosition = require('./getUnboundedScrollPosition');\n\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 */\nfunction getScrollPosition(scrollable) {\n var documentScrollElement = getDocumentScrollElement(scrollable.ownerDocument || scrollable.document);\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n scrollable = documentScrollElement;\n }\n var scrollPosition = getUnboundedScrollPosition(scrollable);\n\n var viewport = scrollable === documentScrollElement ? scrollable.ownerDocument.documentElement : scrollable;\n\n var xMax = scrollable.scrollWidth - viewport.clientWidth;\n var yMax = scrollable.scrollHeight - viewport.clientHeight;\n\n scrollPosition.x = Math.max(0, Math.min(scrollPosition.x, xMax));\n scrollPosition.y = Math.max(0, Math.min(scrollPosition.y, yMax));\n\n return scrollPosition;\n}\n\nmodule.exports = getScrollPosition;","\"use strict\";\n\nfunction getViewportWidth() {\n var width = void 0;\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 * 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 */\n\nfunction getViewportHeight() {\n var height = void 0;\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/**\n * Gets the viewport dimensions including any scrollbars.\n */\nfunction getViewportDimensions() {\n return {\n width: window.innerWidth || getViewportWidth(),\n height: window.innerHeight || getViewportHeight()\n };\n}\n\n/**\n * Gets the viewport dimensions excluding any scrollbars.\n */\ngetViewportDimensions.withoutScrollbars = function () {\n return {\n width: getViewportWidth(),\n height: getViewportHeight()\n };\n};\n\nmodule.exports = getViewportDimensions;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftEditorBlock.react\n * @format\n * \n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar _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; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DraftEditorLeaf = require('./DraftEditorLeaf.react');\nvar DraftOffsetKey = require('./DraftOffsetKey');\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar Scroll = require('fbjs/lib/Scroll');\nvar Style = require('fbjs/lib/Style');\nvar UnicodeBidi = require('fbjs/lib/UnicodeBidi');\nvar UnicodeBidiDirection = require('fbjs/lib/UnicodeBidiDirection');\n\nvar cx = require('fbjs/lib/cx');\nvar getElementPosition = require('fbjs/lib/getElementPosition');\nvar getScrollPosition = require('fbjs/lib/getScrollPosition');\nvar getViewportDimensions = require('fbjs/lib/getViewportDimensions');\nvar invariant = require('fbjs/lib/invariant');\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/**\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\nvar DraftEditorBlock = function (_React$Component) {\n _inherits(DraftEditorBlock, _React$Component);\n\n function DraftEditorBlock() {\n _classCallCheck(this, DraftEditorBlock);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n DraftEditorBlock.prototype.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 /**\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 DraftEditorBlock.prototype.componentDidMount = function componentDidMount() {\n var selection = this.props.selection;\n var endKey = selection.getEndKey();\n if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n return;\n }\n\n var blockNode = ReactDOM.findDOMNode(this);\n var scrollParent = Style.getScrollParent(blockNode);\n var scrollPosition = getScrollPosition(scrollParent);\n var scrollDelta = void 0;\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 if (scrollDelta > 0) {\n window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n }\n } else {\n !(blockNode instanceof HTMLElement) ? 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 scrollBottom = scrollParent.offsetHeight + scrollPosition.y;\n scrollDelta = blockBottom - scrollBottom;\n if (scrollDelta > 0) {\n Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n }\n }\n };\n\n DraftEditorBlock.prototype._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\n return this.props.tree.map(function (leafSet, ii) {\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 ? _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\n var decoratorKey = leafSet.get('decoratorKey');\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\n var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n if (!DecoratorComponent) {\n return leaves;\n }\n\n var decoratorProps = decorator.getPropsForKey(decoratorKey);\n var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, ii, 0);\n var decoratedText = text.slice(leavesForLeafSet.first().get('start'), leavesForLeafSet.last().get('end'));\n\n // 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 var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), _this2.props.direction);\n\n return React.createElement(\n DecoratorComponent,\n _extends({}, decoratorProps, {\n contentState: _this2.props.contentState,\n decoratedText: decoratedText,\n dir: dir,\n key: decoratorOffsetKey,\n entityKey: block.getEntityAt(leafSet.get('start')),\n offsetKey: decoratorOffsetKey }),\n leaves\n );\n }).toArray();\n };\n\n DraftEditorBlock.prototype.render = function render() {\n var _props = this.props,\n direction = _props.direction,\n offsetKey = _props.offsetKey;\n\n var className = cx({\n 'public/DraftStyleDefault/block': true,\n 'public/DraftStyleDefault/ltr': direction === 'LTR',\n 'public/DraftStyleDefault/rtl': direction === 'RTL'\n });\n\n return React.createElement(\n 'div',\n { 'data-offset-key': offsetKey, className: className },\n this._renderChildren()\n );\n };\n\n return DraftEditorBlock;\n}(React.Component);\n\nmodule.exports = DraftEditorBlock;","/**\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 static-only\n */\n\n'use strict';\n\n/**\n * Combines multiple className strings into one.\n * http://jsperf.com/joinclasses-args-vs-array\n *\n * @param {...?string} className\n * @return {string}\n */\n\nfunction joinClasses(className /*, ... */) {\n if (!className) {\n className = '';\n }\n var nextClass = void 0;\n var argLength = arguments.length;\n if (argLength > 1) {\n for (var ii = 1; ii < argLength; ii++) {\n nextClass = arguments[ii];\n if (nextClass) {\n className = (className ? className + ' ' : '') + nextClass;\n }\n }\n }\n return className;\n}\n\nmodule.exports = joinClasses;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftEditorContents-core.react\n * @format\n * \n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar _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; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DraftEditorBlock = require('./DraftEditorBlock.react');\nvar DraftOffsetKey = require('./DraftOffsetKey');\nvar EditorState = require('./EditorState');\nvar React = require('react');\n\nvar cx = require('fbjs/lib/cx');\nvar joinClasses = require('fbjs/lib/joinClasses');\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/**\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\nvar DraftEditorContents = function (_React$Component) {\n _inherits(DraftEditorContents, _React$Component);\n\n function DraftEditorContents() {\n _classCallCheck(this, DraftEditorContents);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n DraftEditorContents.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var prevEditorState = this.props.editorState;\n var nextEditorState = nextProps.editorState;\n\n var prevDirectionMap = prevEditorState.getDirectionMap();\n var nextDirectionMap = nextEditorState.getDirectionMap();\n\n // Text direction has changed for one or more blocks. We must re-render.\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\n var wasComposing = prevEditorState.isInCompositionMode();\n var nowComposing = nextEditorState.isInCompositionMode();\n\n // If the state is unchanged or we're currently rendering a natively\n // rendered state, there's nothing new to be done.\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 DraftEditorContents.prototype.render = function render() {\n var _props = this.props,\n blockRenderMap = _props.blockRenderMap,\n blockRendererFn = _props.blockRendererFn,\n blockStyleFn = _props.blockStyleFn,\n customStyleMap = _props.customStyleMap,\n customStyleFn = _props.customStyleFn,\n editorState = _props.editorState,\n editorKey = _props.editorKey,\n textDirectionality = _props.textDirectionality;\n\n\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\n var blocksAsArray = content.getBlocksAsArray();\n var processedBlocks = [];\n\n var currentDepth = null;\n var lastWrapperTemplate = null;\n\n for (var ii = 0; ii < blocksAsArray.length; ii++) {\n var _block = blocksAsArray[ii];\n var key = _block.getKey();\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 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 key: key,\n offsetKey: offsetKey,\n selection: selection,\n tree: editorState.getBlockTree(key)\n };\n\n var configForType = blockRenderMap.get(blockType) || blockRenderMap.get('unstyled');\n var wrapperTemplate = configForType.wrapper;\n\n var Element = configForType.element || blockRenderMap.get('unstyled').element;\n\n var depth = _block.getDepth();\n var className = '';\n if (blockStyleFn) {\n className = blockStyleFn(_block);\n }\n\n // List items are special snowflakes, since we handle nesting and\n // counters manually.\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 if (customEditable !== undefined) {\n childProps = _extends({}, childProps, {\n contentEditable: customEditable,\n suppressContentEditableWarning: true\n });\n }\n\n var child = React.createElement(Element, childProps, React.createElement(Component, componentProps));\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 lastWrapperTemplate = wrapperTemplate;\n }\n\n // Group contiguous runs of blocks that have the same wrapperTemplate\n var outputBlocks = [];\n for (var _ii = 0; _ii < processedBlocks.length;) {\n var info = processedBlocks[_ii];\n if (info.wrapperTemplate) {\n var blocks = [];\n do {\n blocks.push(processedBlocks[_ii].block);\n _ii++;\n } while (_ii < processedBlocks.length && processedBlocks[_ii].wrapperTemplate === info.wrapperTemplate);\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(\n 'div',\n { 'data-contents': 'true' },\n outputBlocks\n );\n };\n\n return DraftEditorContents;\n}(React.Component);\n\nmodule.exports = DraftEditorContents;","/**\n * Copyright 2013-present, 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 * @providesModule DraftEditorContents.react\n * @format\n * \n */\n\n'use strict';\n\nvar DraftEditorContents = require('./DraftEditorContents-core.react');\n\nmodule.exports = DraftEditorContents;","'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) && (\n // 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 * @typechecks\n */\n\nvar invariant = require('./invariant');\n\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 */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\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\n !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\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\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;\n\n // 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 if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\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 var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\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 */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // 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' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\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 */\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\nvar PhotosMimeType = require('./PhotosMimeType');\n\nvar createArrayFromMixed = require('./createArrayFromMixed');\nvar emptyFunction = require('./emptyFunction');\n\nvar CR_LF_REGEX = new RegExp('\\r\\n', 'g');\nvar LF_ONLY = '\\n';\n\nvar RICH_TEXT_TYPES = {\n 'text/rtf': 1,\n 'text/html': 1\n};\n\n/**\n * If DataTransferItem is a file then return the Blob of data.\n *\n * @param {object} item\n * @return {?blob}\n */\nfunction getFileFromDataTransfer(item) {\n if (item.kind == 'file') {\n return item.getAsFile();\n }\n}\n\nvar DataTransfer = function () {\n /**\n * @param {object} data\n */\n function DataTransfer(data) {\n _classCallCheck(this, DataTransfer);\n\n this.data = data;\n\n // Types could be DOMStringList or array\n this.types = data.types ? createArrayFromMixed(data.types) : [];\n }\n\n /**\n * Is this likely to be a rich text data transfer?\n *\n * @return {boolean}\n */\n\n\n DataTransfer.prototype.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 }\n\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 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 /**\n * Get raw text.\n *\n * @return {?string}\n */\n\n\n DataTransfer.prototype.getText = function getText() {\n var text;\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 return text ? text.replace(CR_LF_REGEX, LF_ONLY) : null;\n };\n\n /**\n * Get HTML paste data\n *\n * @return {?string}\n */\n\n\n DataTransfer.prototype.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 /**\n * Is this a link data transfer?\n *\n * @return {boolean}\n */\n\n\n DataTransfer.prototype.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 /**\n * Get a link url.\n *\n * @return {?string}\n */\n\n\n DataTransfer.prototype.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 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 /**\n * Is this an image data transfer?\n *\n * @return {boolean}\n */\n\n\n DataTransfer.prototype.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 for (var i = 0; i < items.length; i++) {\n var type = items[i].type;\n if (!PhotosMimeType.isImage(type)) {\n return false;\n }\n }\n\n return true;\n };\n\n DataTransfer.prototype.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 return null;\n };\n\n /**\n * Get files.\n *\n * @return {array}\n */\n\n\n DataTransfer.prototype.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 /**\n * Are there any files to fetch?\n *\n * @return {boolean}\n */\n\n\n DataTransfer.prototype.hasFiles = function hasFiles() {\n return this.getFiles().length > 0;\n };\n\n return DataTransfer;\n}();\n\nmodule.exports = DataTransfer;","/**\n * Copyright (c) 2013-present, 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 * @providesModule getSelectionOffsetKeyForNode\n * @format\n * \n */\n\n'use strict';\n\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\nfunction getSelectionOffsetKeyForNode(node) {\n if (node instanceof Element) {\n var offsetKey = node.getAttribute('data-offset-key');\n if (offsetKey) {\n return offsetKey;\n }\n for (var ii = 0; ii < node.childNodes.length; ii++) {\n var childOffsetKey = getSelectionOffsetKeyForNode(node.childNodes[ii]);\n if (childOffsetKey) {\n return childOffsetKey;\n }\n }\n }\n return null;\n}\n\nmodule.exports = getSelectionOffsetKeyForNode;","/**\n * Copyright (c) 2013-present, 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 * @providesModule findAncestorOffsetKey\n * @format\n * \n */\n\n'use strict';\n\nvar getSelectionOffsetKeyForNode = require('./getSelectionOffsetKeyForNode');\n\n/**\n * Get the key from the node's nearest offset-aware ancestor.\n */\nfunction findAncestorOffsetKey(node) {\n var searchNode = node;\n while (searchNode && searchNode !== document.documentElement) {\n var key = getSelectionOffsetKeyForNode(searchNode);\n if (key != null) {\n return key;\n }\n searchNode = searchNode.parentNode;\n }\n return null;\n}\n\nmodule.exports = findAncestorOffsetKey;","/**\n * Copyright (c) 2013-present, 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 * @providesModule getTextContentFromFiles\n * @format\n * \n */\n\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar TEXT_CLIPPING_REGEX = /\\.textClipping$/;\n\nvar TEXT_TYPES = {\n 'text/plain': true,\n 'text/html': true,\n 'text/rtf': true\n};\n\n// Somewhat arbitrary upper bound on text size. Let's not lock up the browser.\nvar TEXT_SIZE_UPPER_BOUND = 5000;\n\n/**\n * Extract the text content from a file list.\n */\nfunction getTextContentFromFiles(files, callback) {\n var readCount = 0;\n var results = [];\n files.forEach(function ( /*blob*/file) {\n readFile(file, function ( /*string*/text) {\n readCount++;\n text && results.push(text.slice(0, TEXT_SIZE_UPPER_BOUND));\n if (readCount == files.length) {\n callback(results.join('\\r'));\n }\n });\n });\n}\n\n/**\n * todo isaac: Do work to turn html/rtf into a content fragment.\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 = '';\n // 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 if (TEXT_CLIPPING_REGEX.test(file.name)) {\n contents = file.name.replace(TEXT_CLIPPING_REGEX, '');\n }\n callback(contents);\n return;\n }\n\n var reader = new FileReader();\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 reader.onerror = function () {\n callback('');\n };\n reader.readAsText(file);\n}\n\nmodule.exports = getTextContentFromFiles;","/**\n * Copyright (c) 2013-present, 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 * @providesModule getUpdatedSelectionState\n * @format\n * \n */\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 if (process.env.NODE_ENV !== 'production') {\n if (!anchorKey || !focusKey) {\n /*eslint-disable no-console */\n console.warn('Invalid selection state.', arguments, editorState.toJS());\n /*eslint-enable no-console */\n return selection;\n }\n }\n\n var anchorPath = DraftOffsetKey.decode(anchorKey);\n var anchorBlockKey = anchorPath.blockKey;\n var anchorLeaf = editorState.getBlockTree(anchorBlockKey).getIn([anchorPath.decoratorKey, 'leaves', anchorPath.leafKey]);\n\n var focusPath = DraftOffsetKey.decode(focusKey);\n var focusBlockKey = focusPath.blockKey;\n var focusLeaf = editorState.getBlockTree(focusBlockKey).getIn([focusPath.decoratorKey, 'leaves', focusPath.leafKey]);\n\n var anchorLeafStart = anchorLeaf.get('start');\n var focusLeafStart = focusLeaf.get('start');\n\n var anchorBlockOffset = anchorLeaf ? anchorLeafStart + anchorOffset : null;\n var focusBlockOffset = focusLeaf ? focusLeafStart + focusOffset : null;\n\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 if (anchorBlockKey === focusBlockKey) {\n var anchorLeafEnd = anchorLeaf.get('end');\n var focusLeafEnd = focusLeaf.get('end');\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) 2013-present, 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 * @providesModule DraftEditorDragHandler\n * @format\n * \n */\n\n'use strict';\n\nvar DataTransfer = require('fbjs/lib/DataTransfer');\nvar DraftModifier = require('./DraftModifier');\nvar EditorState = require('./EditorState');\n\nvar findAncestorOffsetKey = require('./findAncestorOffsetKey');\nvar getTextContentFromFiles = require('./getTextContentFromFiles');\nvar getUpdatedSelectionState = require('./getUpdatedSelectionState');\nvar isEventHandled = require('./isEventHandled');\nvar nullthrows = require('fbjs/lib/nullthrows');\n\n/**\n * Get a SelectionState for the supplied mouse event.\n */\nfunction getSelectionForEvent(event, editorState) {\n var node = null;\n var offset = null;\n\n if (typeof document.caretRangeFromPoint === 'function') {\n var dropRange = document.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\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 },\n\n /**\n * Handle data being dropped.\n */\n onDrop: function onDrop(editor, e) {\n var data = new DataTransfer(e.nativeEvent.dataTransfer);\n\n var editorState = editor._latestEditorState;\n var dropSelection = getSelectionForEvent(e.nativeEvent, editorState);\n\n e.preventDefault();\n editor.exitCurrentMode();\n\n if (dropSelection == null) {\n return;\n }\n\n var files = data.getFiles();\n if (files.length > 0) {\n if (editor.props.handleDroppedFiles && isEventHandled(editor.props.handleDroppedFiles(dropSelection, files))) {\n return;\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 if (editor.props.handleDrop && isEventHandled(editor.props.handleDrop(dropSelection, data, dragType))) {\n return;\n }\n\n if (editor._internalDrag) {\n editor.update(moveText(editorState, dropSelection));\n return;\n }\n\n editor.update(insertTextAtSelection(editorState, dropSelection, data.getText()));\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/**\n * Insert text at a specified selection.\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;","(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 <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\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\n// setimmediate adds setImmediate to the global. We want to make sure we export\n// the actual function.\n\nrequire('setimmediate');\nmodule.exports = global.setImmediate;","/**\n * Copyright (c) 2013-present, 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 * @providesModule editOnBeforeInput\n * @format\n * \n */\n\n'use strict';\n\nvar BlockTree = require('./BlockTree');\nvar DraftModifier = require('./DraftModifier');\nvar EditorState = require('./EditorState');\nvar UserAgent = require('fbjs/lib/UserAgent');\n\nvar getEntityKeyForSelection = require('./getEntityKeyForSelection');\nvar isEventHandled = require('./isEventHandled');\nvar isSelectionAtLeafStart = require('./isSelectionAtLeafStart');\nvar nullthrows = require('fbjs/lib/nullthrows');\nvar setImmediate = require('fbjs/lib/setImmediate');\n\n// 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.\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/**\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 */\nfunction replaceText(editorState, text, inlineStyle, entityKey) {\n var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), text, inlineStyle, entityKey);\n return EditorState.push(editorState, contentState, 'insert-characters');\n}\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 */\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\n var chars = e.data;\n\n // In some cases (ex: IE ideographic space insertion) no character data\n // is provided. There's nothing to do when this happens.\n if (!chars) {\n return;\n }\n\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 if (editor.props.handleBeforeInput && isEventHandled(editor.props.handleBeforeInput(chars, editorState))) {\n e.preventDefault();\n return;\n }\n\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 var selection = editorState.getSelection();\n var selectionStart = selection.getStartOffset();\n var selectionEnd = selection.getEndOffset();\n var anchorKey = selection.getAnchorKey();\n\n if (!selection.isCollapsed()) {\n e.preventDefault();\n\n // If the currently selected text matches what the user is trying to\n // replace it with, let's just update the `SelectionState`. If not, update\n // the `ContentState` with the new text.\n var currentlySelectedChars = editorState.getCurrentContent().getPlainText().slice(selectionStart, selectionEnd);\n if (chars === currentlySelectedChars) {\n editor.update(EditorState.forceSelection(editorState, selection.merge({\n focusOffset: selectionEnd\n })));\n } else {\n editor.update(replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection())));\n }\n return;\n }\n\n var newEditorState = replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection()));\n\n // Bunch of different cases follow where we need to prevent native insertion.\n var mustPreventNative = false;\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 if (!mustPreventNative) {\n // Chrome will also split up a node into two pieces if it contains a Tab\n // char, for no explicable reason. Seemingly caused by this commit:\n // https://chromium.googlesource.com/chromium/src/+/013ac5eaf3%5E%21/\n var nativeSelection = global.getSelection();\n // Selection is necessarily collapsed at this point due to earlier check.\n if (nativeSelection.anchorNode && nativeSelection.anchorNode.nodeType === Node.TEXT_NODE) {\n // See isTabHTMLSpanElement in chromium EditingUtilities.cpp.\n var parentNode = nativeSelection.anchorNode.parentNode;\n mustPreventNative = parentNode.nodeName === 'SPAN' && parentNode.firstChild.nodeType === Node.TEXT_NODE && parentNode.firstChild.nodeValue.indexOf('\\t') !== -1;\n }\n }\n if (!mustPreventNative) {\n // Check the old and new \"fingerprints\" of the current block to determine\n // whether this insertion requires any addition or removal of text nodes,\n // in which case we would prevent the native character insertion.\n var originalFingerprint = BlockTree.getFingerprint(editorState.getBlockTree(anchorKey));\n var newFingerprint = BlockTree.getFingerprint(newEditorState.getBlockTree(anchorKey));\n mustPreventNative = originalFingerprint !== newFingerprint;\n }\n if (!mustPreventNative) {\n mustPreventNative = mustPreventDefaultForCharacter(chars);\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 editor.update(newEditorState);\n return;\n }\n\n // We made it all the way! Let the browser do its thing and insert the char.\n newEditorState = EditorState.set(newEditorState, {\n nativelyRenderedContent: newEditorState.getCurrentContent()\n });\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 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) 2013-present, 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 * @providesModule editOnBlur\n * @format\n * \n */\n\n'use strict';\n\nvar EditorState = require('./EditorState');\n\nvar containsNode = require('fbjs/lib/containsNode');\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 if (getActiveElement() === document.body) {\n var _selection = global.getSelection();\n var editorNode = editor.editor;\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 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) 2013-present, 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 * @providesModule editOnCompositionStart\n * @format\n * \n */\n\n'use strict';\n\nvar EditorState = require('./EditorState');\n\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 */\nfunction editOnCompositionStart(editor, e) {\n editor.setMode('composite');\n editor.update(EditorState.set(editor._latestEditorState, { inCompositionMode: true }));\n // Allow composition handler to interpret the compositionstart event\n editor._onCompositionStart(e);\n}\n\nmodule.exports = editOnCompositionStart;","/**\n * Copyright (c) 2013-present, 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 * @providesModule getFragmentFromSelection\n * @format\n * \n */\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;","/**\n * Copyright (c) 2013-present, 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 * @providesModule editOnCopy\n * @format\n * \n */\n\n'use strict';\n\nvar getFragmentFromSelection = require('./getFragmentFromSelection');\n\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 */\nfunction editOnCopy(editor, e) {\n var editorState = editor._latestEditorState;\n var selection = editorState.getSelection();\n\n // No selection, so there's nothing to copy.\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) 2013-present, 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 * @providesModule editOnCut\n * @format\n * \n */\n\n'use strict';\n\nvar DraftModifier = require('./DraftModifier');\nvar EditorState = require('./EditorState');\nvar Style = require('fbjs/lib/Style');\n\nvar getFragmentFromSelection = require('./getFragmentFromSelection');\nvar getScrollPosition = require('fbjs/lib/getScrollPosition');\n\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 */\nfunction editOnCut(editor, e) {\n var editorState = editor._latestEditorState;\n var selection = editorState.getSelection();\n var element = e.target;\n var scrollPosition = void 0;\n\n // No selection, so there's nothing to cut.\n if (selection.isCollapsed()) {\n e.preventDefault();\n return;\n }\n\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 if (element instanceof Node) {\n scrollPosition = getScrollPosition(Style.getScrollParent(element));\n }\n\n var fragment = getFragmentFromSelection(editorState);\n editor.setClipboard(fragment);\n\n // Set `cut` mode to disable all event handling temporarily.\n editor.setMode('cut');\n\n // Let native `cut` behavior occur, then recover control.\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) 2013-present, 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 * @providesModule editOnDragOver\n * @format\n * \n */\n\n'use strict';\n\n/**\n * Drag behavior has begun from outside the editor element.\n */\nfunction editOnDragOver(editor, e) {\n editor._internalDrag = false;\n editor.setMode('drag');\n e.preventDefault();\n}\n\nmodule.exports = editOnDragOver;","/**\n * Copyright (c) 2013-present, 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 * @providesModule editOnDragStart\n * @format\n * \n */\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) 2013-present, 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 * @providesModule editOnFocus\n * @format\n * \n */\n\n'use strict';\n\nvar EditorState = require('./EditorState');\nvar UserAgent = require('fbjs/lib/UserAgent');\n\nfunction editOnFocus(editor, e) {\n var editorState = editor._latestEditorState;\n var currentSelection = editorState.getSelection();\n if (currentSelection.getHasFocus()) {\n return;\n }\n\n var selection = currentSelection.set('hasFocus', true);\n editor.props.onFocus && editor.props.onFocus(e);\n\n // 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 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) 2013-present, 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 * @providesModule editOnInput\n * @format\n * \n */\n\n'use strict';\n\nvar DraftFeatureFlags = require('./DraftFeatureFlags');\nvar DraftModifier = require('./DraftModifier');\nvar DraftOffsetKey = require('./DraftOffsetKey');\nvar EditorState = require('./EditorState');\nvar UserAgent = require('fbjs/lib/UserAgent');\n\nvar findAncestorOffsetKey = require('./findAncestorOffsetKey');\nvar nullthrows = require('fbjs/lib/nullthrows');\n\nvar isGecko = UserAgent.isEngine('Gecko');\n\nvar DOUBLE_NEWLINE = '\\n\\n';\n\n/**\n * This function is 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 */\nfunction editOnInput(editor) {\n if (editor._pendingStateFromBeforeInput !== undefined) {\n editor.update(editor._pendingStateFromBeforeInput);\n editor._pendingStateFromBeforeInput = undefined;\n }\n\n var domSelection = global.getSelection();\n\n var anchorNode = domSelection.anchorNode,\n isCollapsed = domSelection.isCollapsed;\n\n var isNotTextNode = anchorNode.nodeType !== Node.TEXT_NODE;\n var isNotTextOrElementNode = anchorNode.nodeType !== Node.TEXT_NODE && anchorNode.nodeType !== Node.ELEMENT_NODE;\n\n if (DraftFeatureFlags.draft_killswitch_allow_nontextnodes) {\n if (isNotTextNode) {\n return;\n }\n } else {\n if (isNotTextOrElementNode) {\n // TODO: (t16149272) figure out context for this change\n return;\n }\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 anchorNode.nodeValue = span.textContent;\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);\n\n // 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 if (domText.endsWith(DOUBLE_NEWLINE)) {\n domText = domText.slice(0, -1);\n }\n\n // No change -- the DOM is up to date. Nothing to do here.\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 return;\n }\n\n var selection = editorState.getSelection();\n\n // We'll replace the entire leaf with the text content of the target.\n var targetRange = selection.merge({\n anchorOffset: start,\n focusOffset: end,\n isBackward: false\n });\n\n var entityKey = block.getEntityAt(start);\n var entity = entityKey && content.getEntity(entityKey);\n var entityType = entity && entity.getMutability();\n var preserveEntity = entityType === 'MUTABLE';\n\n // 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 var changeType = preserveEntity ? 'spellcheck-change' : 'apply-entity';\n\n var newContent = DraftModifier.replaceText(content, targetRange, domText, block.getInlineStyleAt(start), preserveEntity ? block.getEntityAt(start) : null);\n\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\n anchorOffset = isCollapsed ? endOffset + charDelta : startOffset;\n focusOffset = endOffset + charDelta;\n }\n\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 var contentWithAdjustedDOMSelection = newContent.merge({\n selectionBefore: content.getSelectionAfter(),\n selectionAfter: selection.merge({ anchorOffset: anchorOffset, focusOffset: focusOffset })\n });\n\n editor.update(EditorState.push(editorState, contentWithAdjustedDOMSelection, changeType));\n}\n\nmodule.exports = editOnInput;","/**\n * Copyright (c) 2013-present, 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 * @providesModule KeyBindingUtil\n * @format\n * \n */\n\n'use strict';\n\nvar UserAgent = require('fbjs/lib/UserAgent');\n\nvar isOSX = UserAgent.isPlatform('Mac OS X');\n\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\n isOptionKeyCommand: function isOptionKeyCommand(e) {\n return isOSX && e.altKey;\n },\n\n hasCommandModifier: function hasCommandModifier(e) {\n return isOSX ? !!e.metaKey && !e.altKey : KeyBindingUtil.isCtrlKeyCommand(e);\n }\n};\n\nmodule.exports = KeyBindingUtil;","/**\n * Copyright (c) 2013-present, 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 * @providesModule SecondaryClipboard\n * @format\n * \n */\n\n'use strict';\n\nvar DraftModifier = require('./DraftModifier');\nvar EditorState = require('./EditorState');\n\nvar getContentStateFragment = require('./getContentStateFragment');\nvar nullthrows = require('fbjs/lib/nullthrows');\n\nvar clipboard = null;\n\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 */\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 return editorState;\n }\n\n targetRange = selection.set('focusOffset', blockEnd);\n } else {\n targetRange = selection;\n }\n\n targetRange = nullthrows(targetRange);\n clipboard = getContentStateFragment(content, targetRange);\n\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\n paste: function paste(editorState) {\n if (!clipboard) {\n return editorState;\n }\n\n var newContent = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), clipboard);\n\n return EditorState.push(editorState, newContent, 'insert-fragment');\n }\n};\n\nmodule.exports = SecondaryClipboard;","/**\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\n'use strict';\n\nvar invariant = require('./invariant');\n\n// These two ranges are consecutive so anything in [HIGH_START, LOW_END] is a\n// surrogate code unit.\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/**\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 */\nfunction isCodeUnitInSurrogateRange(codeUnit) {\n return SURROGATE_HIGH_START <= codeUnit && codeUnit <= SURROGATE_LOW_END;\n}\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 */\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 if (index + 1 === str.length) {\n return false;\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/**\n * @param {string} str Non-empty string\n * @return {boolean} True if the input includes any surrogate code units\n */\nfunction hasSurrogateUnit(str) {\n return SURROGATE_UNITS_REGEX.test(str);\n}\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 */\nfunction getUTF16Length(str, pos) {\n return 1 + isCodeUnitInSurrogateRange(str.charCodeAt(pos));\n}\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 */\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 for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n len++;\n }\n return len;\n}\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 */\nfunction substr(str, start, length) {\n start = start || 0;\n length = length === undefined ? Infinity : length || 0;\n\n // Call the native functions if there's no surrogate char\n if (!hasSurrogateUnit(str)) {\n return str.substr(start, length);\n }\n\n // Obvious cases\n var size = str.length;\n if (size <= 0 || start > size || length <= 0) {\n return '';\n }\n\n // Find the actual starting position\n var posA = 0;\n if (start > 0) {\n for (; start > 0 && posA < size; start--) {\n posA += getUTF16Length(str, posA);\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 if (posA < 0) {\n posA = 0;\n }\n }\n\n // Find the actual ending position\n var posB = size;\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/**\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 */\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 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/**\n * Get a list of Unicode code-points from a String\n *\n * @param {string} str Valid Unicode string\n * @return {array<number>} A list of code-points in [0..0x10FFFF]\n */\nfunction getCodePoints(str) {\n var codePoints = [];\n for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n codePoints.push(str.codePointAt(pos));\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};\n\nmodule.exports = UnicodeUtils;","/**\n * Copyright (c) 2013-present, 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 * @providesModule getRangeClientRects\n * @format\n * \n */\n\n'use strict';\n\nvar UserAgent = require('fbjs/lib/UserAgent');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar isChrome = UserAgent.isBrowser('Chrome');\n\n// 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/* eslint-disable consistent-return */\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 if (atCommonAncestor) {\n tempRange.setStart(range.startContainer, range.startOffset);\n } else {\n tempRange.setStart(tempRange.endContainer, 0);\n }\n var rects = Array.from(tempRange.getClientRects());\n clientRects.push(rects);\n if (atCommonAncestor) {\n var _ref;\n\n clientRects.reverse();\n return (_ref = []).concat.apply(_ref, clientRects);\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 */\nvar getRangeClientRects = isChrome ? getRangeClientRectsChrome : function (range) {\n return Array.from(range.getClientRects());\n};\n\nmodule.exports = getRangeClientRects;","'use strict';\n\n/**\n * Copyright (c) 2013-present, 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 * @providesModule expandRangeToStartOfLine\n * @format\n * \n */\n\nvar UnicodeUtils = require('fbjs/lib/UnicodeUtils');\n\nvar getRangeClientRects = require('./getRangeClientRects');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Return the computed line height, in pixels, for the provided element.\n */\nfunction getLineHeightPx(element) {\n var computed = getComputedStyle(element);\n var div = document.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\n var documentBody = document.body;\n !documentBody ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing document.body') : invariant(false) : void 0;\n\n // forced layout here\n documentBody.appendChild(div);\n var rect = div.getBoundingClientRect();\n documentBody.removeChild(div);\n\n return rect.height;\n}\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 */\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 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 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/**\n * Return the length of a node, as used by Range offsets.\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 case Node.TEXT_NODE:\n case Node.PROCESSING_INSTRUCTION_NODE:\n case Node.COMMENT_NODE:\n return node.length;\n default:\n return node.childNodes.length;\n }\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 */\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\n var containingElement = range.startContainer;\n if (containingElement.nodeType !== 1) {\n containingElement = containingElement.parentNode;\n }\n var lineHeight = getLineHeightPx(containingElement);\n\n // Imagine our text looks like:\n // <div><span>once upon a time, there was a <em>boy\n // who lived</em> </span><q><strong>under^ the\n // stairs</strong> in a small closet.</q></div>\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 // \"<strong>\", then before \"<div>\"), 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 <em>, 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 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 }\n\n // In the above example, range now spans from \"<div>\" to \"under\",\n // bestContainer is <div>, and bestOffset is 1 (index of <q> inside <div>)].\n // Picking out which child to recurse into here is a special case since we\n // don't want to check past <q> -- once we find that the final range starts\n // in <span>, we can look at all of its children (and all of their children)\n // to find the break point.\n\n // At all times, (bestContainer, bestOffset) is the latest single-line start\n // point that we know of.\n var currentContainer = bestContainer;\n var maxIndexToConsider = bestOffset - 1;\n\n do {\n var nodeValue = currentContainer.nodeValue;\n\n for (var ii = maxIndexToConsider; 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 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) 2013-present, 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 * @providesModule getDraftEditorSelectionWithNodes\n * @format\n * \n */\n\n'use strict';\n\nvar findAncestorOffsetKey = require('./findAncestorOffsetKey');\nvar getSelectionOffsetKeyForNode = require('./getSelectionOffsetKeyForNode');\nvar getUpdatedSelectionState = require('./getUpdatedSelectionState');\nvar invariant = require('fbjs/lib/invariant');\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;\n\n // 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 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;\n\n // 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 <div> is\n // selected and the user presses the right arrow, Firefox keeps the selection\n // on the <div>. 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 <div>. 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);\n\n // 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 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/**\n * Identify the first leaf descendant for the given node.\n */\nfunction getFirstLeaf(node) {\n while (node.firstChild && (\n // data-blocks has no offset\n node.firstChild instanceof Element && node.firstChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.firstChild))) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Identify the last leaf descendant for the given node.\n */\nfunction getLastLeaf(node) {\n while (node.lastChild && (\n // data-blocks has no offset\n node.lastChild instanceof Element && node.lastChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.lastChild))) {\n node = node.lastChild;\n }\n return node;\n}\n\nfunction getPointForNonTextNode(editorRoot, startNode, childOffset) {\n var node = startNode;\n var offsetKey = findAncestorOffsetKey(node);\n\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;\n\n // If the editorRoot is the selection, step downward into the content\n // wrapper.\n if (editorRoot === node) {\n node = node.firstChild;\n !(node instanceof Element && node.getAttribute('data-contents') === 'true') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid DraftEditorContents structure.') : invariant(false) : void 0;\n if (childOffset > 0) {\n childOffset = node.childNodes.length;\n }\n }\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 if (childOffset === 0) {\n var key = null;\n if (offsetKey != null) {\n key = offsetKey;\n } else {\n var firstLeaf = getFirstLeaf(node);\n key = nullthrows(getSelectionOffsetKeyForNode(firstLeaf));\n }\n return { key: key, offset: 0 };\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/**\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 */\nfunction getTextContentLength(node) {\n var textContent = node.textContent;\n return textContent === '\\n' ? 0 : textContent.length;\n}\n\nmodule.exports = getDraftEditorSelectionWithNodes;","/**\n * Copyright (c) 2013-present, 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 * @providesModule moveSelectionBackward\n * @format\n * \n */\n\n'use strict';\n\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 */\nfunction moveSelectionBackward(editorState, maxDistance) {\n var selection = editorState.getSelection();\n var content = editorState.getCurrentContent();\n var key = selection.getStartKey();\n var offset = selection.getStartOffset();\n\n var focusKey = key;\n var focusOffset = 0;\n\n if (maxDistance > offset) {\n var keyBefore = content.getKeyBefore(key);\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) 2013-present, 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 * @providesModule removeTextWithStrategy\n * @format\n * \n */\n\n'use strict';\n\nvar DraftModifier = require('./DraftModifier');\n\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 */\nfunction removeTextWithStrategy(editorState, strategy, direction) {\n var selection = editorState.getSelection();\n var content = editorState.getCurrentContent();\n var target = selection;\n if (selection.isCollapsed()) {\n if (direction === 'forward') {\n if (editorState.isSelectionAtEndOfContent()) {\n return content;\n }\n } else if (editorState.isSelectionAtStartOfContent()) {\n return content;\n }\n\n target = strategy(editorState);\n if (target === selection) {\n return content;\n }\n }\n return DraftModifier.removeRange(content, target, direction);\n}\n\nmodule.exports = removeTextWithStrategy;","/**\n * Copyright (c) 2013-present, 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 * @providesModule keyCommandBackspaceToStartOfLine\n * @format\n * \n */\n\n'use strict';\n\nvar EditorState = require('./EditorState');\n\nvar expandRangeToStartOfLine = require('./expandRangeToStartOfLine');\nvar getDraftEditorSelectionWithNodes = require('./getDraftEditorSelectionWithNodes');\nvar moveSelectionBackward = require('./moveSelectionBackward');\nvar removeTextWithStrategy = require('./removeTextWithStrategy');\n\nfunction keyCommandBackspaceToStartOfLine(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n if (selection.isCollapsed() && selection.getAnchorOffset() === 0) {\n return moveSelectionBackward(strategyState, 1);\n }\n\n var domSelection = global.getSelection();\n var range = domSelection.getRangeAt(0);\n range = expandRangeToStartOfLine(range);\n\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) 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\n'use strict';\n\n// \\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]';\n\nmodule.exports = {\n getPunctuation: function getPunctuation() {\n return PUNCTUATION;\n }\n};","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftRemovableWord\n * @format\n * \n */\n\n'use strict';\n\nvar TokenizeUtil = require('fbjs/lib/TokenizeUtil');\n\nvar punctuation = TokenizeUtil.getPunctuation();\n\n// 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.\nvar CHAMELEON_CHARS = '[\\'\\u2018\\u2019]';\n\n// Remove the underscore, which should count as part of the removable word. The\n// \"chameleon chars\" also count as punctuation in this regex.\nvar WHITESPACE_AND_PUNCTUATION = '\\\\s|(?![_])' + punctuation;\n\nvar DELETE_STRING = '^' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)';\nvar DELETE_REGEX = new RegExp(DELETE_STRING);\n\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\n getForward: function getForward(text) {\n return getRemovableWord(text, false);\n }\n};\n\nmodule.exports = DraftRemovableWord;","/**\n * Copyright (c) 2013-present, 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 * @providesModule keyCommandBackspaceWord\n * @format\n * \n */\n\n'use strict';\n\nvar DraftRemovableWord = require('./DraftRemovableWord');\nvar EditorState = require('./EditorState');\n\nvar moveSelectionBackward = require('./moveSelectionBackward');\nvar removeTextWithStrategy = require('./removeTextWithStrategy');\n\n/**\n * Delete the word that is left of the cursor, as well as any spaces or\n * punctuation after the word.\n */\nfunction keyCommandBackspaceWord(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var offset = selection.getStartOffset();\n // If there are no words before the cursor, remove the preceding newline.\n if (offset === 0) {\n return moveSelectionBackward(strategyState, 1);\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) 2013-present, 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 * @providesModule moveSelectionForward\n * @format\n * \n */\n\n'use strict';\n\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 */\nfunction moveSelectionForward(editorState, maxDistance) {\n var selection = editorState.getSelection();\n var key = selection.getStartKey();\n var offset = selection.getStartOffset();\n var content = editorState.getCurrentContent();\n\n var focusKey = key;\n var focusOffset;\n\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({ focusKey: focusKey, focusOffset: focusOffset });\n}\n\nmodule.exports = moveSelectionForward;","/**\n * Copyright (c) 2013-present, 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 * @providesModule keyCommandDeleteWord\n * @format\n * \n */\n\n'use strict';\n\nvar DraftRemovableWord = require('./DraftRemovableWord');\nvar EditorState = require('./EditorState');\n\nvar moveSelectionForward = require('./moveSelectionForward');\nvar removeTextWithStrategy = require('./removeTextWithStrategy');\n\n/**\n * Delete the word that is right of the cursor, as well as any spaces or\n * punctuation before the word.\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);\n\n // If there are no words in front of the cursor, remove the newline.\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) 2013-present, 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 * @providesModule keyCommandInsertNewline\n * @format\n * \n */\n\n'use strict';\n\nvar DraftModifier = require('./DraftModifier');\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) 2013-present, 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 * @providesModule keyCommandMoveSelectionToEndOfBlock\n * @format\n * \n */\n\n'use strict';\n\nvar EditorState = require('./EditorState');\n\n/**\n * See comment for `moveSelectionToStartOfBlock`.\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) 2013-present, 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 * @providesModule keyCommandMoveSelectionToStartOfBlock\n * @format\n * \n */\n\n'use strict';\n\nvar EditorState = require('./EditorState');\n\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 */\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) 2013-present, 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 * @providesModule keyCommandPlainBackspace\n * @format\n * \n */\n\n'use strict';\n\nvar EditorState = require('./EditorState');\nvar UnicodeUtils = require('fbjs/lib/UnicodeUtils');\n\nvar moveSelectionBackward = require('./moveSelectionBackward');\nvar removeTextWithStrategy = require('./removeTextWithStrategy');\n\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 */\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) 2013-present, 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 * @providesModule keyCommandPlainDelete\n * @format\n * \n */\n\n'use strict';\n\nvar EditorState = require('./EditorState');\nvar UnicodeUtils = require('fbjs/lib/UnicodeUtils');\n\nvar moveSelectionForward = require('./moveSelectionForward');\nvar removeTextWithStrategy = require('./removeTextWithStrategy');\n\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 */\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\n return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'delete-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainDelete;","/**\n * Copyright (c) 2013-present, 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 * @providesModule keyCommandTransposeCharacters\n * @format\n * \n */\n\n'use strict';\n\nvar DraftModifier = require('./DraftModifier');\nvar EditorState = require('./EditorState');\n\nvar getContentStateFragment = require('./getContentStateFragment');\n\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 */\nfunction keyCommandTransposeCharacters(editorState) {\n var selection = editorState.getSelection();\n if (!selection.isCollapsed()) {\n return editorState;\n }\n\n var offset = selection.getAnchorOffset();\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();\n\n // Nothing to transpose if there aren't two characters.\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 }\n\n // Extract the character to move as a fragment. This preserves its\n // styling and entity, if any.\n var movedFragment = getContentStateFragment(content, removalRange);\n var afterRemoval = DraftModifier.removeRange(content, removalRange, 'backward');\n\n // After the removal, the insertion target is one character back.\n var selectionAfter = afterRemoval.getSelectionAfter();\n var targetOffset = selectionAfter.getAnchorOffset() - 1;\n var targetRange = selectionAfter.merge({\n anchorOffset: targetOffset,\n focusOffset: targetOffset\n });\n\n var afterInsert = DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n\n var newEditorState = EditorState.push(editorState, afterInsert, 'insert-fragment');\n\n return EditorState.acceptSelection(newEditorState, finalSelection);\n}\n\nmodule.exports = keyCommandTransposeCharacters;","/**\n * Copyright (c) 2013-present, 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 * @providesModule keyCommandUndo\n * @format\n * \n */\n\n'use strict';\n\nvar EditorState = require('./EditorState');\n\nfunction keyCommandUndo(e, editorState, updateFn) {\n var undoneState = EditorState.undo(editorState);\n\n // 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 if (editorState.getLastChangeType() === 'spellcheck-change') {\n var nativelyRenderedContent = undoneState.getCurrentContent();\n updateFn(EditorState.set(undoneState, { nativelyRenderedContent: nativelyRenderedContent }));\n return;\n }\n\n // Otheriwse, manage the undo behavior manually.\n e.preventDefault();\n if (!editorState.getNativelyRenderedContent()) {\n updateFn(undoneState);\n return;\n }\n\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 updateFn(EditorState.set(editorState, { nativelyRenderedContent: null }));\n\n // Wait to ensure that the re-render has occurred before performing\n // the undo action.\n setTimeout(function () {\n updateFn(undoneState);\n }, 0);\n}\n\nmodule.exports = keyCommandUndo;","/**\n * Copyright (c) 2013-present, 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 * @providesModule editOnKeyDown\n * @format\n * \n */\n\n'use strict';\n\nvar DraftModifier = require('./DraftModifier');\nvar EditorState = require('./EditorState');\nvar KeyBindingUtil = require('./KeyBindingUtil');\nvar Keys = require('fbjs/lib/Keys');\nvar SecondaryClipboard = require('./SecondaryClipboard');\nvar UserAgent = require('fbjs/lib/UserAgent');\n\nvar isEventHandled = require('./isEventHandled');\nvar keyCommandBackspaceToStartOfLine = require('./keyCommandBackspaceToStartOfLine');\nvar keyCommandBackspaceWord = require('./keyCommandBackspaceWord');\nvar keyCommandDeleteWord = require('./keyCommandDeleteWord');\nvar keyCommandInsertNewline = require('./keyCommandInsertNewline');\nvar keyCommandMoveSelectionToEndOfBlock = require('./keyCommandMoveSelectionToEndOfBlock');\nvar keyCommandMoveSelectionToStartOfBlock = require('./keyCommandMoveSelectionToStartOfBlock');\nvar keyCommandPlainBackspace = require('./keyCommandPlainBackspace');\nvar keyCommandPlainDelete = require('./keyCommandPlainDelete');\nvar keyCommandTransposeCharacters = require('./keyCommandTransposeCharacters');\nvar keyCommandUndo = require('./keyCommandUndo');\n\nvar isOptionKeyCommand = KeyBindingUtil.isOptionKeyCommand;\n\nvar isChrome = UserAgent.isBrowser('Chrome');\n\n/**\n * Map a `DraftEditorCommand` command value to a corresponding function.\n */\nfunction onKeyCommand(command, editorState) {\n switch (command) {\n case 'redo':\n return EditorState.redo(editorState);\n case 'delete':\n return keyCommandPlainDelete(editorState);\n case 'delete-word':\n return keyCommandDeleteWord(editorState);\n case 'backspace':\n return keyCommandPlainBackspace(editorState);\n case 'backspace-word':\n return keyCommandBackspaceWord(editorState);\n case 'backspace-to-start-of-line':\n return keyCommandBackspaceToStartOfLine(editorState);\n case 'split-block':\n return keyCommandInsertNewline(editorState);\n case 'transpose-characters':\n return keyCommandTransposeCharacters(editorState);\n case 'move-selection-to-start-of-block':\n return keyCommandMoveSelectionToStartOfBlock(editorState);\n case 'move-selection-to-end-of-block':\n return keyCommandMoveSelectionToEndOfBlock(editorState);\n case 'secondary-cut':\n return SecondaryClipboard.cut(editorState);\n case 'secondary-paste':\n return SecondaryClipboard.paste(editorState);\n default:\n return editorState;\n }\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 */\nfunction editOnKeyDown(editor, e) {\n var keyCode = e.which;\n var editorState = editor._latestEditorState;\n\n switch (keyCode) {\n case Keys.RETURN:\n e.preventDefault();\n // The top-level component may manually handle newline insertion. If\n // no special handling is performed, fall through to command handling.\n if (editor.props.handleReturn && isEventHandled(editor.props.handleReturn(e, editorState))) {\n return;\n }\n break;\n case Keys.ESC:\n e.preventDefault();\n editor.props.onEscape && editor.props.onEscape(e);\n return;\n case Keys.TAB:\n editor.props.onTab && editor.props.onTab(e);\n return;\n case Keys.UP:\n editor.props.onUpArrow && editor.props.onUpArrow(e);\n return;\n case Keys.RIGHT:\n editor.props.onRightArrow && editor.props.onRightArrow(e);\n return;\n case Keys.DOWN:\n editor.props.onDownArrow && editor.props.onDownArrow(e);\n return;\n case Keys.LEFT:\n editor.props.onLeftArrow && editor.props.onLeftArrow(e);\n return;\n case Keys.SPACE:\n // Handling for OSX where option + space scrolls.\n if (isChrome && isOptionKeyCommand(e)) {\n e.preventDefault();\n // Insert a nbsp into the editor.\n var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), '\\xA0');\n editor.update(EditorState.push(editorState, contentState, 'insert-characters'));\n return;\n }\n }\n\n var command = editor.props.keyBindingFn(e);\n\n // If no command is specified, allow keydown event to continue.\n if (!command) {\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 }\n\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 e.preventDefault();\n\n // Allow components higher up the tree to handle the command first.\n if (editor.props.handleKeyCommand && isEventHandled(editor.props.handleKeyCommand(command, editorState))) {\n return;\n }\n\n var newState = onKeyCommand(command, editorState);\n if (newState !== editorState) {\n editor.update(newState);\n }\n}\n\nmodule.exports = editOnKeyDown;","/**\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'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar URI = function () {\n function URI(uri) {\n _classCallCheck(this, URI);\n\n this._uri = uri;\n }\n\n URI.prototype.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 * 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 * @providesModule getSafeBodyFromHTML\n * @format\n * \n */\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');\n\n// 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;\n // Provides a safe context\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 return root;\n}\n\nmodule.exports = getSafeBodyFromHTML;","/**\n * Copyright (c) 2013-present, 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 * @providesModule convertFromHTMLToContentBlocks\n * @format\n * \n */\n\n'use strict';\n\nvar _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; };\n\nvar _knownListItemDepthCl,\n _assign = require('object-assign');\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');\nvar ContentBlock = require('./ContentBlock');\nvar ContentBlockNode = require('./ContentBlockNode');\nvar DefaultDraftBlockRenderMap = require('./DefaultDraftBlockRenderMap');\nvar DraftEntity = require('./DraftEntity');\nvar DraftFeatureFlags = require('./DraftFeatureFlags');\nvar Immutable = require('immutable');\n\nvar _require = require('immutable'),\n Set = _require.Set;\n\nvar URI = require('fbjs/lib/URI');\n\nvar cx = require('fbjs/lib/cx');\nvar generateRandomKey = require('./generateRandomKey');\nvar getSafeBodyFromHTML = require('./getSafeBodyFromHTML');\nvar invariant = require('fbjs/lib/invariant');\nvar sanitizeDraftText = require('./sanitizeDraftText');\n\nvar experimentalTreeDataSupport = DraftFeatureFlags.draft_tree_data_support;\n\nvar List = Immutable.List,\n OrderedSet = Immutable.OrderedSet;\n\n\nvar NBSP = '&nbsp;';\nvar SPACE = ' ';\n\n// Arbitrary max indent\nvar MAX_DEPTH = 4;\n\n// used for replacing characters in HTML\nvar REGEX_CR = new RegExp('\\r', 'g');\nvar REGEX_LF = new RegExp('\\n', 'g');\nvar REGEX_NBSP = new RegExp(NBSP, 'g');\nvar REGEX_CARRIAGE = new RegExp('&#13;?', 'g');\nvar REGEX_ZWS = new RegExp('&#8203;?', 'g');\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\nvar boldValues = ['bold', 'bolder', '500', '600', '700', '800', '900'];\nvar notBoldValues = ['light', 'lighter', '100', '200', '300', '400'];\n\n// Block tag flow is different because LIs do not have\n// a deterministic style ;_;\nvar inlineTags = {\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};\n\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);\n\nvar anchorAttr = ['className', 'href', 'rel', 'target', 'title'];\n\nvar imgAttr = ['alt', 'className', 'height', 'src', 'width'];\n\nvar lastBlock = void 0;\n\nvar EMPTY_CHUNK = {\n text: '',\n inlines: [],\n entities: [],\n blocks: []\n};\n\nvar EMPTY_BLOCK = {\n children: List(),\n depth: 0,\n key: '',\n type: ''\n};\n\nvar getListBlockType = function getListBlockType(tag, lastList) {\n if (tag === 'li') {\n return lastList === 'ol' ? 'ordered-list-item' : 'unordered-list-item';\n }\n return null;\n};\n\nvar getBlockMapSupportedTags = function getBlockMapSupportedTags(blockRenderMap) {\n var unstyledElement = blockRenderMap.get('unstyled').element;\n var tags = Set([]);\n\n blockRenderMap.forEach(function (draftBlock) {\n if (draftBlock.aliasedElements) {\n draftBlock.aliasedElements.forEach(function (tag) {\n tags = tags.add(tag);\n });\n }\n\n tags = tags.add(draftBlock.element);\n });\n\n return tags.filter(function (tag) {\n return tag && tag !== unstyledElement;\n }).toArray().sort();\n};\n\n// custom element conversions\nvar getMultiMatchedType = function getMultiMatchedType(tag, lastList, multiMatchExtractor) {\n for (var ii = 0; ii < multiMatchExtractor.length; ii++) {\n var matchType = multiMatchExtractor[ii](tag, lastList);\n if (matchType) {\n return matchType;\n }\n }\n return null;\n};\n\nvar getBlockTypeForTag = function getBlockTypeForTag(tag, lastList, blockRenderMap) {\n var matchedTypes = blockRenderMap.filter(function (draftBlock) {\n return draftBlock.element === tag || draftBlock.wrapper === tag || draftBlock.aliasedElements && draftBlock.aliasedElements.some(function (alias) {\n return alias === tag;\n });\n }).keySeq().toSet().toArray().sort();\n\n // if we dont have any matched type, return unstyled\n // if we have one matched type return it\n // if we have multi matched types use the multi-match function to gather type\n switch (matchedTypes.length) {\n case 0:\n return 'unstyled';\n case 1:\n return matchedTypes[0];\n default:\n return getMultiMatchedType(tag, lastList, [getListBlockType]) || 'unstyled';\n }\n};\n\nvar processInlineTag = function processInlineTag(tag, node, currentStyle) {\n var styleToCheck = inlineTags[tag];\n if (styleToCheck) {\n currentStyle = currentStyle.add(styleToCheck).toOrderedSet();\n } else if (node instanceof HTMLElement) {\n var htmlElement = node;\n currentStyle = currentStyle.withMutations(function (style) {\n var fontWeight = htmlElement.style.fontWeight;\n var fontStyle = htmlElement.style.fontStyle;\n var textDecoration = htmlElement.style.textDecoration;\n\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 if (textDecoration === 'line-through') {\n style.add('STRIKETHROUGH');\n }\n if (textDecoration === 'none') {\n style.remove('UNDERLINE');\n style.remove('STRIKETHROUGH');\n }\n }).toOrderedSet();\n }\n return currentStyle;\n};\n\nvar joinChunks = function joinChunks(A, B, experimentalHasNestedBlocks) {\n // Sometimes two blocks will touch in the DOM and we need to strip the\n // extra delimiter to preserve niceness.\n var lastInA = A.text.slice(-1);\n var firstInB = B.text.slice(0, 1);\n\n if (lastInA === '\\r' && firstInB === '\\r' && !experimentalHasNestedBlocks) {\n A.text = A.text.slice(0, -1);\n A.inlines.pop();\n A.entities.pop();\n A.blocks.pop();\n }\n\n // Kill whitespace after blocks\n if (lastInA === '\\r') {\n if (B.text === SPACE || B.text === '\\n') {\n return A;\n } else if (firstInB === SPACE || firstInB === '\\n') {\n B.text = B.text.slice(1);\n B.inlines.shift();\n B.entities.shift();\n }\n }\n\n return {\n text: A.text + B.text,\n inlines: A.inlines.concat(B.inlines),\n entities: A.entities.concat(B.entities),\n blocks: A.blocks.concat(B.blocks)\n };\n};\n\n/**\n * Check to see if we have anything like <p> <blockquote> <h1>... to create\n * block tags from. If we do, we can use those and ignore <div> tags. If we\n * don't, we can treat <div> tags as meaningful (unstyled) blocks.\n */\nvar containsSemanticBlockMarkup = function containsSemanticBlockMarkup(html, blockTags) {\n return blockTags.some(function (tag) {\n return html.indexOf('<' + tag) !== -1;\n });\n};\n\nvar hasValidLinkText = function hasValidLinkText(link) {\n !(link instanceof HTMLAnchorElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Link must be an HTMLAnchorElement.') : invariant(false) : void 0;\n var protocol = link.protocol;\n return protocol === 'http:' || protocol === 'https:' || protocol === 'mailto:';\n};\n\nvar getWhitespaceChunk = function getWhitespaceChunk(inEntity) {\n var entities = new Array(1);\n if (inEntity) {\n entities[0] = inEntity;\n }\n return _extends({}, EMPTY_CHUNK, {\n text: SPACE,\n inlines: [OrderedSet()],\n entities: entities\n });\n};\n\nvar getSoftNewlineChunk = function getSoftNewlineChunk() {\n return _extends({}, EMPTY_CHUNK, {\n text: '\\n',\n inlines: [OrderedSet()],\n entities: new Array(1)\n });\n};\n\nvar getChunkedBlock = function getChunkedBlock() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return _extends({}, EMPTY_BLOCK, props);\n};\n\nvar getBlockDividerChunk = function getBlockDividerChunk(block, depth) {\n var parentKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n return {\n text: '\\r',\n inlines: [OrderedSet()],\n entities: new Array(1),\n blocks: [getChunkedBlock({\n parent: parentKey,\n key: generateRandomKey(),\n type: block,\n depth: Math.max(0, Math.min(MAX_DEPTH, depth))\n })]\n };\n};\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 */\nvar getListItemDepth = function getListItemDepth(node) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n Object.keys(knownListItemDepthClasses).some(function (depthClass) {\n if (node.classList.contains(depthClass)) {\n depth = knownListItemDepthClasses[depthClass];\n }\n });\n return depth;\n};\n\nvar genFragment = function genFragment(entityMap, node, inlineStyle, lastList, inBlock, blockTags, depth, blockRenderMap, inEntity, parentKey) {\n var lastLastBlock = lastBlock;\n var nodeName = node.nodeName.toLowerCase();\n var newEntityMap = entityMap;\n var nextBlockType = 'unstyled';\n var newBlock = false;\n var inBlockType = inBlock && getBlockTypeForTag(inBlock, lastList, blockRenderMap);\n var chunk = _extends({}, EMPTY_CHUNK);\n var newChunk = null;\n var blockKey = void 0;\n\n // Base Case\n if (nodeName === '#text') {\n var _text = node.textContent;\n var nodeTextContent = _text.trim();\n\n // We should not create blocks for leading spaces that are\n // existing around ol/ul and their children list items\n if (lastList && nodeTextContent === '' && node.parentElement) {\n var parentNodeName = node.parentElement.nodeName.toLowerCase();\n if (parentNodeName === 'ol' || parentNodeName === 'ul') {\n return { chunk: _extends({}, EMPTY_CHUNK), entityMap: entityMap };\n }\n }\n\n if (nodeTextContent === '' && inBlock !== 'pre') {\n return { chunk: getWhitespaceChunk(inEntity), entityMap: entityMap };\n }\n if (inBlock !== 'pre') {\n // Can't use empty string because MSWord\n _text = _text.replace(REGEX_LF, SPACE);\n }\n\n // save the last block so we can use it later\n lastBlock = nodeName;\n\n return {\n chunk: {\n text: _text,\n inlines: Array(_text.length).fill(inlineStyle),\n entities: Array(_text.length).fill(inEntity),\n blocks: []\n },\n entityMap: entityMap\n };\n }\n\n // save the last block so we can use it later\n lastBlock = nodeName;\n\n // BR tags\n if (nodeName === 'br') {\n if (lastLastBlock === 'br' && (!inBlock || inBlockType === 'unstyled')) {\n return {\n chunk: getBlockDividerChunk('unstyled', depth, parentKey),\n entityMap: entityMap\n };\n }\n return { chunk: getSoftNewlineChunk(), entityMap: entityMap };\n }\n\n // IMG tags\n if (nodeName === 'img' && node instanceof HTMLImageElement && node.attributes.getNamedItem('src') && node.attributes.getNamedItem('src').value) {\n var image = node;\n var entityConfig = {};\n\n imgAttr.forEach(function (attr) {\n var imageAttribute = image.getAttribute(attr);\n if (imageAttribute) {\n entityConfig[attr] = imageAttribute;\n }\n });\n // Forcing this node to have children because otherwise no entity will be\n // created for this node.\n // The child text node cannot just have a space or return as content -\n // we strip those out.\n // See https://github.com/facebook/draft-js/issues/231 for some context.\n node.textContent = '\\uD83D\\uDCF7';\n\n // TODO: update this when we remove DraftEntity entirely\n inEntity = DraftEntity.__create('IMAGE', 'MUTABLE', entityConfig || {});\n }\n\n // Inline tags\n inlineStyle = processInlineTag(nodeName, node, inlineStyle);\n\n // Handle lists\n if (nodeName === 'ul' || nodeName === 'ol') {\n if (lastList) {\n depth += 1;\n }\n lastList = nodeName;\n }\n\n if (!experimentalTreeDataSupport && nodeName === 'li' && node instanceof HTMLElement) {\n depth = getListItemDepth(node, depth);\n }\n\n var blockType = getBlockTypeForTag(nodeName, lastList, blockRenderMap);\n var inListBlock = lastList && inBlock === 'li' && nodeName === 'li';\n var inBlockOrHasNestedBlocks = (!inBlock || experimentalTreeDataSupport) && blockTags.indexOf(nodeName) !== -1;\n\n // Block Tags\n if (inListBlock || inBlockOrHasNestedBlocks) {\n chunk = getBlockDividerChunk(blockType, depth, parentKey);\n blockKey = chunk.blocks[0].key;\n inBlock = nodeName;\n newBlock = !experimentalTreeDataSupport;\n }\n\n // this is required so that we can handle 'ul' and 'ol'\n if (inListBlock) {\n nextBlockType = lastList === 'ul' ? 'unordered-list-item' : 'ordered-list-item';\n }\n\n // Recurse through children\n var child = node.firstChild;\n if (child != null) {\n nodeName = child.nodeName.toLowerCase();\n }\n\n var entityId = null;\n\n while (child) {\n if (child instanceof HTMLAnchorElement && child.href && hasValidLinkText(child)) {\n (function () {\n var anchor = child;\n var entityConfig = {};\n\n anchorAttr.forEach(function (attr) {\n var anchorAttribute = anchor.getAttribute(attr);\n if (anchorAttribute) {\n entityConfig[attr] = anchorAttribute;\n }\n });\n\n entityConfig.url = new URI(anchor.href).toString();\n // TODO: update this when we remove DraftEntity completely\n entityId = DraftEntity.__create('LINK', 'MUTABLE', entityConfig || {});\n })();\n } else {\n entityId = undefined;\n }\n\n var _genFragment = genFragment(newEntityMap, child, inlineStyle, lastList, inBlock, blockTags, depth, blockRenderMap, entityId || inEntity, experimentalTreeDataSupport ? blockKey : null),\n generatedChunk = _genFragment.chunk,\n maybeUpdatedEntityMap = _genFragment.entityMap;\n\n newChunk = generatedChunk;\n newEntityMap = maybeUpdatedEntityMap;\n\n chunk = joinChunks(chunk, newChunk, experimentalTreeDataSupport);\n var sibling = child.nextSibling;\n\n // Put in a newline to break up blocks inside blocks\n if (!parentKey && sibling && blockTags.indexOf(nodeName) >= 0 && inBlock) {\n chunk = joinChunks(chunk, getSoftNewlineChunk());\n }\n if (sibling) {\n nodeName = sibling.nodeName.toLowerCase();\n }\n child = sibling;\n }\n\n if (newBlock) {\n chunk = joinChunks(chunk, getBlockDividerChunk(nextBlockType, depth, parentKey));\n }\n\n return { chunk: chunk, entityMap: newEntityMap };\n};\n\nvar getChunkForHTML = function getChunkForHTML(html, DOMBuilder, blockRenderMap, entityMap) {\n html = html.trim().replace(REGEX_CR, '').replace(REGEX_NBSP, SPACE).replace(REGEX_CARRIAGE, '').replace(REGEX_ZWS, '');\n\n var supportedBlockTags = getBlockMapSupportedTags(blockRenderMap);\n\n var safeBody = DOMBuilder(html);\n if (!safeBody) {\n return null;\n }\n lastBlock = null;\n\n // Sometimes we aren't dealing with content that contains nice semantic\n // tags. In this case, use divs to separate everything out into paragraphs\n // and hope for the best.\n var workingBlocks = containsSemanticBlockMarkup(html, supportedBlockTags) ? supportedBlockTags : ['div'];\n\n // Start with -1 block depth to offset the fact that we are passing in a fake\n // UL block to start with.\n var fragment = genFragment(entityMap, safeBody, OrderedSet(), 'ul', null, workingBlocks, -1, blockRenderMap);\n\n var chunk = fragment.chunk;\n var newEntityMap = fragment.entityMap;\n\n // join with previous block to prevent weirdness on paste\n if (chunk.text.indexOf('\\r') === 0) {\n chunk = {\n text: chunk.text.slice(1),\n inlines: chunk.inlines.slice(1),\n entities: chunk.entities.slice(1),\n blocks: chunk.blocks\n };\n }\n\n // Kill block delimiter at the end\n if (chunk.text.slice(-1) === '\\r') {\n chunk.text = chunk.text.slice(0, -1);\n chunk.inlines = chunk.inlines.slice(0, -1);\n chunk.entities = chunk.entities.slice(0, -1);\n chunk.blocks.pop();\n }\n\n // If we saw no block tags, put an unstyled one in\n if (chunk.blocks.length === 0) {\n chunk.blocks.push(_extends({}, EMPTY_CHUNK, {\n type: 'unstyled',\n depth: 0\n }));\n }\n\n // Sometimes we start with text that isn't in a block, which is then\n // followed by blocks. Need to fix up the blocks to add in\n // an unstyled block for this content\n if (chunk.text.split('\\r').length === chunk.blocks.length + 1) {\n chunk.blocks.unshift({ type: 'unstyled', depth: 0 });\n }\n\n return { chunk: chunk, entityMap: newEntityMap };\n};\n\nvar convertChunkToContentBlocks = function convertChunkToContentBlocks(chunk) {\n if (!chunk || !chunk.text || !Array.isArray(chunk.blocks)) {\n return null;\n }\n\n var initialState = {\n cacheRef: {},\n contentBlocks: []\n };\n\n var start = 0;\n\n var rawBlocks = chunk.blocks,\n rawInlines = chunk.inlines,\n rawEntities = chunk.entities;\n\n\n var BlockNodeRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\n\n return chunk.text.split('\\r').reduce(function (acc, textBlock, index) {\n // Make absolutely certain that our text is acceptable.\n textBlock = sanitizeDraftText(textBlock);\n\n var block = rawBlocks[index];\n var end = start + textBlock.length;\n var inlines = rawInlines.slice(start, end);\n var entities = rawEntities.slice(start, end);\n var characterList = List(inlines.map(function (style, index) {\n var data = { style: style, entity: null };\n if (entities[index]) {\n data.entity = entities[index];\n }\n return CharacterMetadata.create(data);\n }));\n start = end + 1;\n\n var depth = block.depth,\n type = block.type,\n parent = block.parent;\n\n\n var key = block.key || generateRandomKey();\n var parentTextNodeKey = null; // will be used to store container text nodes\n\n // childrens add themselves to their parents since we are iterating in order\n if (parent) {\n var parentIndex = acc.cacheRef[parent];\n var parentRecord = acc.contentBlocks[parentIndex];\n\n // if parent has text we need to split it into a separate unstyled element\n if (parentRecord.getChildKeys().isEmpty() && parentRecord.getText()) {\n var parentCharacterList = parentRecord.getCharacterList();\n var parentText = parentRecord.getText();\n parentTextNodeKey = generateRandomKey();\n\n var textNode = new ContentBlockNode({\n key: parentTextNodeKey,\n text: parentText,\n characterList: parentCharacterList,\n parent: parent,\n nextSibling: key\n });\n\n acc.contentBlocks.push(textNode);\n\n parentRecord = parentRecord.withMutations(function (block) {\n block.set('characterList', List()).set('text', '').set('children', parentRecord.children.push(textNode.getKey()));\n });\n }\n\n acc.contentBlocks[parentIndex] = parentRecord.set('children', parentRecord.children.push(key));\n }\n\n var blockNode = new BlockNodeRecord({\n key: key,\n parent: parent,\n type: type,\n depth: depth,\n text: textBlock,\n characterList: characterList,\n prevSibling: parentTextNodeKey || (index === 0 || rawBlocks[index - 1].parent !== parent ? null : rawBlocks[index - 1].key),\n nextSibling: index === rawBlocks.length - 1 || rawBlocks[index + 1].parent !== parent ? null : rawBlocks[index + 1].key\n });\n\n // insert node\n acc.contentBlocks.push(blockNode);\n\n // cache ref for building links\n acc.cacheRef[blockNode.key] = index;\n\n return acc;\n }, initialState).contentBlocks;\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\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\n // TODO: replace DraftEntity with an OrderedMap here\n var chunkData = getChunkForHTML(html, DOMBuilder, blockRenderMap, DraftEntity);\n\n if (chunkData == null) {\n return null;\n }\n\n var chunk = chunkData.chunk,\n entityMap = chunkData.entityMap;\n\n var contentBlocks = convertChunkToContentBlocks(chunk);\n\n return {\n contentBlocks: contentBlocks,\n entityMap: entityMap\n };\n};\n\nmodule.exports = convertFromHTMLtoContentBlocks;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftPasteProcessor\n * @format\n * \n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar _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; };\n\nvar CharacterMetadata = require('./CharacterMetadata');\nvar ContentBlock = require('./ContentBlock');\nvar ContentBlockNode = require('./ContentBlockNode');\nvar DraftFeatureFlags = require('./DraftFeatureFlags');\nvar Immutable = require('immutable');\n\nvar convertFromHTMLtoContentBlocks = require('./convertFromHTMLToContentBlocks');\nvar generateRandomKey = require('./generateRandomKey');\nvar getSafeBodyFromHTML = require('./getSafeBodyFromHTML');\nvar sanitizeDraftText = require('./sanitizeDraftText');\n\nvar List = Immutable.List,\n Repeat = Immutable.Repeat;\n\n\nvar experimentalTreeDataSupport = DraftFeatureFlags.draft_tree_data_support;\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\n\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\n var blockNodeConfig = {\n key: key,\n type: type,\n text: textLine,\n characterList: List(Repeat(character, textLine.length))\n };\n\n // next block updates previous block\n if (experimentalTreeDataSupport && index !== 0) {\n var prevSiblingIndex = index - 1;\n // update previous block\n var previousBlock = acc[prevSiblingIndex] = acc[prevSiblingIndex].merge({\n nextSibling: key\n });\n blockNodeConfig = _extends({}, blockNodeConfig, {\n prevSibling: previousBlock.getKey()\n });\n }\n\n acc.push(new ContentBlockRecord(blockNodeConfig));\n\n return acc;\n }, []);\n }\n};\n\nmodule.exports = DraftPasteProcessor;","/**\n * Copyright (c) 2013-present, 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 * @providesModule adjustBlockDepthForContentState\n * @format\n * \n */\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\n blockMap = blockMap.merge(blocks);\n\n return contentState.merge({\n blockMap: blockMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = adjustBlockDepthForContentState;","/**\n * Copyright (c) 2013-present, 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 * @providesModule RichTextEditorUtil\n * @format\n * \n */\n\n'use strict';\n\nvar DraftModifier = require('./DraftModifier');\nvar EditorState = require('./EditorState');\nvar SelectionState = require('./SelectionState');\n\nvar adjustBlockDepthForContentState = require('./adjustBlockDepthForContentState');\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\n getCurrentBlockType: function getCurrentBlockType(editorState) {\n var selection = editorState.getSelection();\n return editorState.getCurrentContent().getBlockForKey(selection.getStartKey()).getType();\n },\n\n getDataObjectForLinkURL: function getDataObjectForLinkURL(uri) {\n return { url: uri.toString() };\n },\n\n handleKeyCommand: function handleKeyCommand(editorState, command) {\n switch (command) {\n case 'bold':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'BOLD');\n case 'italic':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'ITALIC');\n case 'underline':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'UNDERLINE');\n case 'code':\n return RichTextEditorUtil.toggleCode(editorState);\n case 'backspace':\n case 'backspace-word':\n case 'backspace-to-start-of-line':\n return RichTextEditorUtil.onBackspace(editorState);\n case 'delete':\n case 'delete-word':\n case 'delete-to-end-of-block':\n return RichTextEditorUtil.onDelete(editorState);\n default:\n // they may have custom editor commands; ignore those\n return null;\n }\n },\n\n insertSoftNewline: function insertSoftNewline(editorState) {\n var contentState = DraftModifier.insertText(editorState.getCurrentContent(), editorState.getSelection(), '\\n', editorState.getCurrentInlineStyle(), null);\n\n var newEditorState = EditorState.push(editorState, contentState, 'insert-characters');\n\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 if (!selection.isCollapsed() || selection.getAnchorOffset() || selection.getFocusOffset()) {\n return null;\n }\n\n // First, try to remove a preceding atomic block.\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 if (withoutAtomicBlock !== content) {\n return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n }\n }\n\n // If that doesn't succeed, try to remove the current block style.\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\n onDelete: function onDelete(editorState) {\n var selection = editorState.getSelection();\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();\n\n // The cursor is somewhere within the text. Behave normally.\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\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\n onTab: function onTab(event, editorState, maxDepth) {\n var selection = editorState.getSelection();\n var key = selection.getAnchorKey();\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 if (type !== 'unordered-list-item' && type !== 'ordered-list-item') {\n return editorState;\n }\n\n event.preventDefault();\n\n // Only allow indenting one level beyond the block above, and only if\n // the block above is a list item as well.\n var blockAbove = content.getBlockBefore(key);\n if (!blockAbove) {\n return editorState;\n }\n\n var typeAbove = blockAbove.getType();\n if (typeAbove !== 'unordered-list-item' && typeAbove !== 'ordered-list-item') {\n return editorState;\n }\n\n var depth = block.getDepth();\n if (!event.shiftKey && depth === maxDepth) {\n return editorState;\n }\n\n maxDepth = Math.min(blockAbove.getDepth() + 1, maxDepth);\n\n var withAdjustment = adjustBlockDepthForContentState(content, selection, event.shiftKey ? -1 : 1, maxDepth);\n\n return EditorState.push(editorState, withAdjustment, 'adjust-depth');\n },\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;\n\n // 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 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\n return EditorState.push(editorState, DraftModifier.setBlockType(content, target, typeToSet), 'change-block-type');\n },\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();\n\n // 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 if (selection.isCollapsed()) {\n return EditorState.setInlineStyleOverride(editorState, currentStyle.has(inlineStyle) ? currentStyle.remove(inlineStyle) : currentStyle.add(inlineStyle));\n }\n\n // If characters are selected, immediately apply or remove the\n // inline style on the document state itself.\n var content = editorState.getCurrentContent();\n var newContent;\n\n // If the style is already present for the selection range, remove it.\n // Otherwise, apply it.\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\n toggleLink: function toggleLink(editorState, targetSelection, entityKey) {\n var withoutLink = DraftModifier.applyEntity(editorState.getCurrentContent(), targetSelection, entityKey);\n\n return EditorState.push(editorState, withoutLink, 'apply-entity');\n },\n\n /**\n * When a collapsed cursor is at the start of the first styled block, or\n * an empty styled block, changes block to 'unstyled'. Returns null if\n * block or selection does not meet that criteria.\n */\n tryToRemoveBlockStyle: function tryToRemoveBlockStyle(editorState) {\n var selection = editorState.getSelection();\n var offset = selection.getAnchorOffset();\n if (selection.isCollapsed() && offset === 0) {\n var key = selection.getAnchorKey();\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(key);\n\n var firstBlock = content.getFirstBlock();\n if (block.getLength() > 0 && block !== firstBlock) {\n return null;\n }\n\n var type = block.getType();\n var blockBefore = content.getBlockBefore(key);\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 return null;\n }\n};\n\nmodule.exports = RichTextEditorUtil;","/**\n * Copyright (c) 2013-present, 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 * @providesModule splitTextIntoTextBlocks\n * @format\n * \n */\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;","/**\n * Copyright (c) 2013-present, 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 * @providesModule editOnPaste\n * @format\n * \n */\n\n'use strict';\n\nvar BlockMapBuilder = require('./BlockMapBuilder');\nvar CharacterMetadata = require('./CharacterMetadata');\nvar DataTransfer = require('fbjs/lib/DataTransfer');\nvar DraftModifier = require('./DraftModifier');\nvar DraftPasteProcessor = require('./DraftPasteProcessor');\nvar EditorState = require('./EditorState');\nvar RichTextEditorUtil = require('./RichTextEditorUtil');\n\nvar getEntityKeyForSelection = require('./getEntityKeyForSelection');\nvar getTextContentFromFiles = require('./getTextContentFromFiles');\nvar isEventHandled = require('./isEventHandled');\nvar splitTextIntoTextBlocks = require('./splitTextIntoTextBlocks');\n\n/**\n * Paste content.\n */\nfunction editOnPaste(editor, e) {\n e.preventDefault();\n var data = new DataTransfer(e.clipboardData);\n\n // Get files, unless this is likely to be a string the user wants inline.\n if (!data.isRichText()) {\n var files = data.getFiles();\n var defaultFileText = data.getText();\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\n getTextContentFromFiles(files, function ( /*string*/fileText) {\n fileText = fileText || defaultFileText;\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\n var text = DraftPasteProcessor.processText(blocks, character, currentBlockType);\n var fragment = BlockMapBuilder.createFromArray(text);\n\n var withInsertedText = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), fragment);\n\n editor.update(EditorState.push(editorState, withInsertedText, 'insert-fragment'));\n });\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.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 if (data.isRichText() && internalClipboard) {\n if (\n // If the editorKey is present in the pasted HTML, it should be safe to\n // assume this is an internal paste.\n html.indexOf(editor.getEditorKey()) !== -1 ||\n // 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 }\n\n // If there is html paste data, try to parse that.\n if (html) {\n var htmlFragment = DraftPasteProcessor.processHTML(html, editor.props.blockRenderMap);\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 }\n\n // Otherwise, create a new fragment from our pasted text. Also\n // empty the internal clipboard, since it's no longer valid.\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\n var currentBlockType = RichTextEditorUtil.getCurrentBlockType(editorState);\n\n var textFragment = DraftPasteProcessor.processText(textBlocks, character, currentBlockType);\n\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);\n // 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) 2013-present, 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 * @providesModule getDraftEditorSelection\n * @format\n * \n */\n\n'use strict';\n\nvar getDraftEditorSelectionWithNodes = require('./getDraftEditorSelectionWithNodes');\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 getDraftEditorSelection(editorState, root) {\n var selection = global.getSelection();\n\n // No active selection.\n if (selection.rangeCount === 0) {\n return {\n selectionState: editorState.getSelection().set('hasFocus', false),\n needsRecovery: false\n };\n }\n\n return getDraftEditorSelectionWithNodes(editorState, root, selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n}\n\nmodule.exports = getDraftEditorSelection;","/**\n * Copyright (c) 2013-present, 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 * @providesModule editOnSelect\n * @format\n * \n */\n\n'use strict';\n\nvar EditorState = require('./EditorState');\nvar ReactDOM = require('react-dom');\n\nvar getDraftEditorSelection = require('./getDraftEditorSelection');\nvar invariant = require('fbjs/lib/invariant');\n\nfunction editOnSelect(editor) {\n if (editor._blockSelectEvents || editor._latestEditorState !== editor.props.editorState) {\n return;\n }\n\n var editorState = editor.props.editorState;\n var editorNode = ReactDOM.findDOMNode(editor.editorContainer);\n !editorNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing editorNode') : invariant(false) : void 0;\n !(editorNode.firstChild instanceof HTMLElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'editorNode.firstChild is not an HTMLElement') : invariant(false) : void 0;\n var documentSelection = getDraftEditorSelection(editorState, editorNode.firstChild);\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 editor.update(editorState);\n }\n}\n\nmodule.exports = editOnSelect;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftEditorEditHandler\n * @format\n * \n */\n\n'use strict';\n\nvar onBeforeInput = require('./editOnBeforeInput');\nvar onBlur = require('./editOnBlur');\nvar onCompositionStart = require('./editOnCompositionStart');\nvar onCopy = require('./editOnCopy');\nvar onCut = require('./editOnCut');\nvar onDragOver = require('./editOnDragOver');\nvar onDragStart = require('./editOnDragStart');\nvar onFocus = require('./editOnFocus');\nvar onInput = require('./editOnInput');\nvar onKeyDown = require('./editOnKeyDown');\nvar onPaste = require('./editOnPaste');\nvar onSelect = require('./editOnSelect');\n\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};\n\nmodule.exports = DraftEditorEditHandler;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftEditorPlaceholder.react\n * @format\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : 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 = function (_React$Component) {\n _inherits(DraftEditorPlaceholder, _React$Component);\n\n function DraftEditorPlaceholder() {\n _classCallCheck(this, DraftEditorPlaceholder);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n DraftEditorPlaceholder.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return this.props.text !== nextProps.text || this.props.editorState.getSelection().getHasFocus() !== nextProps.editorState.getSelection().getHasFocus();\n };\n\n DraftEditorPlaceholder.prototype.render = function render() {\n var hasFocus = this.props.editorState.getSelection().getHasFocus();\n\n var className = cx({\n 'public/DraftEditorPlaceholder/root': true,\n 'public/DraftEditorPlaceholder/hasFocus': hasFocus\n });\n\n var contentStyle = {\n whiteSpace: 'pre-wrap'\n };\n\n return React.createElement(\n 'div',\n { className: className },\n React.createElement(\n 'div',\n {\n className: cx('public/DraftEditorPlaceholder/inner'),\n id: this.props.accessibilityID,\n style: contentStyle },\n this.props.text\n )\n );\n };\n\n return DraftEditorPlaceholder;\n}(React.Component);\n\nmodule.exports = DraftEditorPlaceholder;","/**\n * Copyright (c) 2013-present, 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 * @providesModule getDefaultKeyBinding\n * @format\n * \n */\n\n'use strict';\n\nvar KeyBindingUtil = require('./KeyBindingUtil');\nvar Keys = require('fbjs/lib/Keys');\nvar UserAgent = require('fbjs/lib/UserAgent');\n\nvar isOSX = UserAgent.isPlatform('Mac OS X');\nvar isWindows = UserAgent.isPlatform('Windows');\n\n// 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.\nvar shouldFixFirefoxMovement = isOSX && UserAgent.isBrowser('Firefox < 29');\n\nvar hasCommandModifier = KeyBindingUtil.hasCommandModifier,\n isCtrlKeyCommand = KeyBindingUtil.isCtrlKeyCommand;\n\n\nfunction shouldRemoveWord(e) {\n return isOSX && e.altKey || isCtrlKeyCommand(e);\n}\n\n/**\n * Get the appropriate undo/redo command for a Z key command.\n */\nfunction getZCommand(e) {\n if (!hasCommandModifier(e)) {\n return null;\n }\n return e.shiftKey ? 'redo' : 'undo';\n}\n\nfunction getDeleteCommand(e) {\n // Allow default \"cut\" behavior for Windows on Shift + Delete.\n if (isWindows && e.shiftKey) {\n return null;\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 return shouldRemoveWord(e) ? 'backspace-word' : 'backspace';\n}\n\n/**\n * Retrieve a bound key command for the given event.\n */\nfunction getDefaultKeyBinding(e) {\n switch (e.keyCode) {\n case 66:\n // B\n return hasCommandModifier(e) ? 'bold' : null;\n case 68:\n // D\n return isCtrlKeyCommand(e) ? 'delete' : null;\n case 72:\n // H\n return isCtrlKeyCommand(e) ? 'backspace' : null;\n case 73:\n // I\n return hasCommandModifier(e) ? 'italic' : null;\n case 74:\n // J\n return hasCommandModifier(e) ? 'code' : null;\n case 75:\n // K\n return !isWindows && isCtrlKeyCommand(e) ? 'secondary-cut' : null;\n case 77:\n // M\n return isCtrlKeyCommand(e) ? 'split-block' : null;\n case 79:\n // O\n return isCtrlKeyCommand(e) ? 'split-block' : null;\n case 84:\n // T\n return isOSX && isCtrlKeyCommand(e) ? 'transpose-characters' : null;\n case 85:\n // U\n return hasCommandModifier(e) ? 'underline' : null;\n case 87:\n // W\n return isOSX && isCtrlKeyCommand(e) ? 'backspace-word' : null;\n case 89:\n // Y\n if (isCtrlKeyCommand(e)) {\n return isWindows ? 'redo' : 'secondary-paste';\n }\n return null;\n case 90:\n // Z\n return getZCommand(e) || null;\n case Keys.RETURN:\n return 'split-block';\n case Keys.DELETE:\n return getDeleteCommand(e);\n case Keys.BACKSPACE:\n return getBackspaceCommand(e);\n // LEFT/RIGHT handlers serve as a workaround for a Firefox bug.\n case Keys.LEFT:\n return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-start-of-block' : null;\n case Keys.RIGHT:\n return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-end-of-block' : null;\n default:\n return null;\n }\n}\n\nmodule.exports = getDefaultKeyBinding;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftEditor.react\n * @format\n * \n * @preventMunge\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar _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; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DefaultDraftBlockRenderMap = require('./DefaultDraftBlockRenderMap');\nvar DefaultDraftInlineStyle = require('./DefaultDraftInlineStyle');\nvar DraftEditorCompositionHandler = require('./DraftEditorCompositionHandler');\nvar DraftEditorContents = require('./DraftEditorContents.react');\nvar DraftEditorDragHandler = require('./DraftEditorDragHandler');\nvar DraftEditorEditHandler = require('./DraftEditorEditHandler');\nvar DraftEditorPlaceholder = require('./DraftEditorPlaceholder.react');\nvar EditorState = require('./EditorState');\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar Scroll = require('fbjs/lib/Scroll');\nvar Style = require('fbjs/lib/Style');\nvar UserAgent = require('fbjs/lib/UserAgent');\n\nvar cx = require('fbjs/lib/cx');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar generateRandomKey = require('./generateRandomKey');\nvar getDefaultKeyBinding = require('./getDefaultKeyBinding');\nvar getScrollPosition = require('fbjs/lib/getScrollPosition');\nvar invariant = require('fbjs/lib/invariant');\nvar nullthrows = require('fbjs/lib/nullthrows');\n\nvar isIE = UserAgent.isBrowser('IE');\n\n// IE does not support the `input` event on contentEditable, so we can't\n// observe spellcheck behavior.\nvar allowSpellCheck = !isIE;\n\n// Define a set of handler objects to correspond to each possible `mode`\n// of editor behavior.\nvar handlerMap = {\n edit: DraftEditorEditHandler,\n composite: DraftEditorCompositionHandler,\n drag: DraftEditorDragHandler,\n cut: null,\n render: null\n};\n\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 */\nvar DraftEditor = function (_React$Component) {\n _inherits(DraftEditor, _React$Component);\n\n function DraftEditor(props) {\n _classCallCheck(this, DraftEditor);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _this.focus = function (scrollPosition) {\n var editorState = _this.props.editorState;\n\n var alreadyHasFocus = editorState.getSelection().getHasFocus();\n var editorNode = ReactDOM.findDOMNode(_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 !(editorNode instanceof HTMLElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n editorNode.focus();\n\n // Restore scroll position\n if (scrollParent === window) {\n window.scrollTo(x, y);\n } else {\n Scroll.setTop(scrollParent, y);\n }\n\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 if (!alreadyHasFocus) {\n _this.update(EditorState.forceSelection(editorState, editorState.getSelection()));\n }\n };\n\n _this.blur = function () {\n var editorNode = ReactDOM.findDOMNode(_this.editor);\n !(editorNode instanceof HTMLElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n editorNode.blur();\n };\n\n _this.setMode = function (mode) {\n _this._handler = handlerMap[mode];\n };\n\n _this.exitCurrentMode = function () {\n _this.setMode('edit');\n };\n\n _this.restoreEditorDOM = function (scrollPosition) {\n _this.setState({ contentsKey: _this.state.contentsKey + 1 }, function () {\n _this.focus(scrollPosition);\n });\n };\n\n _this.setClipboard = function (clipboard) {\n _this._clipboard = clipboard;\n };\n\n _this.getClipboard = function () {\n return _this._clipboard;\n };\n\n _this.update = function (editorState) {\n _this._latestEditorState = editorState;\n _this.props.onChange(editorState);\n };\n\n _this.onDragEnter = function () {\n _this._dragCount++;\n };\n\n _this.onDragLeave = function () {\n _this._dragCount--;\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\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 // See `restoreEditorDOM()`.\n _this.state = { contentsKey: 0 };\n return _this;\n }\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 /**\n * Define proxies that can route events to the current handler.\n */\n\n\n DraftEditor.prototype._buildHandler = function _buildHandler(eventName) {\n var _this2 = this;\n\n return function (e) {\n if (!_this2.props.readOnly) {\n var method = _this2._handler && _this2._handler[eventName];\n method && method(_this2, e);\n }\n };\n };\n\n DraftEditor.prototype._showPlaceholder = function _showPlaceholder() {\n return !!this.props.placeholder && !this.props.editorState.isInCompositionMode() && !this.props.editorState.getCurrentContent().hasText();\n };\n\n DraftEditor.prototype._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\n return React.createElement(DraftEditorPlaceholder, placeHolderProps);\n }\n return null;\n };\n\n DraftEditor.prototype.render = function render() {\n var _this3 = this;\n\n var _props = this.props,\n blockRenderMap = _props.blockRenderMap,\n blockRendererFn = _props.blockRendererFn,\n blockStyleFn = _props.blockStyleFn,\n customStyleFn = _props.customStyleFn,\n customStyleMap = _props.customStyleMap,\n editorState = _props.editorState,\n readOnly = _props.readOnly,\n textAlignment = _props.textAlignment,\n textDirectionality = _props.textDirectionality;\n\n\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\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 };\n\n // The aria-expanded and aria-haspopup properties should only be rendered\n // for a combobox.\n var ariaRole = this.props.role || 'textbox';\n var ariaExpanded = ariaRole === 'combobox' ? !!this.props.ariaExpanded : null;\n\n var editorContentsProps = {\n blockRenderMap: blockRenderMap,\n blockRendererFn: blockRendererFn,\n blockStyleFn: blockStyleFn,\n customStyleMap: _extends({}, DefaultDraftInlineStyle, customStyleMap),\n customStyleFn: customStyleFn,\n editorKey: this._editorKey,\n editorState: editorState,\n key: 'contents' + this.state.contentsKey,\n textDirectionality: textDirectionality\n };\n\n return React.createElement(\n 'div',\n { className: rootClass },\n this._renderPlaceholder(),\n React.createElement(\n 'div',\n {\n className: cx('DraftEditor/editorContainer'),\n ref: function ref(_ref3) {\n return _this3.editorContainer = _ref3;\n } },\n React.createElement(\n 'div',\n {\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.props.ariaDescribedBy || this._placeholderAccessibilityID,\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 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 <font> 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: function ref(_ref2) {\n return _this3.editor = _ref2;\n },\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(DraftEditorContents, editorContentsProps)\n )\n )\n );\n };\n\n DraftEditor.prototype.componentDidMount = function componentDidMount() {\n this.setMode('edit');\n\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 if (isIE) {\n document.execCommand('AutoUrlDetect', false, false);\n }\n };\n\n /**\n * Prevent selection events from affecting the current editor state. This\n * is mostly intended to defend against IE, which fires off `selectionchange`\n * events regardless of whether the selection is set via the browser or\n * programmatically. We only care about selection events that occur because\n * of browser interaction, not re-renders and forced selections.\n */\n\n\n DraftEditor.prototype.componentWillUpdate = function componentWillUpdate(nextProps) {\n this._blockSelectEvents = true;\n this._latestEditorState = nextProps.editorState;\n };\n\n DraftEditor.prototype.componentDidUpdate = function componentDidUpdate() {\n this._blockSelectEvents = false;\n this._latestCommittedEditorState = this.props.editorState;\n };\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 /**\n * Used via `this.setMode(...)`.\n *\n * Set the behavior mode for the editor component. This switches the current\n * handler module to ensure that DOM events are managed appropriately for\n * the active mode.\n */\n\n\n /**\n * Used via `this.restoreEditorDOM()`.\n *\n * Force a complete re-render of the DraftEditorContents based on the current\n * EditorState. This is useful when we know we are going to lose control of\n * the DOM state (cut command, IME) and we want to make sure that\n * reconciliation occurs on a version of the DOM that is synchronized with\n * our EditorState.\n */\n\n\n /**\n * Used via `this.setClipboard(...)`.\n *\n * Set the clipboard state for a cut/copy event.\n */\n\n\n /**\n * Used via `this.getClipboard()`.\n *\n * Retrieve the clipboard state for a cut/copy event.\n */\n\n\n /**\n * Used via `this.update(...)`.\n *\n * Propagate a new `EditorState` object to higher-level components. This is\n * the method by which event handlers inform the `DraftEditor` component of\n * state changes. A component that composes a `DraftEditor` **must** provide\n * an `onChange` prop to receive state updates passed along from this\n * function.\n */\n\n\n /**\n * Used in conjunction with `onDragLeave()`, by counting the number of times\n * a dragged element enters and leaves the editor (or any of its children),\n * to determine when the dragged element absolutely leaves the editor.\n */\n\n\n /**\n * See `onDragEnter()`.\n */\n\n\n return DraftEditor;\n}(React.Component);\n\nDraftEditor.defaultProps = {\n blockRenderMap: DefaultDraftBlockRenderMap,\n blockRendererFn: emptyFunction.thatReturnsNull,\n blockStyleFn: emptyFunction.thatReturns(''),\n keyBindingFn: getDefaultKeyBinding,\n readOnly: false,\n spellCheck: false,\n stripPastedStyles: false\n};\n\n\nmodule.exports = DraftEditor;","/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftStringKey\n * @format\n * \n */\n\n'use strict';\n\nvar DraftStringKey = {\n stringify: function stringify(key) {\n return '_' + String(key);\n },\n\n unstringify: function unstringify(key) {\n return key.slice(1);\n }\n};\n\nmodule.exports = DraftStringKey;","/**\n * Copyright (c) 2013-present, 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 * @providesModule encodeEntityRanges\n * @format\n * \n */\n\n'use strict';\n\nvar DraftStringKey = require('./DraftStringKey');\nvar UnicodeUtils = require('fbjs/lib/UnicodeUtils');\n\nvar strlen = UnicodeUtils.strlen;\n\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 ( /*number*/start, /*number*/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) 2013-present, 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 * @providesModule encodeInlineStyleRanges\n * @format\n * \n */\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};\nvar isTruthy = function isTruthy(a) {\n return !!a;\n};\nvar EMPTY_ARRAY = [];\n\n/**\n * Helper function for getting encoded styles for each inline style. Convert\n * to UTF-8 character counts for storage.\n */\nfunction getEncodedInlinesForType(block, styleList, styleToEncode) {\n var ranges = [];\n\n // Obtain an array with ranges for only the specified style.\n var filteredInlines = styleList.map(function (style) {\n return style.has(styleToEncode);\n }).toList();\n\n findRangesImmutable(filteredInlines, areEqual,\n // 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\n return ranges;\n}\n\n/*\n * Retrieve the encoded arrays of inline styles, with each individual style\n * treated separately.\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\n return Array.prototype.concat.apply(EMPTY_ARRAY, ranges.toJS());\n}\n\nmodule.exports = encodeInlineStyleRanges;","/**\n * Copyright (c) 2013-present, 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 * @providesModule convertFromDraftStateToRaw\n * @format\n * \n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar _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; };\n\nvar ContentBlock = require('./ContentBlock');\nvar ContentBlockNode = require('./ContentBlockNode');\nvar DraftStringKey = require('./DraftStringKey');\n\nvar encodeEntityRanges = require('./encodeEntityRanges');\nvar encodeInlineStyleRanges = require('./encodeInlineStyleRanges');\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\n var parentKey = block.getParentKey();\n var rawBlock = blockCacheRef[block.getKey()] = _extends({}, 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\n\n var rawBlocks = [];\n\n var blockCacheRef = {};\n var entityCacheRef = {};\n var entityStorageKey = 0;\n\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);\n // Stringify to maintain order of otherwise numeric keys.\n var stringifiedEntityKey = DraftStringKey.stringify(entityKey);\n // This makes this function resilient to two entities\n // erroneously having the same key\n if (entityCacheRef[stringifiedEntityKey]) {\n return;\n }\n entityCacheRef[stringifiedEntityKey] = entityKey;\n // 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 entityMap[stringifiedEntityKey] = '' + entityStorageKey;\n entityStorageKey++;\n });\n\n insertRawBlock(block, entityMap, rawBlocks, blockCacheRef);\n });\n\n return {\n blocks: rawBlocks,\n entityMap: entityMap\n };\n};\n\n// Flip storage map so that our storage keys map to global\n// DraftEntity keys.\nvar encodeRawEntityMap = function encodeRawEntityMap(contentState, rawState) {\n var blocks = rawState.blocks,\n entityMap = rawState.entityMap;\n\n\n var rawEntityMap = {};\n\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\n return {\n blocks: blocks,\n entityMap: rawEntityMap\n };\n};\n\nvar convertFromDraftStateToRaw = function convertFromDraftStateToRaw(contentState) {\n var rawDraftContentState = {\n entityMap: {},\n blocks: []\n };\n\n // add blocks\n rawDraftContentState = encodeRawBlocks(contentState, rawDraftContentState);\n\n // add entities\n rawDraftContentState = encodeRawEntityMap(contentState, rawDraftContentState);\n\n return rawDraftContentState;\n};\n\nmodule.exports = convertFromDraftStateToRaw;","'use strict';\n\nvar _assign = require('object-assign');\n\nvar _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; };\n\n/**\n * Copyright (c) 2013-present, 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 * @providesModule DraftTreeAdapter\n * @format\n * \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\nvar invariant = require('fbjs/lib/invariant');\n\nvar traverseInDepthOrder = function traverseInDepthOrder(blocks, fn) {\n var stack = [].concat(blocks).reverse();\n while (stack.length) {\n var _block = stack.pop();\n\n fn(_block);\n\n var children = _block.children;\n\n !Array.isArray(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tree raw block') : invariant(false) : void 0;\n\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 var type = block.type;\n\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 ? _extends({}, child, { depth: (block.depth || 0) + 1 }) : child;\n });\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 */\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\n var transformedBlocks = [];\n\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 = _extends({}, block);\n\n if (isListBlock(block)) {\n newBlock.depth = newBlock.depth || 0;\n addDepthToChildren(block);\n }\n\n delete newBlock.children;\n\n transformedBlocks.push(newBlock);\n });\n\n draftTreeState.blocks = transformedBlocks;\n\n return _extends({}, draftTreeState, {\n blocks: transformedBlocks\n });\n },\n\n\n /**\n * Converts from draft raw state to tree draft state\n */\n fromRawStateToRawTreeState: function fromRawStateToRawTreeState(draftState) {\n var lastListDepthCacheRef = {};\n var transformedBlocks = [];\n\n draftState.blocks.forEach(function (block) {\n var isList = isListBlock(block);\n var depth = block.depth || 0;\n var treeBlock = _extends({}, block, {\n children: []\n });\n\n if (!isList) {\n // reset the cache path\n lastListDepthCacheRef = {};\n transformedBlocks.push(treeBlock);\n return;\n }\n\n // update our depth cache reference path\n lastListDepthCacheRef[depth] = treeBlock;\n\n // if we are greater than zero we must have seen a parent already\n if (depth > 0) {\n var parent = lastListDepthCacheRef[depth - 1];\n\n !parent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid depth for RawDraftContentBlock') : invariant(false) : void 0;\n\n // push nested list blocks\n parent.children.push(treeBlock);\n return;\n }\n\n // push root list blocks\n transformedBlocks.push(treeBlock);\n });\n\n return _extends({}, draftState, {\n blocks: transformedBlocks\n });\n }\n};\n\nmodule.exports = DraftTreeAdapter;","/**\n * Copyright (c) 2013-present, 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 * @providesModule createCharacterList\n * @format\n * \n */\n\n'use strict';\n\nvar CharacterMetadata = require('./CharacterMetadata');\nvar Immutable = require('immutable');\n\nvar List = Immutable.List;\n\n\nfunction createCharacterList(inlineStyles, entities) {\n var characterArray = inlineStyles.map(function (style, ii) {\n var entity = entities[ii];\n return CharacterMetadata.create({ style: style, entity: entity });\n });\n return List(characterArray);\n}\n\nmodule.exports = createCharacterList;","/**\n * Copyright (c) 2013-present, 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 * @providesModule decodeEntityRanges\n * @format\n * \n */\n\n'use strict';\n\nvar UnicodeUtils = require('fbjs/lib/UnicodeUtils');\n\nvar substr = UnicodeUtils.substr;\n\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 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 for (var ii = start; ii < end; ii++) {\n entities[ii] = range.key;\n }\n });\n }\n return entities;\n}\n\nmodule.exports = decodeEntityRanges;","/**\n * Copyright (c) 2013-present, 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 * @providesModule decodeInlineStyleRanges\n * @format\n * \n */\n\n'use strict';\n\nvar _require = require('immutable'),\n OrderedSet = _require.OrderedSet;\n\nvar UnicodeUtils = require('fbjs/lib/UnicodeUtils');\n\nvar substr = UnicodeUtils.substr;\n\n\nvar EMPTY_SET = OrderedSet();\n\n/**\n * Convert to native JavaScript string lengths to determine ranges.\n */\nfunction decodeInlineStyleRanges(text, ranges) {\n var styles = Array(text.length).fill(EMPTY_SET);\n if (ranges) {\n ranges.forEach(function ( /*object*/range) {\n var cursor = substr(text, 0, range.offset).length;\n var end = cursor + substr(text, range.offset, range.length).length;\n while (cursor < end) {\n styles[cursor] = styles[cursor].add(range.style);\n cursor++;\n }\n });\n }\n return styles;\n}\n\nmodule.exports = decodeInlineStyleRanges;","/**\n * Copyright (c) 2013-present, 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 * @providesModule convertFromRawToDraftState\n * @format\n * \n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar _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; };\n\nvar ContentBlock = require('./ContentBlock');\nvar ContentBlockNode = require('./ContentBlockNode');\nvar ContentState = require('./ContentState');\nvar DraftEntity = require('./DraftEntity');\nvar DraftFeatureFlags = require('./DraftFeatureFlags');\nvar DraftTreeAdapter = require('./DraftTreeAdapter');\nvar Immutable = require('immutable');\nvar SelectionState = require('./SelectionState');\n\nvar createCharacterList = require('./createCharacterList');\nvar decodeEntityRanges = require('./decodeEntityRanges');\nvar decodeInlineStyleRanges = require('./decodeInlineStyleRanges');\nvar generateRandomKey = require('./generateRandomKey');\nvar invariant = require('fbjs/lib/invariant');\n\nvar experimentalTreeDataSupport = DraftFeatureFlags.draft_tree_data_support;\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedMap = Immutable.OrderedMap;\n\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\n\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\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\n\n var entityRanges = rawEntityRanges || [];\n var inlineStyleRanges = rawInlineStyleRanges || [];\n\n // Translate entity range keys to the DraftEntity map.\n return createCharacterList(decodeInlineStyleRanges(text, inlineStyleRanges), decodeEntityRanges(text, entityRanges.filter(function (range) {\n return entityMap.hasOwnProperty(range.key);\n }).map(function (range) {\n return _extends({}, range, { key: entityMap[range.key] });\n })));\n};\n\nvar addKeyIfMissing = function addKeyIfMissing(block) {\n return _extends({}, block, {\n key: block.key || generateRandomKey()\n });\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 */\nvar updateNodeStack = function updateNodeStack(stack, nodes, parentRef) {\n var nodesWithParentRef = nodes.map(function (block) {\n return _extends({}, block, {\n parentRef: parentRef\n });\n });\n\n // since we pop nodes from the stack we need to insert them in reverse\n return stack.concat(nodesWithParentRef.reverse());\n};\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 */\nvar decodeContentBlockNodes = function decodeContentBlockNodes(blocks, entityMap) {\n return blocks\n // 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;\n\n // ensure children have valid keys to enable sibling links\n var children = block.children.map(addKeyIfMissing);\n\n // root level nodes\n var contentBlockNode = new ContentBlockNode(_extends({}, 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 }));\n\n // push root node to blockMap\n blockMap = blockMap.set(contentBlockNode.getKey(), contentBlockNode);\n\n // this stack is used to ensure we visit all nodes respecting depth ordering\n var stack = updateNodeStack([], children, contentBlockNode);\n\n // start computing children nodes\n while (stack.length > 0) {\n // we pop from the stack and start processing this node\n var node = stack.pop();\n\n // parentRef already points to a converted ContentBlockNode\n var parentRef = node.parentRef;\n var siblings = parentRef.getChildKeys();\n var _index = siblings.indexOf(node.key);\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 }\n\n // ensure children have valid keys to enable sibling links\n var _children = node.children.map(addKeyIfMissing);\n\n var _contentBlockNode = new ContentBlockNode(_extends({}, 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 }));\n\n // push node to blockMap\n blockMap = blockMap.set(_contentBlockNode.getKey(), _contentBlockNode);\n\n // this stack is used to ensure we visit all nodes respecting depth ordering\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 = Array.isArray(rawState.blocks[0].children);\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 return decodeContentBlockNodes(rawBlocks, entityMap);\n};\n\nvar decodeRawEntityMap = function decodeRawEntityMap(rawState) {\n var rawEntityMap = rawState.entityMap;\n\n var entityMap = {};\n\n // TODO: Update this once we completely remove DraftEntity\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;\n\n // get the key reference to created entity\n\n entityMap[rawEntityKey] = DraftEntity.__create(type, mutability, data || {});\n });\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;\n\n // decode entities\n var entityMap = decodeRawEntityMap(rawState);\n\n // decode blockMap\n var blockMap = decodeRawBlocks(rawState, entityMap);\n\n // create initial selection\n var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n\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) 2013-present, 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 * @providesModule getRangeBoundingClientRect\n * @format\n * \n */\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 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) 2013-present, 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 * @providesModule getVisibleSelectionRect\n * @format\n * \n */\n\n'use strict';\n\nvar getRangeBoundingClientRect = require('./getRangeBoundingClientRect');\n\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 */\nfunction getVisibleSelectionRect(global) {\n var selection = global.getSelection();\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;\n\n // 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;","/**\n * Copyright (c) 2013-present, 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 * @providesModule Draft\n * @format\n * \n */\n\n'use strict';\n\nvar AtomicBlockUtils = require('./AtomicBlockUtils');\nvar BlockMapBuilder = require('./BlockMapBuilder');\nvar CharacterMetadata = require('./CharacterMetadata');\nvar CompositeDraftDecorator = require('./CompositeDraftDecorator');\nvar ContentBlock = require('./ContentBlock');\nvar ContentState = require('./ContentState');\nvar DefaultDraftBlockRenderMap = require('./DefaultDraftBlockRenderMap');\nvar DefaultDraftInlineStyle = require('./DefaultDraftInlineStyle');\nvar DraftEditor = require('./DraftEditor.react');\nvar DraftEditorBlock = require('./DraftEditorBlock.react');\nvar DraftEntity = require('./DraftEntity');\nvar DraftModifier = require('./DraftModifier');\nvar DraftEntityInstance = require('./DraftEntityInstance');\nvar EditorState = require('./EditorState');\nvar KeyBindingUtil = require('./KeyBindingUtil');\nvar RichTextEditorUtil = require('./RichTextEditorUtil');\nvar SelectionState = require('./SelectionState');\n\nvar convertFromDraftStateToRaw = require('./convertFromDraftStateToRaw');\nvar convertFromHTMLToContentBlocks = require('./convertFromHTMLToContentBlocks');\nvar convertFromRawToDraftState = require('./convertFromRawToDraftState');\nvar generateRandomKey = require('./generateRandomKey');\nvar getDefaultKeyBinding = require('./getDefaultKeyBinding');\nvar getVisibleSelectionRect = require('./getVisibleSelectionRect');\n\nvar DraftPublic = {\n Editor: DraftEditor,\n EditorBlock: DraftEditorBlock,\n EditorState: EditorState,\n\n CompositeDecorator: CompositeDraftDecorator,\n Entity: DraftEntity,\n EntityInstance: DraftEntityInstance,\n\n BlockMapBuilder: BlockMapBuilder,\n CharacterMetadata: CharacterMetadata,\n ContentBlock: ContentBlock,\n ContentState: ContentState,\n SelectionState: SelectionState,\n\n AtomicBlockUtils: AtomicBlockUtils,\n KeyBindingUtil: KeyBindingUtil,\n Modifier: DraftModifier,\n RichUtils: RichTextEditorUtil,\n\n DefaultDraftBlockRenderMap: DefaultDraftBlockRenderMap,\n DefaultDraftInlineStyle: DefaultDraftInlineStyle,\n\n convertFromHTML: convertFromHTMLToContentBlocks,\n convertFromRaw: convertFromRawToDraftState,\n convertToRaw: convertFromDraftStateToRaw,\n genKey: generateRandomKey,\n getDefaultKeyBinding: getDefaultKeyBinding,\n getVisibleSelectionRect: getVisibleSelectionRect\n};\n\nmodule.exports = DraftPublic;","/**\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}));","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"draft-js\"),require(\"immutable\")):\"function\"==typeof define&&define.amd?define([\"draft-js\",\"immutable\"],t):\"object\"==typeof exports?exports.draftjsUtils=t(require(\"draft-js\"),require(\"immutable\")):e.draftjsUtils=t(e[\"draft-js\"],e.immutable)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=3)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";function r(e){var t=e.getSelection(),n=e.getCurrentContent(),r=t.getStartKey(),o=t.getEndKey(),i=n.getBlockMap();return i.toSeq().skipUntil(function(e,t){return t===r}).takeUntil(function(e,t){return t===o}).concat([[o,i.get(o)]])}function o(e){return r(e).toList()}function i(e){if(e)return o(e).get(0)}function l(e){if(e){var t=i(e),n=e.getCurrentContent(),r=n.getBlockMap().toSeq().toList(),o=0;if(r.forEach(function(e,n){e.get(\"key\")===t.get(\"key\")&&(o=n-1)}),o>-1)return r.get(o)}}function c(e){return e?e.getCurrentContent().getBlockMap().toList():new v.List}function a(e){var t=o(e);if(!t.some(function(e){return e.type!==t.get(0).type}))return t.get(0).type}function f(e){var t=p.RichUtils.tryToRemoveBlockStyle(e);return t?p.EditorState.push(e,t,\"change-block-type\"):e}function u(e){var t=\"\",n=e.getSelection(),r=n.getAnchorOffset(),i=n.getFocusOffset(),l=o(e);if(l.size>0){if(n.getIsBackward()){var c=r;r=i,i=c}for(var a=0;a<l.size;a+=1){var f=0===a?r:0,u=a===l.size-1?i:l.get(a).getText().length;t+=l.get(a).getText().slice(f,u)}}return t}function s(e){var t=e.getCurrentContent(),n=e.getSelection(),r=p.Modifier.removeRange(t,n,\"forward\"),o=r.getSelectionAfter(),i=r.getBlockForKey(o.getStartKey());return r=p.Modifier.insertText(r,o,\"\\n\",i.getInlineStyleAt(o.getStartOffset()),null),p.EditorState.push(e,r,\"insert-fragment\")}function g(e){var t=p.Modifier.splitBlock(e.getCurrentContent(),e.getSelection());return f(p.EditorState.push(e,t,\"split-block\"))}function d(e){var t=e.getCurrentContent().getBlockMap().toList(),n=e.getSelection().merge({anchorKey:t.first().get(\"key\"),anchorOffset:0,focusKey:t.last().get(\"key\"),focusOffset:t.last().getLength()}),r=p.Modifier.removeRange(e.getCurrentContent(),n,\"forward\");return p.EditorState.push(e,r,\"remove-range\")}function S(e,t){var n=p.Modifier.setBlockData(e.getCurrentContent(),e.getSelection(),t);return p.EditorState.push(e,n,\"change-block-data\")}function y(e){var t=new v.Map({}),n=o(e);if(n&&n.size>0)for(var r=0;r<n.size;r+=1){var i=function(e){var r=n.get(e).getData();if(!r||0===r.size)return t=t.clear(),\"break\";if(0===e)t=r;else if(t.forEach(function(e,n){r.get(n)&&r.get(n)===e||(t=t.delete(n))}),0===t.size)return t=t.clear(),\"break\"}(r);if(\"break\"===i)break}return t}Object.defineProperty(t,\"__esModule\",{value:!0}),t.blockRenderMap=void 0,t.getSelectedBlocksMap=r,t.getSelectedBlocksList=o,t.getSelectedBlock=i,t.getBlockBeforeSelectedBlock=l,t.getAllBlocks=c,t.getSelectedBlocksType=a,t.removeSelectedBlocksStyle=f,t.getSelectionText=u,t.addLineBreakRemovingSelection=s,t.insertNewUnstyledBlock=g,t.clearEditorContent=d,t.setBlockData=S,t.getSelectedBlocksMetadata=y;var p=n(0),v=n(6),k=(0,v.Map)({code:{element:\"pre\"}});t.blockRenderMap=p.DefaultDraftBlockRenderMap.merge(k)},function(e,t,n){\"use strict\";function r(e){if(e){var t=e.getType();return\"unordered-list-item\"===t||\"ordered-list-item\"===t}return!1}function o(e,t,n){var r=e.getSelection(),o=e.getCurrentContent(),i=o.getBlockMap(),l=(0,c.getSelectedBlocksMap)(e).map(function(e){var r=e.getDepth()+t;return r=Math.max(0,Math.min(r,n)),e.set(\"depth\",r)});return i=i.merge(l),o.merge({blockMap:i,selectionBefore:r,selectionAfter:r})}function i(e,t,n){var r=e.getSelection(),i=void 0;i=r.getIsBackward()?r.getFocusKey():r.getAnchorKey();var c=e.getCurrentContent(),a=c.getBlockForKey(i),f=a.getType();if(\"unordered-list-item\"!==f&&\"ordered-list-item\"!==f)return e;var u=c.getBlockBefore(i);if(!u)return e;if(u.getType()!==f)return e;var s=a.getDepth();if(1===t&&s===n)return e;var g=Math.min(u.getDepth()+1,n),d=o(e,t,g);return l.EditorState.push(e,d,\"adjust-depth\")}Object.defineProperty(t,\"__esModule\",{value:!0}),t.isListBlock=r,t.changeDepth=i;var l=n(0),c=n(1)},function(e,t,n){e.exports=n(4)},function(e,t,n){\"use strict\";var r=n(5),o=n(1),i=n(7),l=function(e){return e&&e.__esModule?e:{default:e}}(i),c=n(2);e.exports={getSelectedBlocksMap:o.getSelectedBlocksMap,getSelectedBlocksList:o.getSelectedBlocksList,getSelectedBlock:o.getSelectedBlock,getBlockBeforeSelectedBlock:o.getBlockBeforeSelectedBlock,getAllBlocks:o.getAllBlocks,getSelectedBlocksType:o.getSelectedBlocksType,removeSelectedBlocksStyle:o.removeSelectedBlocksStyle,getSelectionText:o.getSelectionText,addLineBreakRemovingSelection:o.addLineBreakRemovingSelection,insertNewUnstyledBlock:o.insertNewUnstyledBlock,clearEditorContent:o.clearEditorContent,setBlockData:o.setBlockData,getSelectedBlocksMetadata:o.getSelectedBlocksMetadata,blockRenderMap:o.blockRenderMap,getEntityRange:r.getEntityRange,getCustomStyleMap:r.getCustomStyleMap,toggleCustomInlineStyle:r.toggleCustomInlineStyle,getSelectionEntity:r.getSelectionEntity,extractInlineStyle:r.extractInlineStyle,removeAllInlineStyles:r.removeAllInlineStyles,getSelectionInlineStyle:r.getSelectionInlineStyle,getSelectionCustomInlineStyle:r.getSelectionCustomInlineStyle,handleNewLine:l.default,isListBlock:c.isListBlock,changeDepth:c.changeDepth}},function(e,t,n){\"use strict\";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){var t=e.getSelection();if(t.isCollapsed()){var n={},r=e.getCurrentInlineStyle().toList().toJS();if(r)return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(e){n[e]=r.indexOf(e)>=0}),n}var o=t.getStartOffset(),i=t.getEndOffset(),l=(0,p.getSelectedBlocksList)(e);if(l.size>0){var c=function(){for(var e={BOLD:!0,ITALIC:!0,UNDERLINE:!0,STRIKETHROUGH:!0,CODE:!0,SUPERSCRIPT:!0,SUBSCRIPT:!0},t=0;t<l.size;t+=1){var n=0===t?o:0,r=t===l.size-1?i:l.get(t).getText().length;n===r&&0===n?(n=1,r=2):n===r&&(n-=1);for(var c=n;c<r;c+=1)!function(n){var r=l.get(t).getInlineStyleAt(n);[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(t){e[t]=e[t]&&r.get(t)===t})}(c)}return{v:e}}();if(\"object\"===(void 0===c?\"undefined\":S(c)))return c.v}return{}}function i(e){var t=void 0,n=e.getSelection(),r=n.getStartOffset(),o=n.getEndOffset();r===o&&0===r?o=1:r===o&&(r-=1);for(var i=(0,p.getSelectedBlock)(e),l=r;l<o;l+=1){var c=i.getEntityAt(l);if(!c){t=void 0;break}if(l===r)t=c;else if(t!==c){t=void 0;break}}return t}function l(e,t){var n=(0,p.getSelectedBlock)(e),r=void 0;return n.findEntityRanges(function(e){return e.get(\"entity\")===t},function(e,t){r={start:e,end:t,text:n.get(\"text\").slice(e,t)}}),r}function c(e,t,n){var r=e.getSelection(),o=Object.keys(v[t]).reduce(function(e,t){return y.Modifier.removeInlineStyle(e,r,t)},e.getCurrentContent()),i=y.EditorState.push(e,o,\"changeinline-style\"),l=e.getCurrentInlineStyle();if(r.isCollapsed()&&(i=l.reduce(function(e,t){return y.RichUtils.toggleInlineStyle(e,t)},i)),\"SUPERSCRIPT\"===t||\"SUBSCRIPT\"==t)l.has(n)||(i=y.RichUtils.toggleInlineStyle(i,n));else{var c=\"bgcolor\"===t?\"backgroundColor\":t;l.has(c+\"-\"+n)||(i=y.RichUtils.toggleInlineStyle(i,t.toLowerCase()+\"-\"+n),k(t,c,n))}return i}function a(e){if(e){e.getCurrentContent().getBlockMap().map(function(e){return e.get(\"characterList\")}).toList().flatten().forEach(function(e){e&&0===e.indexOf(\"color-\")?k(\"color\",\"color\",e.substr(6)):e&&0===e.indexOf(\"bgcolor-\")?k(\"bgcolor\",\"backgroundColor\",e.substr(8)):e&&0===e.indexOf(\"fontsize-\")?k(\"fontSize\",\"fontSize\",+e.substr(9)):e&&0===e.indexOf(\"fontfamily-\")&&k(\"fontFamily\",\"fontFamily\",e.substr(11))})}}function f(e,t,n){var r=e.getInlineStyleAt(n).toList(),o=r.filter(function(e){return e.startsWith(t.toLowerCase())});if(o&&o.size>0)return o.get(0)}function u(e,t){var n=e.getCurrentInlineStyle().toList(),r=n.filter(function(e){return e.startsWith(t.toLowerCase())});if(r&&r.size>0)return r.get(0)}function s(e,t){if(e&&t&&t.length>0){var n=function(){var n=e.getSelection(),r={};if(n.isCollapsed())return t.forEach(function(t){r[t]=u(e,t)}),{v:r};var o=n.getStartOffset(),i=n.getEndOffset(),l=(0,p.getSelectedBlocksList)(e);if(l.size>0){for(var c=0;c<l.size;c+=1)!function(e){var n=0===e?o:0,c=e===l.size-1?i:l.get(e).getText().length;n===c&&0===n?(n=1,c=2):n===c&&(n-=1);for(var a=n;a<c;a+=1)!function(o){o===n?t.forEach(function(t){r[t]=f(l.get(e),t,o)}):t.forEach(function(t){r[t]&&r[t]!==f(l.get(e),t,o)&&(r[t]=void 0)})}(a)}(c);return{v:r}}}();if(\"object\"===(void 0===n?\"undefined\":S(n)))return n.v}return{}}function g(e){var t=e.getCurrentInlineStyle(),n=e.getCurrentContent();return t.forEach(function(t){n=y.Modifier.removeInlineStyle(n,e.getSelection(),t)}),y.EditorState.push(e,n,\"change-inline-style\")}Object.defineProperty(t,\"__esModule\",{value:!0}),t.getCustomStyleMap=void 0;var d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},S=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};t.getSelectionInlineStyle=o,t.getSelectionEntity=i,t.getEntityRange=l,t.toggleCustomInlineStyle=c,t.extractInlineStyle=a,t.getSelectionCustomInlineStyle=s,t.removeAllInlineStyles=g;var y=n(0),p=n(1),v={color:{},bgcolor:{},fontSize:{},fontFamily:{},CODE:{fontFamily:\"monospace\",wordWrap:\"break-word\",background:\"#f1f1f1\",borderRadius:3,padding:\"1px 3px\"},SUPERSCRIPT:{fontSize:11,position:\"relative\",top:-8,display:\"inline-flex\"},SUBSCRIPT:{fontSize:11,position:\"relative\",bottom:-8,display:\"inline-flex\"}},k=function(e,t,n){v[e][e.toLowerCase()+\"-\"+n]=r({},\"\"+t,n)};t.getCustomStyleMap=function(){return d({},v.color,v.bgcolor,v.fontSize,v.fontFamily,{CODE:v.CODE,SUPERSCRIPT:v.SUPERSCRIPT,SUBSCRIPT:v.SUBSCRIPT})}},function(e,n){e.exports=t},function(e,t,n){\"use strict\";function r(e){var t=e.getSelection();if(t.isCollapsed()){var n=e.getCurrentContent(),r=t.getStartKey(),o=n.getBlockForKey(r);if(!(0,a.isListBlock)(o)&&\"unstyled\"!==o.getType()&&o.getLength()===t.getStartOffset())return(0,c.insertNewUnstyledBlock)(e);if((0,a.isListBlock)(o)&&0===o.getLength()){var i=o.getDepth();if(0===i)return(0,c.removeSelectedBlocksStyle)(e);if(i>0)return(0,a.changeDepth)(e,-1,i)}}}function o(e){return 13===e.which&&(e.getModifierState(\"Shift\")||e.getModifierState(\"Alt\")||e.getModifierState(\"Control\"))}function i(e,t){if(o(t)){return e.getSelection().isCollapsed()?l.RichUtils.insertSoftNewline(e):(0,c.addLineBreakRemovingSelection)(e)}return r(e)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=i;var l=n(0),c=n(1),a=n(2)}])});","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","/**\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\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\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = updateMutation;\n\nfunction updateMutation(mutation, originalOffset, originalLength, newLength, prefixLength, suffixLength) {\n // three cases we can reasonably adjust - disjoint mutations that\n // happen later on where the offset will need to be changed,\n // mutations that completely contain the new one where we can adjust\n // the length, and mutations that occur partially within the new one.\n var lengthDiff = newLength - originalLength;\n var mutationAfterChange = originalOffset + originalLength <= mutation.offset;\n\n if (mutationAfterChange) {\n return Object.assign({}, mutation, {\n offset: mutation.offset + lengthDiff\n });\n }\n\n var mutationContainsChange = originalOffset >= mutation.offset && originalOffset + originalLength <= mutation.offset + mutation.length;\n\n if (mutationContainsChange) {\n return Object.assign({}, mutation, {\n length: mutation.length + lengthDiff\n });\n }\n\n var mutationWithinPrefixChange = mutation.offset >= originalOffset && mutation.offset + mutation.length <= originalOffset + originalLength && prefixLength > 0;\n\n if (mutationWithinPrefixChange) {\n return Object.assign({}, mutation, {\n offset: mutation.offset + prefixLength\n });\n }\n\n var mutationContainsPrefix = mutation.offset < originalOffset && mutation.offset + mutation.length <= originalOffset + originalLength && mutation.offset + mutation.length > originalOffset && prefixLength > 0;\n\n if (mutationContainsPrefix) {\n return [Object.assign({}, mutation, {\n length: originalOffset - mutation.offset\n }), Object.assign({}, mutation, {\n offset: originalOffset + prefixLength,\n length: mutation.offset - originalOffset + mutation.length\n })];\n }\n\n var mutationContainsSuffix = mutation.offset >= originalOffset && mutation.offset + mutation.length > originalOffset + originalLength && originalOffset + originalLength > mutation.offset && suffixLength > 0;\n\n if (mutationContainsSuffix) {\n return [Object.assign({}, mutation, {\n offset: mutation.offset + prefixLength,\n length: originalOffset + originalLength - mutation.offset\n }), Object.assign({}, mutation, {\n offset: originalOffset + originalLength + prefixLength + suffixLength,\n length: mutation.offset + mutation.length - (originalOffset + originalLength)\n })];\n }\n\n return mutation;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _default = function _default(r1, r2) {\n if (r1.offset === r2.offset) {\n return r2.length - r1.length;\n }\n\n return r1.offset - r2.offset;\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _updateMutation = _interopRequireDefault(require(\"./util/updateMutation\"));\n\nvar _rangeSort = _interopRequireDefault(require(\"./util/rangeSort\"));\n\nvar ENTITY_MAP = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '`': '&#x60;',\n '\\n': '<br/>'\n};\n\nvar _default = function _default(block) {\n var blockText = (0, _toConsumableArray2[\"default\"])(block.text);\n var entities = block.entityRanges.sort(_rangeSort[\"default\"]);\n var styles = block.inlineStyleRanges.sort(_rangeSort[\"default\"]);\n var resultText = '';\n\n var _loop = function _loop(index) {\n var _char = blockText[index];\n\n if (ENTITY_MAP[_char] !== undefined) {\n var encoded = ENTITY_MAP[_char];\n var resultIndex = (0, _toConsumableArray2[\"default\"])(resultText).length;\n resultText += encoded;\n\n var updateForChar = function updateForChar(mutation) {\n return (0, _updateMutation[\"default\"])(mutation, resultIndex, _char.length, encoded.length, 0, 0);\n };\n\n entities = entities.map(updateForChar);\n styles = styles.map(updateForChar);\n } else {\n resultText += _char;\n }\n };\n\n for (var index = 0; index < blockText.length; index++) {\n _loop(index);\n }\n\n return Object.assign({}, block, {\n text: resultText,\n inlineStyleRanges: styles,\n entityRanges: entities\n });\n};\n\nexports[\"default\"] = _default;","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = splitReactElement;\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _server = _interopRequireDefault(require(\"react-dom/server\"));\n\n// see http://w3c.github.io/html/syntax.html#writing-html-documents-elements\nvar VOID_TAGS = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'];\n\nfunction splitReactElement(element) {\n if (VOID_TAGS.indexOf(element.type) !== -1) {\n return _server[\"default\"].renderToStaticMarkup(element);\n }\n\n var tags = _server[\"default\"].renderToStaticMarkup(_react[\"default\"].cloneElement(element, {}, '\\r')).split('\\r');\n\n (0, _invariant[\"default\"])(tags.length > 1, \"convertToHTML: Element of type \".concat(element.type, \" must render children\"));\n (0, _invariant[\"default\"])(tags.length < 3, \"convertToHTML: Element of type \".concat(element.type, \" cannot use carriage return character\"));\n return {\n start: tags[0],\n end: tags[1]\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getElementHTML;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _server = _interopRequireDefault(require(\"react-dom/server\"));\n\nvar _splitReactElement = _interopRequireDefault(require(\"./splitReactElement\"));\n\nfunction hasChildren(element) {\n return _react[\"default\"].isValidElement(element) && _react[\"default\"].Children.count(element.props.children) > 0;\n}\n\nfunction getElementHTML(element) {\n var text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (element === undefined || element === null) {\n return element;\n }\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (_react[\"default\"].isValidElement(element)) {\n if (hasChildren(element)) {\n return _server[\"default\"].renderToStaticMarkup(element);\n }\n\n var tags = (0, _splitReactElement[\"default\"])(element);\n\n if (text !== null && (0, _typeof2[\"default\"])(tags) === 'object') {\n var start = tags.start,\n end = tags.end;\n return start + text + end;\n }\n\n return tags;\n }\n\n (0, _invariant[\"default\"])(Object.prototype.hasOwnProperty.call(element, 'start') && Object.prototype.hasOwnProperty.call(element, 'end'), 'convertToHTML: received conversion data without either an HTML string, ReactElement or an object with start/end tags');\n\n if (text !== null) {\n var _start = element.start,\n _end = element.end;\n return _start + text + _end;\n }\n\n return element;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _splitReactElement = _interopRequireDefault(require(\"./splitReactElement\"));\n\nvar getElementTagLength = function getElementTagLength(element) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'start';\n\n if (_react[\"default\"].isValidElement(element)) {\n var splitElement = (0, _splitReactElement[\"default\"])(element);\n\n if (typeof splitElement === 'string') {\n return 0;\n }\n\n var length = splitElement[type].length;\n\n var child = _react[\"default\"].Children.toArray(element.props.children)[0];\n\n return length + (child && _react[\"default\"].isValidElement(child) ? getElementTagLength(child, type) : 0);\n }\n\n if ((0, _typeof2[\"default\"])(element) === 'object') {\n return element[type] ? element[type].length : 0;\n }\n\n return 0;\n};\n\nvar _default = getElementTagLength;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _updateMutation = _interopRequireDefault(require(\"./util/updateMutation\"));\n\nvar _rangeSort = _interopRequireDefault(require(\"./util/rangeSort\"));\n\nvar _getElementHTML = _interopRequireDefault(require(\"./util/getElementHTML\"));\n\nvar _getElementTagLength = _interopRequireDefault(require(\"./util/getElementTagLength\"));\n\nvar converter = function converter() {\n var entity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var originalText = arguments.length > 1 ? arguments[1] : undefined;\n return originalText;\n};\n\nvar _default = function _default(block, entityMap) {\n var entityConverter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : converter;\n var resultText = (0, _toConsumableArray2[\"default\"])(block.text);\n var getEntityHTML = entityConverter;\n\n if (entityConverter.__isMiddleware) {\n getEntityHTML = entityConverter(converter);\n }\n\n if (Object.prototype.hasOwnProperty.call(block, 'entityRanges') && block.entityRanges.length > 0) {\n var entities = block.entityRanges.sort(_rangeSort[\"default\"]);\n var styles = block.inlineStyleRanges;\n\n var _loop = function _loop(index) {\n var entityRange = entities[index];\n var entity = entityMap[entityRange.key];\n var originalText = resultText.slice(entityRange.offset, entityRange.offset + entityRange.length).join('');\n var entityHTML = getEntityHTML(entity, originalText);\n var converted = (0, _toConsumableArray2[\"default\"])((0, _getElementHTML[\"default\"])(entityHTML, originalText) || originalText);\n var prefixLength = (0, _getElementTagLength[\"default\"])(entityHTML, 'start');\n var suffixLength = (0, _getElementTagLength[\"default\"])(entityHTML, 'end');\n\n var updateLaterMutation = function updateLaterMutation(mutation, mutationIndex) {\n if (mutationIndex > index || Object.prototype.hasOwnProperty.call(mutation, 'style')) {\n return (0, _updateMutation[\"default\"])(mutation, entityRange.offset, entityRange.length, converted.length, prefixLength, suffixLength);\n }\n\n return mutation;\n };\n\n var updateLaterMutations = function updateLaterMutations(mutationList) {\n return mutationList.reduce(function (acc, mutation, mutationIndex) {\n var updatedMutation = updateLaterMutation(mutation, mutationIndex);\n\n if (Array.isArray(updatedMutation)) {\n return acc.concat(updatedMutation);\n }\n\n return acc.concat([updatedMutation]);\n }, []);\n };\n\n entities = updateLaterMutations(entities);\n styles = updateLaterMutations(styles);\n resultText = [].concat((0, _toConsumableArray2[\"default\"])(resultText.slice(0, entityRange.offset)), (0, _toConsumableArray2[\"default\"])(converted), (0, _toConsumableArray2[\"default\"])(resultText.slice(entityRange.offset + entityRange.length)));\n };\n\n for (var index = 0; index < entities.length; index++) {\n _loop(index);\n }\n\n return Object.assign({}, block, {\n text: resultText.join(''),\n inlineStyleRanges: styles,\n entityRanges: entities\n });\n }\n\n return block;\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _default = function _default(object) {\n return function (style) {\n if (typeof object === 'function') {\n return object(style);\n }\n\n return object[style];\n };\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _default = function _default(newFn, rest) {\n return function () {\n var newResult = newFn.apply(void 0, arguments);\n\n if (newResult !== undefined && newResult !== null) {\n return newResult;\n }\n\n return rest.apply(void 0, arguments);\n };\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = defaultInlineHTML;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction defaultInlineHTML(style) {\n switch (style) {\n case 'BOLD':\n return _react[\"default\"].createElement(\"strong\", null);\n\n case 'ITALIC':\n return _react[\"default\"].createElement(\"em\", null);\n\n case 'UNDERLINE':\n return _react[\"default\"].createElement(\"u\", null);\n\n case 'CODE':\n return _react[\"default\"].createElement(\"code\", null);\n\n default:\n return {\n start: '',\n end: ''\n };\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _styleObjectFunction = _interopRequireDefault(require(\"./util/styleObjectFunction\"));\n\nvar _accumulateFunction = _interopRequireDefault(require(\"./util/accumulateFunction\"));\n\nvar _getElementHTML = _interopRequireDefault(require(\"./util/getElementHTML\"));\n\nvar _rangeSort = _interopRequireDefault(require(\"./util/rangeSort\"));\n\nvar _defaultInlineHTML = _interopRequireDefault(require(\"./default/defaultInlineHTML\"));\n\nvar subtractStyles = function subtractStyles(original, toRemove) {\n return original.filter(function (el) {\n return !toRemove.some(function (elToRemove) {\n return elToRemove.style === el.style;\n });\n });\n};\n\nvar popEndingStyles = function popEndingStyles(styleStack, endingStyles) {\n return endingStyles.reduceRight(function (stack, style) {\n var styleToRemove = stack[stack.length - 1];\n (0, _invariant[\"default\"])(styleToRemove.style === style.style, \"Style \".concat(styleToRemove.style, \" to be removed doesn't match expected \").concat(style.style));\n return stack.slice(0, -1);\n }, styleStack);\n};\n\nvar characterStyles = function characterStyles(offset, ranges) {\n return ranges.filter(function (range) {\n return offset >= range.offset && offset < range.offset + range.length;\n });\n};\n\nvar rangeIsSubset = function rangeIsSubset(firstRange, secondRange) {\n // returns true if the second range is a subset of the first\n var secondStartWithinFirst = firstRange.offset <= secondRange.offset;\n var secondEndWithinFirst = firstRange.offset + firstRange.length >= secondRange.offset + secondRange.length;\n return secondStartWithinFirst && secondEndWithinFirst;\n};\n\nvar latestStyleLast = function latestStyleLast(s1, s2) {\n // make sure longer-lasting styles are added first\n var s2endIndex = s2.offset + s2.length;\n var s1endIndex = s1.offset + s1.length;\n return s2endIndex - s1endIndex;\n};\n\nvar getStylesToReset = function getStylesToReset(remainingStyles, newStyles) {\n var i = 0;\n\n while (i < remainingStyles.length) {\n if (newStyles.every(rangeIsSubset.bind(null, remainingStyles[i]))) {\n i++;\n } else {\n return remainingStyles.slice(i);\n }\n }\n\n return [];\n};\n\nvar appendStartMarkup = function appendStartMarkup(inlineHTML, string, styleRange) {\n return string + (0, _getElementHTML[\"default\"])(inlineHTML(styleRange.style)).start;\n};\n\nvar prependEndMarkup = function prependEndMarkup(inlineHTML, string, styleRange) {\n return (0, _getElementHTML[\"default\"])(inlineHTML(styleRange.style)).end + string;\n};\n\nvar defaultCustomInlineHTML = function defaultCustomInlineHTML(next) {\n return function (style) {\n return next(style);\n };\n};\n\ndefaultCustomInlineHTML.__isMiddleware = true;\n\nvar _default = function _default(rawBlock) {\n var customInlineHTML = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultCustomInlineHTML;\n (0, _invariant[\"default\"])(rawBlock !== null && rawBlock !== undefined, 'Expected raw block to be non-null');\n var inlineHTML;\n\n if (customInlineHTML.__isMiddleware === true) {\n inlineHTML = customInlineHTML(_defaultInlineHTML[\"default\"]);\n } else {\n inlineHTML = (0, _accumulateFunction[\"default\"])((0, _styleObjectFunction[\"default\"])(customInlineHTML), (0, _styleObjectFunction[\"default\"])(_defaultInlineHTML[\"default\"]));\n }\n\n var result = '';\n var styleStack = [];\n var sortedRanges = rawBlock.inlineStyleRanges.sort(_rangeSort[\"default\"]);\n var originalTextArray = (0, _toConsumableArray2[\"default\"])(rawBlock.text);\n\n for (var i = 0; i < originalTextArray.length; i++) {\n var styles = characterStyles(i, sortedRanges);\n var endingStyles = subtractStyles(styleStack, styles);\n var newStyles = subtractStyles(styles, styleStack);\n var remainingStyles = subtractStyles(styleStack, endingStyles); // reset styles: look for any already existing styles that will need to\n // end before styles that are being added on this character. to solve this\n // close out those current tags and all nested children,\n // then open new ones nested within the new styles.\n\n var resetStyles = getStylesToReset(remainingStyles, newStyles);\n var openingStyles = resetStyles.concat(newStyles).sort(latestStyleLast);\n var openingStyleTags = openingStyles.reduce(appendStartMarkup.bind(null, inlineHTML), '');\n var endingStyleTags = endingStyles.concat(resetStyles).reduce(prependEndMarkup.bind(null, inlineHTML), '');\n result += endingStyleTags + openingStyleTags + originalTextArray[i];\n styleStack = popEndingStyles(styleStack, resetStyles.concat(endingStyles));\n styleStack = styleStack.concat(openingStyles);\n (0, _invariant[\"default\"])(styleStack.length === styles.length, \"Character \".concat(i, \": \").concat(styleStack.length - styles.length, \" styles left on stack that should no longer be there\"));\n }\n\n result = styleStack.reduceRight(function (res, openStyle) {\n return res + (0, _getElementHTML[\"default\"])(inlineHTML(openStyle.style)).end;\n }, result);\n return result;\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _default = function _default(typeObject) {\n return function (block) {\n if (typeof typeObject === 'function') {\n // handle case where typeObject is already a function\n return typeObject(block);\n }\n\n return typeObject[block.type];\n };\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getBlockTags;\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _server = _interopRequireDefault(require(\"react-dom/server\"));\n\nvar _splitReactElement = _interopRequireDefault(require(\"./splitReactElement\"));\n\nfunction hasChildren(element) {\n return _react[\"default\"].isValidElement(element) && _react[\"default\"].Children.count(element.props.children) > 0;\n}\n\nfunction getBlockTags(blockHTML) {\n (0, _invariant[\"default\"])(blockHTML !== null && blockHTML !== undefined, 'Expected block HTML value to be non-null');\n\n if (typeof blockHTML === 'string') {\n return blockHTML;\n }\n\n if (_react[\"default\"].isValidElement(blockHTML)) {\n if (hasChildren(blockHTML)) {\n return _server[\"default\"].renderToStaticMarkup(blockHTML);\n }\n\n return (0, _splitReactElement[\"default\"])(blockHTML);\n }\n\n if (Object.prototype.hasOwnProperty.call(blockHTML, 'element') && _react[\"default\"].isValidElement(blockHTML.element)) {\n return Object.assign({}, blockHTML, (0, _splitReactElement[\"default\"])(blockHTML.element));\n }\n\n (0, _invariant[\"default\"])(Object.prototype.hasOwnProperty.call(blockHTML, 'start') && Object.prototype.hasOwnProperty.call(blockHTML, 'end'), 'convertToHTML: received block information without either a ReactElement or an object with start/end tags');\n return blockHTML;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getNestedBlockTags;\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _splitReactElement2 = _interopRequireDefault(require(\"./splitReactElement\"));\n\nfunction getNestedBlockTags(blockHTML) {\n (0, _invariant[\"default\"])(blockHTML !== null && blockHTML !== undefined, 'Expected block HTML value to be non-null');\n\n if (_react[\"default\"].isValidElement(blockHTML.nest)) {\n var _splitReactElement = (0, _splitReactElement2[\"default\"])(blockHTML.nest),\n start = _splitReactElement.start,\n end = _splitReactElement.end;\n\n return Object.assign({}, blockHTML, {\n nestStart: start,\n nestEnd: end\n });\n }\n\n (0, _invariant[\"default\"])(Object.prototype.hasOwnProperty.call(blockHTML, 'nestStart') && Object.prototype.hasOwnProperty.call(blockHTML, 'nestEnd'), 'convertToHTML: received block information without either a ReactElement or an object with start/end tags');\n return blockHTML;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = {\n unstyled: _react[\"default\"].createElement(\"p\", null),\n paragraph: _react[\"default\"].createElement(\"p\", null),\n 'header-one': _react[\"default\"].createElement(\"h1\", null),\n 'header-two': _react[\"default\"].createElement(\"h2\", null),\n 'header-three': _react[\"default\"].createElement(\"h3\", null),\n 'header-four': _react[\"default\"].createElement(\"h4\", null),\n 'header-five': _react[\"default\"].createElement(\"h5\", null),\n 'header-six': _react[\"default\"].createElement(\"h6\", null),\n blockquote: _react[\"default\"].createElement(\"blockquote\", null),\n 'unordered-list-item': {\n element: _react[\"default\"].createElement(\"li\", null),\n nest: _react[\"default\"].createElement(\"ul\", null)\n },\n 'ordered-list-item': {\n element: _react[\"default\"].createElement(\"li\", null),\n nest: _react[\"default\"].createElement(\"ol\", null)\n },\n media: _react[\"default\"].createElement(\"figure\", null),\n atomic: _react[\"default\"].createElement(\"figure\", null)\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _server = _interopRequireDefault(require(\"react-dom/server\"));\n\nvar _draftJs = require(\"draft-js\");\n\nvar _encodeBlock = _interopRequireDefault(require(\"./encodeBlock\"));\n\nvar _blockEntities = _interopRequireDefault(require(\"./blockEntities\"));\n\nvar _blockInlineStyles = _interopRequireDefault(require(\"./blockInlineStyles\"));\n\nvar _accumulateFunction = _interopRequireDefault(require(\"./util/accumulateFunction\"));\n\nvar _blockTypeObjectFunction = _interopRequireDefault(require(\"./util/blockTypeObjectFunction\"));\n\nvar _getBlockTags = _interopRequireDefault(require(\"./util/getBlockTags\"));\n\nvar _getNestedBlockTags = _interopRequireDefault(require(\"./util/getNestedBlockTags\"));\n\nvar _defaultBlockHTML = _interopRequireDefault(require(\"./default/defaultBlockHTML\"));\n\n// import Immutable from 'immutable'; // eslint-disable-line no-unused-vars\nvar defaultEntityToHTML = function defaultEntityToHTML(entity, originalText) {\n return originalText;\n};\n\nvar convertToHTML = function convertToHTML(_ref) {\n var _ref$styleToHTML = _ref.styleToHTML,\n styleToHTML = _ref$styleToHTML === void 0 ? {} : _ref$styleToHTML,\n _ref$blockToHTML = _ref.blockToHTML,\n blockToHTML = _ref$blockToHTML === void 0 ? {} : _ref$blockToHTML,\n _ref$entityToHTML = _ref.entityToHTML,\n entityToHTML = _ref$entityToHTML === void 0 ? defaultEntityToHTML : _ref$entityToHTML;\n return function (contentState) {\n (0, _invariant[\"default\"])(contentState !== null && contentState !== undefined, 'Expected contentState to be non-null');\n var getBlockHTML;\n\n if (blockToHTML.__isMiddleware === true) {\n getBlockHTML = blockToHTML((0, _blockTypeObjectFunction[\"default\"])(_defaultBlockHTML[\"default\"]));\n } else {\n getBlockHTML = (0, _accumulateFunction[\"default\"])((0, _blockTypeObjectFunction[\"default\"])(blockToHTML), (0, _blockTypeObjectFunction[\"default\"])(_defaultBlockHTML[\"default\"]));\n }\n\n var rawState = (0, _draftJs.convertToRaw)(contentState);\n var listStack = [];\n var result = rawState.blocks.map(function (block) {\n var type = block.type,\n depth = block.depth;\n var closeNestTags = '';\n var openNestTags = '';\n var blockHTMLResult = getBlockHTML(block);\n\n if (!blockHTMLResult) {\n throw new Error(\"convertToHTML: missing HTML definition for block with type \".concat(block.type));\n }\n\n if (!blockHTMLResult.nest) {\n // this block can't be nested, so reset all nesting if necessary\n closeNestTags = listStack.reduceRight(function (string, nestedBlock) {\n return string + (0, _getNestedBlockTags[\"default\"])(getBlockHTML(nestedBlock)).nestEnd;\n }, '');\n listStack = [];\n } else {\n while (depth + 1 !== listStack.length || type !== listStack[depth].type) {\n if (depth + 1 === listStack.length) {\n // depth is right but doesn't match type\n var blockToClose = listStack[depth];\n closeNestTags += (0, _getNestedBlockTags[\"default\"])(getBlockHTML(blockToClose)).nestEnd;\n openNestTags += (0, _getNestedBlockTags[\"default\"])(getBlockHTML(block)).nestStart;\n listStack[depth] = block;\n } else if (depth + 1 < listStack.length) {\n var _blockToClose = listStack[listStack.length - 1];\n closeNestTags += (0, _getNestedBlockTags[\"default\"])(getBlockHTML(_blockToClose)).nestEnd;\n listStack = listStack.slice(0, -1);\n } else {\n openNestTags += (0, _getNestedBlockTags[\"default\"])(getBlockHTML(block)).nestStart;\n listStack.push(block);\n }\n }\n }\n\n var innerHTML = (0, _blockInlineStyles[\"default\"])((0, _blockEntities[\"default\"])((0, _encodeBlock[\"default\"])(block), rawState.entityMap, entityToHTML), styleToHTML);\n var blockHTML = (0, _getBlockTags[\"default\"])(getBlockHTML(block));\n var html;\n\n if (typeof blockHTML === 'string') {\n html = blockHTML;\n } else {\n html = blockHTML.start + innerHTML + blockHTML.end;\n }\n\n if (innerHTML.length === 0 && Object.prototype.hasOwnProperty.call(blockHTML, 'empty')) {\n if (_react[\"default\"].isValidElement(blockHTML.empty)) {\n html = _server[\"default\"].renderToStaticMarkup(blockHTML.empty);\n } else {\n html = blockHTML.empty;\n }\n }\n\n return closeNestTags + openNestTags + html;\n }).join('');\n result = listStack.reduce(function (res, nestBlock) {\n return res + (0, _getNestedBlockTags[\"default\"])(getBlockHTML(nestBlock)).nestEnd;\n }, result);\n return result;\n };\n};\n\nvar _default = function _default() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && Object.prototype.hasOwnProperty.call(args[0], '_map') && args[0].getBlockMap != null) {\n // skip higher-order function and use defaults\n return convertToHTML({}).apply(void 0, args);\n }\n\n return convertToHTML.apply(void 0, args);\n};\n\nexports[\"default\"] = _default;","/**\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}));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = parseHTML;\n\nvar fallback = function fallback(html) {\n var doc = document.implementation.createHTMLDocument('');\n doc.documentElement.innerHTML = html;\n return doc;\n};\n\nfunction parseHTML(html) {\n var doc;\n\n if (typeof DOMParser !== 'undefined') {\n var parser = new DOMParser();\n doc = parser.parseFromString(html, 'text/html');\n\n if (doc === null || doc.body === null) {\n doc = fallback(html);\n }\n } else {\n doc = fallback(html);\n }\n\n return doc.body;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _immutable = require(\"immutable\");\n\nvar _draftJs = require(\"draft-js\");\n\nvar _parseHTML = _interopRequireDefault(require(\"./util/parseHTML\"));\n\nvar _rangeSort = _interopRequireDefault(require(\"./util/rangeSort\"));\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * Copyright (c) 2013-present, 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 /src directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\nvar NBSP = '&nbsp;';\nvar SPACE = ' '; // Arbitrary max indent\n\nvar MAX_DEPTH = 4; // used for replacing characters in HTML\n\n/* eslint-disable no-control-regex */\n\nvar REGEX_CR = new RegExp('\\r', 'g');\nvar REGEX_LF = new RegExp('\\n', 'g');\nvar REGEX_NBSP = new RegExp(NBSP, 'g');\nvar REGEX_BLOCK_DELIMITER = new RegExp('\\r', 'g');\n/* eslint-enable no-control-regex */\n// Block tag flow is different because LIs do not have\n// a deterministic style ;_;\n\nvar blockTags = ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'blockquote', 'pre'];\nvar inlineTags = {\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};\n\nvar handleMiddleware = function handleMiddleware(maybeMiddleware, base) {\n if (maybeMiddleware && maybeMiddleware.__isMiddleware === true) {\n return maybeMiddleware(base);\n }\n\n return maybeMiddleware;\n};\n\nvar defaultHTMLToBlock = function defaultHTMLToBlock(nodeName, node, lastList) {\n return undefined;\n};\n\nvar defaultHTMLToStyle = function defaultHTMLToStyle(nodeName, node, currentStyle) {\n return currentStyle;\n};\n\nvar defaultHTMLToEntity = function defaultHTMLToEntity(nodeName, node) {\n return undefined;\n};\n\nvar defaultTextToEntity = function defaultTextToEntity(text) {\n return [];\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\nvar sanitizeDraftText = function sanitizeDraftText(input) {\n return input.replace(REGEX_BLOCK_DELIMITER, '');\n};\n\nfunction getEmptyChunk() {\n return {\n text: '',\n inlines: [],\n entities: [],\n blocks: []\n };\n}\n\nfunction getWhitespaceChunk(inEntity) {\n var entities = new Array(1);\n\n if (inEntity) {\n entities[0] = inEntity;\n }\n\n return {\n text: SPACE,\n inlines: [(0, _immutable.OrderedSet)()],\n entities: entities,\n blocks: []\n };\n}\n\nfunction getSoftNewlineChunk(block, depth) {\n var flat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : (0, _immutable.Map)();\n\n if (flat === true) {\n return {\n text: '\\r',\n inlines: [(0, _immutable.OrderedSet)()],\n entities: new Array(1),\n blocks: [{\n type: block,\n data: data,\n depth: Math.max(0, Math.min(MAX_DEPTH, depth))\n }],\n isNewline: true\n };\n }\n\n return {\n text: '\\n',\n inlines: [(0, _immutable.OrderedSet)()],\n entities: new Array(1),\n blocks: []\n };\n}\n\nfunction getBlockDividerChunk(block, depth) {\n var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (0, _immutable.Map)();\n return {\n text: '\\r',\n inlines: [(0, _immutable.OrderedSet)()],\n entities: new Array(1),\n blocks: [{\n type: block,\n data: data,\n depth: Math.max(0, Math.min(MAX_DEPTH, depth))\n }]\n };\n}\n\nfunction getBlockTypeForTag(tag, lastList) {\n switch (tag) {\n case 'h1':\n return 'header-one';\n\n case 'h2':\n return 'header-two';\n\n case 'h3':\n return 'header-three';\n\n case 'h4':\n return 'header-four';\n\n case 'h5':\n return 'header-five';\n\n case 'h6':\n return 'header-six';\n\n case 'li':\n if (lastList === 'ol') {\n return 'ordered-list-item';\n }\n\n return 'unordered-list-item';\n\n case 'blockquote':\n return 'blockquote';\n\n case 'pre':\n return 'code-block';\n\n case 'div':\n case 'p':\n return 'unstyled';\n\n default:\n return null;\n }\n}\n\nfunction baseCheckBlockType(nodeName, node, lastList) {\n return getBlockTypeForTag(nodeName, lastList);\n}\n\nfunction processInlineTag(tag, node, currentStyle) {\n var styleToCheck = inlineTags[tag];\n\n if (styleToCheck) {\n currentStyle = currentStyle.add(styleToCheck).toOrderedSet();\n } else if (node instanceof HTMLElement) {\n var htmlElement = node;\n currentStyle = currentStyle.withMutations(function (style) {\n if (htmlElement.style.fontWeight === 'bold') {\n style.add('BOLD');\n }\n\n if (htmlElement.style.fontStyle === 'italic') {\n style.add('ITALIC');\n }\n\n if (htmlElement.style.textDecoration === 'underline') {\n style.add('UNDERLINE');\n }\n\n if (htmlElement.style.textDecoration === 'line-through') {\n style.add('STRIKETHROUGH');\n }\n }).toOrderedSet();\n }\n\n return currentStyle;\n}\n\nfunction baseProcessInlineTag(tag, node) {\n var inlineStyles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (0, _immutable.OrderedSet)();\n return processInlineTag(tag, node, inlineStyles);\n}\n\nfunction joinChunks(A, B) {\n var flat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // Sometimes two blocks will touch in the DOM and we need to strip the\n // extra delimiter to preserve niceness.\n var firstInB = B.text.slice(0, 1);\n var lastInA = A.text.slice(-1);\n var adjacentDividers = lastInA === '\\r' && firstInB === '\\r';\n var isJoiningBlocks = A.text !== '\\r' && B.text !== '\\r'; // when joining two full blocks like this we want to pop one divider\n\n var addingNewlineToEmptyBlock = A.text === '\\r' && !A.isNewline && B.isNewline; // when joining a newline to an empty block we want to remove the newline\n\n if (adjacentDividers && (isJoiningBlocks || addingNewlineToEmptyBlock)) {\n A.text = A.text.slice(0, -1);\n A.inlines.pop();\n A.entities.pop();\n A.blocks.pop();\n } // Kill whitespace after blocks if flat mode is on\n\n\n if (A.text.slice(-1) === '\\r' && flat === true) {\n if (B.text === SPACE || B.text === '\\n') {\n return A;\n } else if (firstInB === SPACE || firstInB === '\\n') {\n B.text = B.text.slice(1);\n B.inlines.shift();\n B.entities.shift();\n }\n }\n\n var isNewline = A.text.length === 0 && B.isNewline;\n return {\n text: A.text + B.text,\n inlines: A.inlines.concat(B.inlines),\n entities: A.entities.concat(B.entities),\n blocks: A.blocks.concat(B.blocks),\n isNewline: isNewline\n };\n}\n/*\n * Check to see if we have anything like <p> <blockquote> <h1>... to create\n * block tags from. If we do, we can use those and ignore <div> tags. If we\n * don't, we can treat <div> tags as meaningful (unstyled) blocks.\n */\n\n\nfunction containsSemanticBlockMarkup(html) {\n return blockTags.some(function (tag) {\n return html.indexOf(\"<\".concat(tag)) !== -1;\n });\n}\n\nfunction genFragment(node, inlineStyle, lastList, inBlock, fragmentBlockTags, depth, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options, inEntity) {\n var nodeName = node.nodeName.toLowerCase();\n var newBlock = false;\n var nextBlockType = 'unstyled'; // Base Case\n\n if (nodeName === '#text') {\n var text = node.textContent;\n\n if (text.trim() === '' && inBlock === null) {\n return getEmptyChunk();\n }\n\n if (text.trim() === '' && inBlock !== 'code-block') {\n return getWhitespaceChunk(inEntity);\n }\n\n if (inBlock !== 'code-block') {\n // Can't use empty string because MSWord\n text = text.replace(REGEX_LF, SPACE);\n }\n\n var entities = Array(text.length).fill(inEntity);\n var offsetChange = 0;\n var textEntities = checkEntityText(text, createEntity, getEntity, mergeEntityData, replaceEntityData).sort(_rangeSort[\"default\"]);\n textEntities.forEach(function (_ref) {\n var entity = _ref.entity,\n offset = _ref.offset,\n length = _ref.length,\n result = _ref.result;\n var adjustedOffset = offset + offsetChange;\n\n if (result === null || result === undefined) {\n result = text.substr(adjustedOffset, length);\n }\n\n var textArray = text.split('');\n textArray.splice.bind(textArray, adjustedOffset, length).apply(textArray, result.split(''));\n text = textArray.join('');\n entities.splice.bind(entities, adjustedOffset, length).apply(entities, Array(result.length).fill(entity));\n offsetChange += result.length - length;\n });\n return {\n text: text,\n inlines: Array(text.length).fill(inlineStyle),\n entities: entities,\n blocks: []\n };\n } // BR tags\n\n\n if (nodeName === 'br') {\n var _blockType = inBlock;\n\n if (_blockType === null) {\n // BR tag is at top level, treat it as an unstyled block\n return getSoftNewlineChunk('unstyled', depth, true);\n }\n\n return getSoftNewlineChunk(_blockType || 'unstyled', depth, options.flat);\n }\n\n var chunk = getEmptyChunk();\n var newChunk = null; // Inline tags\n\n inlineStyle = processInlineTag(nodeName, node, inlineStyle);\n inlineStyle = processCustomInlineStyles(nodeName, node, inlineStyle); // Handle lists\n\n if (nodeName === 'ul' || nodeName === 'ol') {\n if (lastList) {\n depth += 1;\n }\n\n lastList = nodeName;\n inBlock = null;\n } // Block Tags\n\n\n var blockInfo = checkBlockType(nodeName, node, lastList, inBlock);\n var blockType;\n var blockDataMap;\n\n if (blockInfo === false) {\n return getEmptyChunk();\n }\n\n blockInfo = blockInfo || {};\n\n if (typeof blockInfo === 'string') {\n blockType = blockInfo;\n blockDataMap = (0, _immutable.Map)();\n } else {\n blockType = typeof blockInfo === 'string' ? blockInfo : blockInfo.type;\n blockDataMap = blockInfo.data ? (0, _immutable.Map)(blockInfo.data) : (0, _immutable.Map)();\n }\n\n if (!inBlock && (fragmentBlockTags.indexOf(nodeName) !== -1 || blockType)) {\n chunk = getBlockDividerChunk(blockType || getBlockTypeForTag(nodeName, lastList), depth, blockDataMap);\n inBlock = blockType || getBlockTypeForTag(nodeName, lastList);\n newBlock = true;\n } else if (lastList && (inBlock === 'ordered-list-item' || inBlock === 'unordered-list-item') && nodeName === 'li') {\n var listItemBlockType = getBlockTypeForTag(nodeName, lastList);\n chunk = getBlockDividerChunk(listItemBlockType, depth);\n inBlock = listItemBlockType;\n newBlock = true;\n nextBlockType = lastList === 'ul' ? 'unordered-list-item' : 'ordered-list-item';\n } else if (inBlock && inBlock !== 'atomic' && blockType === 'atomic') {\n inBlock = blockType;\n newBlock = true;\n chunk = getSoftNewlineChunk(blockType, depth, true, // atomic blocks within non-atomic blocks must always be split out\n blockDataMap);\n } // Recurse through children\n\n\n var child = node.firstChild; // hack to allow conversion of atomic blocks from HTML (e.g. <figure><img\n // src=\"...\" /></figure>). since metadata must be stored on an entity text\n // must exist for the entity to apply to. the way chunks are joined strips\n // whitespace at the end so it cannot be a space character.\n\n if (child == null && inEntity && (blockType === 'atomic' || inBlock === 'atomic')) {\n child = document.createTextNode('a');\n }\n\n if (child != null) {\n nodeName = child.nodeName.toLowerCase();\n }\n\n var entityId = null;\n\n while (child) {\n entityId = checkEntityNode(nodeName, child, createEntity, getEntity, mergeEntityData, replaceEntityData);\n newChunk = genFragment(child, inlineStyle, lastList, inBlock, fragmentBlockTags, depth, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options, entityId || inEntity);\n chunk = joinChunks(chunk, newChunk, options.flat);\n var sibling = child.nextSibling; // Put in a newline to break up blocks inside blocks\n\n if (sibling && fragmentBlockTags.indexOf(nodeName) >= 0 && inBlock) {\n var newBlockInfo = checkBlockType(nodeName, child, lastList, inBlock);\n var newBlockType = void 0;\n var newBlockData = void 0;\n\n if (newBlockInfo !== false) {\n newBlockInfo = newBlockInfo || {};\n\n if (typeof newBlockInfo === 'string') {\n newBlockType = newBlockInfo;\n newBlockData = (0, _immutable.Map)();\n } else {\n newBlockType = newBlockInfo.type || getBlockTypeForTag(nodeName, lastList);\n newBlockData = newBlockInfo.data ? (0, _immutable.Map)(newBlockInfo.data) : (0, _immutable.Map)();\n }\n\n chunk = joinChunks(chunk, getSoftNewlineChunk(newBlockType, depth, options.flat, newBlockData), options.flat);\n }\n }\n\n if (sibling) {\n nodeName = sibling.nodeName.toLowerCase();\n }\n\n child = sibling;\n }\n\n if (newBlock) {\n chunk = joinChunks(chunk, getBlockDividerChunk(nextBlockType, depth, (0, _immutable.Map)()), options.flat);\n }\n\n return chunk;\n}\n\nfunction getChunkForHTML(html, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options, DOMBuilder) {\n html = html.trim().replace(REGEX_CR, '').replace(REGEX_NBSP, SPACE);\n var safeBody = DOMBuilder(html);\n\n if (!safeBody) {\n return null;\n } // Sometimes we aren't dealing with content that contains nice semantic\n // tags. In this case, use divs to separate everything out into paragraphs\n // and hope for the best.\n\n\n var workingBlocks = containsSemanticBlockMarkup(html) ? blockTags.concat(['div']) : ['div']; // Start with -1 block depth to offset the fact that we are passing in a fake\n // UL block to sta rt with.\n\n var chunk = genFragment(safeBody, (0, _immutable.OrderedSet)(), 'ul', null, workingBlocks, -1, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options); // join with previous block to prevent weirdness on paste\n\n if (chunk.text.indexOf('\\r') === 0) {\n chunk = {\n text: chunk.text.slice(1),\n inlines: chunk.inlines.slice(1),\n entities: chunk.entities.slice(1),\n blocks: chunk.blocks\n };\n } // Kill block delimiter at the end\n\n\n if (chunk.text.slice(-1) === '\\r') {\n chunk.text = chunk.text.slice(0, -1);\n chunk.inlines = chunk.inlines.slice(0, -1);\n chunk.entities = chunk.entities.slice(0, -1);\n chunk.blocks.pop();\n } // If we saw no block tags, put an unstyled one in\n\n\n if (chunk.blocks.length === 0) {\n chunk.blocks.push({\n type: 'unstyled',\n data: (0, _immutable.Map)(),\n depth: 0\n });\n } // Sometimes we start with text that isn't in a block, which is then\n // followed by blocks. Need to fix up the blocks to add in\n // an unstyled block for this content\n\n\n if (chunk.text.split('\\r').length === chunk.blocks.length + 1) {\n chunk.blocks.unshift({\n type: 'unstyled',\n data: (0, _immutable.Map)(),\n depth: 0\n });\n }\n\n return chunk;\n}\n\nfunction convertFromHTMLtoContentBlocks(html, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options, DOMBuilder, generateKey) {\n // Be ABSOLUTELY SURE that the dom builder you pass hare 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 var chunk = getChunkForHTML(html, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options, DOMBuilder, generateKey);\n\n if (chunk == null) {\n return [];\n }\n\n var start = 0;\n return chunk.text.split('\\r').map(function (textBlock, blockIndex) {\n // Make absolutely certain that our text is acceptable.\n textBlock = sanitizeDraftText(textBlock);\n var end = start + textBlock.length;\n var inlines = nullthrows(chunk).inlines.slice(start, end);\n var entities = nullthrows(chunk).entities.slice(start, end);\n var characterList = (0, _immutable.List)(inlines.map(function (style, entityIndex) {\n var data = {\n style: style,\n entity: null\n };\n\n if (entities[entityIndex]) {\n data.entity = entities[entityIndex];\n }\n\n return _draftJs.CharacterMetadata.create(data);\n }));\n start = end + 1;\n return new _draftJs.ContentBlock({\n key: generateKey(),\n type: nullthrows(chunk).blocks[blockIndex].type,\n data: nullthrows(chunk).blocks[blockIndex].data,\n depth: nullthrows(chunk).blocks[blockIndex].depth,\n text: textBlock,\n characterList: characterList\n });\n });\n}\n\nvar convertFromHTML = function convertFromHTML(_ref2) {\n var _ref2$htmlToStyle = _ref2.htmlToStyle,\n htmlToStyle = _ref2$htmlToStyle === void 0 ? defaultHTMLToStyle : _ref2$htmlToStyle,\n _ref2$htmlToEntity = _ref2.htmlToEntity,\n htmlToEntity = _ref2$htmlToEntity === void 0 ? defaultHTMLToEntity : _ref2$htmlToEntity,\n _ref2$textToEntity = _ref2.textToEntity,\n textToEntity = _ref2$textToEntity === void 0 ? defaultTextToEntity : _ref2$textToEntity,\n _ref2$htmlToBlock = _ref2.htmlToBlock,\n htmlToBlock = _ref2$htmlToBlock === void 0 ? defaultHTMLToBlock : _ref2$htmlToBlock;\n return function (html) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n flat: false\n };\n var DOMBuilder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _parseHTML[\"default\"];\n var generateKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _draftJs.genKey;\n\n var contentState = _draftJs.ContentState.createFromText('');\n\n var createEntityWithContentState = function createEntityWithContentState() {\n if (contentState.createEntity) {\n var _contentState;\n\n contentState = (_contentState = contentState).createEntity.apply(_contentState, arguments);\n return contentState.getLastCreatedEntityKey();\n }\n\n return _draftJs.Entity.create.apply(_draftJs.Entity, arguments);\n };\n\n var getEntityWithContentState = function getEntityWithContentState() {\n if (contentState.getEntity) {\n var _contentState2;\n\n return (_contentState2 = contentState).getEntity.apply(_contentState2, arguments);\n }\n\n return _draftJs.Entity.get.apply(_draftJs.Entity, arguments);\n };\n\n var mergeEntityDataWithContentState = function mergeEntityDataWithContentState() {\n if (contentState.mergeEntityData) {\n var _contentState3;\n\n contentState = (_contentState3 = contentState).mergeEntityData.apply(_contentState3, arguments);\n return;\n }\n\n _draftJs.Entity.mergeData.apply(_draftJs.Entity, arguments);\n };\n\n var replaceEntityDataWithContentState = function replaceEntityDataWithContentState() {\n if (contentState.replaceEntityData) {\n var _contentState4;\n\n contentState = (_contentState4 = contentState).replaceEntityData.apply(_contentState4, arguments);\n return;\n }\n\n _draftJs.Entity.replaceData.apply(_draftJs.Entity, arguments);\n };\n\n var contentBlocks = convertFromHTMLtoContentBlocks(html, handleMiddleware(htmlToStyle, baseProcessInlineTag), handleMiddleware(htmlToEntity, defaultHTMLToEntity), handleMiddleware(textToEntity, defaultTextToEntity), handleMiddleware(htmlToBlock, baseCheckBlockType), createEntityWithContentState, getEntityWithContentState, mergeEntityDataWithContentState, replaceEntityDataWithContentState, options, DOMBuilder, generateKey);\n\n var blockMap = _draftJs.BlockMapBuilder.createFromArray(contentBlocks);\n\n var firstBlockKey = contentBlocks[0].getKey();\n return contentState.merge({\n blockMap: blockMap,\n selectionBefore: _draftJs.SelectionState.createEmpty(firstBlockKey),\n selectionAfter: _draftJs.SelectionState.createEmpty(firstBlockKey)\n });\n };\n};\n\nvar _default = function _default() {\n if (arguments.length >= 1 && typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n return convertFromHTML({}).apply(void 0, arguments);\n }\n\n return convertFromHTML.apply(void 0, arguments);\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"convertToHTML\", {\n enumerable: true,\n get: function get() {\n return _convertToHTML[\"default\"];\n }\n});\nObject.defineProperty(exports, \"convertFromHTML\", {\n enumerable: true,\n get: function get() {\n return _convertFromHTML[\"default\"];\n }\n});\nObject.defineProperty(exports, \"parseHTML\", {\n enumerable: true,\n get: function get() {\n return _parseHTML[\"default\"];\n }\n});\n\nvar _convertToHTML = _interopRequireDefault(require(\"./convertToHTML\"));\n\nvar _convertFromHTML = _interopRequireDefault(require(\"./convertFromHTML\"));\n\nvar _parseHTML = _interopRequireDefault(require(\"./util/parseHTML\"));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFromHTMLConfig = exports.getToHTMLConfig = exports.blocks = exports.getHexColor = exports.defaultFontFamilies = exports.namedColors = undefined;\n\nvar _extends = Object.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; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar namedColors = exports.namedColors = {\n \"aliceblue\": \"#f0f8ff\",\n \"antiquewhite\": \"#faebd7\",\n \"aqua\": \"#00ffff\",\n \"aquamarine\": \"#7fffd4\",\n \"azure\": \"#f0ffff\",\n \"beige\": \"#f5f5dc\",\n \"bisque\": \"#ffe4c4\",\n \"black\": \"#000000\",\n \"blanchedalmond\": \"#ffebcd\",\n \"blue\": \"#0000ff\",\n \"blueviolet\": \"#8a2be2\",\n \"brown\": \"#a52a2a\",\n \"burlywood\": \"#deb887\",\n \"cadetblue\": \"#5f9ea0\",\n \"chartreuse\": \"#7fff00\",\n \"chocolate\": \"#d2691e\",\n \"coral\": \"#ff7f50\",\n \"cornflowerblue\": \"#6495ed\",\n \"cornsilk\": \"#fff8dc\",\n \"crimson\": \"#dc143c\",\n \"cyan\": \"#00ffff\",\n \"darkblue\": \"#00008b\",\n \"darkcyan\": \"#008b8b\",\n \"darkgoldenrod\": \"#b8860b\",\n \"darkgray\": \"#a9a9a9\",\n \"darkgreen\": \"#006400\",\n \"darkkhaki\": \"#bdb76b\",\n \"darkmagenta\": \"#8b008b\",\n \"darkolivegreen\": \"#556b2f\",\n \"darkorange\": \"#ff8c00\",\n \"darkorchid\": \"#9932cc\",\n \"darkred\": \"#8b0000\",\n \"darksalmon\": \"#e9967a\",\n \"darkseagreen\": \"#8fbc8f\",\n \"darkslateblue\": \"#483d8b\",\n \"darkslategray\": \"#2f4f4f\",\n \"darkturquoise\": \"#00ced1\",\n \"darkviolet\": \"#9400d3\",\n \"deeppink\": \"#ff1493\",\n \"deepskyblue\": \"#00bfff\",\n \"dimgray\": \"#696969\",\n \"dodgerblue\": \"#1e90ff\",\n \"firebrick\": \"#b22222\",\n \"floralwhite\": \"#fffaf0\",\n \"forestgreen\": \"#228b22\",\n \"fuchsia\": \"#ff00ff\",\n \"gainsboro\": \"#dcdcdc\",\n \"ghostwhite\": \"#f8f8ff\",\n \"gold\": \"#ffd700\",\n \"goldenrod\": \"#daa520\",\n \"gray\": \"#808080\",\n \"green\": \"#008000\",\n \"greenyellow\": \"#adff2f\",\n \"honeydew\": \"#f0fff0\",\n \"hotpink\": \"#ff69b4\",\n \"indianred \": \"#cd5c5c\",\n \"indigo\": \"#4b0082\",\n \"ivory\": \"#fffff0\",\n \"khaki\": \"#f0e68c\",\n \"lavender\": \"#e6e6fa\",\n \"lavenderblush\": \"#fff0f5\",\n \"lawngreen\": \"#7cfc00\",\n \"lemonchiffon\": \"#fffacd\",\n \"lightblue\": \"#add8e6\",\n \"lightcoral\": \"#f08080\",\n \"lightcyan\": \"#e0ffff\",\n \"lightgoldenrodyellow\": \"#fafad2\",\n \"lightgrey\": \"#d3d3d3\",\n \"lightgreen\": \"#90ee90\",\n \"lightpink\": \"#ffb6c1\",\n \"lightsalmon\": \"#ffa07a\",\n \"lightseagreen\": \"#20b2aa\",\n \"lightskyblue\": \"#87cefa\",\n \"lightslategray\": \"#778899\",\n \"lightsteelblue\": \"#b0c4de\",\n \"lightyellow\": \"#ffffe0\",\n \"lime\": \"#00ff00\",\n \"limegreen\": \"#32cd32\",\n \"linen\": \"#faf0e6\",\n \"magenta\": \"#ff00ff\",\n \"maroon\": \"#800000\",\n \"mediumaquamarine\": \"#66cdaa\",\n \"mediumblue\": \"#0000cd\",\n \"mediumorchid\": \"#ba55d3\",\n \"mediumpurple\": \"#9370d8\",\n \"mediumseagreen\": \"#3cb371\",\n \"mediumslateblue\": \"#7b68ee\",\n \"mediumspringgreen\": \"#00fa9a\",\n \"mediumturquoise\": \"#48d1cc\",\n \"mediumvioletred\": \"#c71585\",\n \"midnightblue\": \"#191970\",\n \"mintcream\": \"#f5fffa\",\n \"mistyrose\": \"#ffe4e1\",\n \"moccasin\": \"#ffe4b5\",\n \"navajowhite\": \"#ffdead\",\n \"navy\": \"#000080\",\n \"oldlace\": \"#fdf5e6\",\n \"olive\": \"#808000\",\n \"olivedrab\": \"#6b8e23\",\n \"orange\": \"#ffa500\",\n \"orangered\": \"#ff4500\",\n \"orchid\": \"#da70d6\",\n \"palegoldenrod\": \"#eee8aa\",\n \"palegreen\": \"#98fb98\",\n \"paleturquoise\": \"#afeeee\",\n \"palevioletred\": \"#d87093\",\n \"papayawhip\": \"#ffefd5\",\n \"peachpuff\": \"#ffdab9\",\n \"peru\": \"#cd853f\",\n \"pink\": \"#ffc0cb\",\n \"plum\": \"#dda0dd\",\n \"powderblue\": \"#b0e0e6\",\n \"purple\": \"#800080\",\n \"rebeccapurple\": \"#663399\",\n \"red\": \"#ff0000\",\n \"rosybrown\": \"#bc8f8f\",\n \"royalblue\": \"#4169e1\",\n \"saddlebrown\": \"#8b4513\",\n \"salmon\": \"#fa8072\",\n \"sandybrown\": \"#f4a460\",\n \"seagreen\": \"#2e8b57\",\n \"seashell\": \"#fff5ee\",\n \"sienna\": \"#a0522d\",\n \"silver\": \"#c0c0c0\",\n \"skyblue\": \"#87ceeb\",\n \"slateblue\": \"#6a5acd\",\n \"slategray\": \"#708090\",\n \"snow\": \"#fffafa\",\n \"springgreen\": \"#00ff7f\",\n \"steelblue\": \"#4682b4\",\n \"tan\": \"#d2b48c\",\n \"teal\": \"#008080\",\n \"thistle\": \"#d8bfd8\",\n \"tomato\": \"#ff6347\",\n \"turquoise\": \"#40e0d0\",\n \"violet\": \"#ee82ee\",\n \"wheat\": \"#f5deb3\",\n \"white\": \"#ffffff\",\n \"whitesmoke\": \"#f5f5f5\",\n \"yellow\": \"#ffff00\",\n \"yellowgreen\": \"#9acd32\"\n};\n\nvar getStyleValue = function getStyleValue(style) {\n return style.split('-')[1];\n};\nvar defaultUnitExportFn = function defaultUnitExportFn(unit) {\n return unit + 'px';\n};\nvar defaultUnitImportFn = function defaultUnitImportFn(unit) {\n return unit.replace('px', '');\n};\n\nvar ignoredNodeAttributes = ['style'];\nvar ignoredEntityNodeAttributes = ['style', 'href', 'target', 'alt', 'title', 'id', 'controls', 'autoplay', 'loop', 'poster'];\n\nvar spreadNodeAttributes = function spreadNodeAttributes(attributesObject) {\n return Object.keys(attributesObject).reduce(function (attributeString, attributeName) {\n return attributeString + \" \" + attributeName + \"=\\\"\" + attributesObject[attributeName] + \"\\\"\";\n }, '').replace(/^\\s$/, '');\n};\n\nvar defaultFontFamilies = exports.defaultFontFamilies = [{\n name: 'Araial',\n family: 'Arial, Helvetica, sans-serif'\n}, {\n name: 'Georgia',\n family: 'Georgia, serif'\n}, {\n name: 'Impact',\n family: 'Impact, serif'\n}, {\n name: 'Monospace',\n family: '\"Courier New\", Courier, monospace'\n}, {\n name: 'Tahoma',\n family: \"tahoma, arial, 'Hiragino Sans GB', 宋体, sans-serif\"\n}];\n\nvar getHexColor = exports.getHexColor = function getHexColor(color) {\n\n color = color.replace('color:', '').replace(';', '').replace(' ', '');\n\n if (/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(color)) {\n return color;\n } else if (namedColors[color]) {\n return namedColors[color];\n } else if (color.indexOf('rgb') === 0) {\n\n var rgbArray = color.split(',');\n var convertedColor = rgbArray.length < 3 ? null : '#' + [rgbArray[0], rgbArray[1], rgbArray[2]].map(function (x) {\n var hex = parseInt(x.replace(/\\D/g, ''), 10).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n\n return (/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(convertedColor) ? convertedColor : null\n );\n } else {\n return null;\n }\n};\n\nvar blocks = exports.blocks = {\n 'header-one': 'h1',\n 'header-two': 'h2',\n 'header-three': 'h3',\n 'header-four': 'h4',\n 'header-five': 'h5',\n 'header-six': 'h6',\n 'unstyled': 'p',\n 'blockquote': 'blockquote'\n};\n\nvar blockTypes = Object.keys(blocks);\nvar blockNames = blockTypes.map(function (key) {\n return blocks[key];\n});\n\nvar convertAtomicBlock = function convertAtomicBlock(block, contentState, blockNodeAttributes) {\n\n if (!block || !block.key) {\n return _react2.default.createElement(\"p\", null);\n }\n\n var contentBlock = contentState.getBlockForKey(block.key);\n\n var className = blockNodeAttributes.class,\n nodeAttrAsProps = _objectWithoutProperties(blockNodeAttributes, [\"class\"]);\n\n nodeAttrAsProps.className = className;\n\n if (!contentBlock) {\n return _react2.default.createElement(\"p\", null);\n }\n\n var entityKey = contentBlock.getEntityAt(0);\n\n if (!entityKey) {\n return _react2.default.createElement(\"p\", null);\n }\n\n var entity = contentState.getEntity(entityKey);\n var mediaType = entity.getType().toLowerCase();\n\n var _block$data = block.data,\n float = _block$data.float,\n alignment = _block$data.alignment;\n\n var _entity$getData = entity.getData(),\n url = _entity$getData.url,\n link = _entity$getData.link,\n link_target = _entity$getData.link_target,\n width = _entity$getData.width,\n height = _entity$getData.height,\n meta = _entity$getData.meta;\n\n if (mediaType === 'image') {\n\n var imageWrapStyle = {};\n var styledClassName = '';\n\n if (float) {\n imageWrapStyle.float = float;\n styledClassName += ' float-' + float;\n } else if (alignment) {\n imageWrapStyle.textAlign = alignment;\n styledClassName += ' align-' + alignment;\n }\n\n if (link) {\n return _react2.default.createElement(\n \"div\",\n { className: \"media-wrap image-wrap\" + styledClassName, style: imageWrapStyle },\n _react2.default.createElement(\n \"a\",\n { style: { display: 'inline-block' }, href: link, target: link_target },\n _react2.default.createElement(\"img\", _extends({}, nodeAttrAsProps, meta, { src: url, width: width, height: height, style: { width: width, height: height } }))\n )\n );\n } else {\n return _react2.default.createElement(\n \"div\",\n { className: \"media-wrap image-wrap\" + styledClassName, style: imageWrapStyle },\n _react2.default.createElement(\"img\", _extends({}, nodeAttrAsProps, meta, { src: url, width: width, height: height, style: { width: width, height: height } }))\n );\n }\n } else if (mediaType === 'audio') {\n return _react2.default.createElement(\n \"div\",\n { className: \"media-wrap audio-wrap\" },\n _react2.default.createElement(\"audio\", _extends({ controls: true }, nodeAttrAsProps, meta, { src: url }))\n );\n } else if (mediaType === 'video') {\n return _react2.default.createElement(\n \"div\",\n { className: \"media-wrap video-wrap\" },\n _react2.default.createElement(\"video\", _extends({ controls: true }, nodeAttrAsProps, meta, { src: url, width: width, height: height }))\n );\n } else if (mediaType === 'embed') {\n return _react2.default.createElement(\n \"div\",\n { className: \"media-wrap embed-wrap\" },\n _react2.default.createElement(\"div\", { dangerouslySetInnerHTML: { __html: url } })\n );\n } else if (mediaType === 'hr') {\n return _react2.default.createElement(\"hr\", null);\n } else {\n return _react2.default.createElement(\"p\", null);\n }\n};\n\nvar entityToHTML = function entityToHTML(options) {\n return function (entity, originalText) {\n var entityExportFn = options.entityExportFn;\n\n var entityType = entity.type.toLowerCase();\n\n if (entityExportFn) {\n var customOutput = entityExportFn(entity, originalText);\n if (customOutput) {\n return customOutput;\n }\n }\n\n if (entityType === 'link') {\n var _ref = entity.data.nodeAttributes || {},\n className = _ref.class,\n nodeAttrAsProps = _objectWithoutProperties(_ref, [\"class\"]);\n\n nodeAttrAsProps.className = className;\n return _react2.default.createElement(\"a\", _extends({ href: entity.data.href, target: entity.data.target }, nodeAttrAsProps));\n }\n };\n};\n\nvar styleToHTML = function styleToHTML(options) {\n return function (style) {\n\n var unitExportFn = options.unitExportFn || defaultUnitExportFn;\n\n if (options.styleExportFn) {\n var customOutput = options.styleExportFn(style, options);\n if (customOutput) {\n return customOutput;\n }\n }\n\n style = style.toLowerCase();\n\n if (style === 'strikethrough') {\n return _react2.default.createElement(\"span\", { style: { textDecoration: 'line-through' } });\n } else if (style === 'superscript') {\n return _react2.default.createElement(\"sup\", null);\n } else if (style === 'subscript') {\n return _react2.default.createElement(\"sub\", null);\n } else if (style.indexOf('color-') === 0) {\n return _react2.default.createElement(\"span\", { style: { color: '#' + getStyleValue(style) } });\n } else if (style.indexOf('bgcolor-') === 0) {\n return _react2.default.createElement(\"span\", { style: { backgroundColor: '#' + getStyleValue(style) } });\n } else if (style.indexOf('fontsize-') === 0) {\n return _react2.default.createElement(\"span\", { style: { fontSize: unitExportFn(getStyleValue(style), 'font-size', 'html') } });\n } else if (style.indexOf('lineheight-') === 0) {\n return _react2.default.createElement(\"span\", { style: { lineHeight: unitExportFn(getStyleValue(style), 'line-height', 'html') } });\n } else if (style.indexOf('letterspacing-') === 0) {\n return _react2.default.createElement(\"span\", { style: { letterSpacing: unitExportFn(getStyleValue(style), 'letter-spacing', 'html') } });\n } else if (style.indexOf('fontfamily-') === 0) {\n var fontFamily = options.fontFamilies.find(function (item) {\n return item.name.toLowerCase() === getStyleValue(style);\n });\n if (!fontFamily) return;\n return _react2.default.createElement(\"span\", { style: { fontFamily: fontFamily.family } });\n }\n };\n};\n\nvar blockToHTML = function blockToHTML(options) {\n return function (block) {\n var blockExportFn = options.blockExportFn,\n contentState = options.contentState;\n\n\n if (blockExportFn) {\n var customOutput = blockExportFn(contentState, block);\n if (customOutput) {\n return customOutput;\n }\n }\n\n var blockStyle = '';\n\n var blockType = block.type.toLowerCase();\n var _block$data2 = block.data,\n textAlign = _block$data2.textAlign,\n textIndent = _block$data2.textIndent,\n _block$data2$nodeAttr = _block$data2.nodeAttributes,\n nodeAttributes = _block$data2$nodeAttr === undefined ? {} : _block$data2$nodeAttr;\n\n var attributeString = spreadNodeAttributes(nodeAttributes);\n\n if (textAlign || textIndent) {\n\n blockStyle = ' style=\"';\n\n if (textAlign) {\n blockStyle += \"text-align:\" + textAlign + \";\";\n }\n\n if (textIndent && !isNaN(textIndent) && textIndent > 0) {\n blockStyle += \"text-indent:\" + textIndent * 2 + \"em;\";\n }\n\n blockStyle += '\"';\n }\n\n if (blockType === 'atomic') {\n return convertAtomicBlock(block, contentState, nodeAttributes);\n } else if (blockType === 'code-block') {\n\n var previousBlock = contentState.getBlockBefore(block.key);\n var nextBlock = contentState.getBlockAfter(block.key);\n var previousBlockType = previousBlock && previousBlock.getType();\n var nextBlockType = nextBlock && nextBlock.getType();\n\n var start = '';\n var end = '';\n\n if (previousBlockType !== 'code-block') {\n start = \"<pre\" + attributeString + \"><code>\";\n } else {\n start = '';\n }\n\n if (nextBlockType !== 'code-block') {\n end = '</code></pre>';\n } else {\n end = '<br/>';\n }\n\n return { start: start, end: end };\n } else if (blocks[blockType]) {\n return {\n start: \"<\" + blocks[blockType] + blockStyle + attributeString + \">\",\n end: \"</\" + blocks[blockType] + \">\"\n };\n } else if (blockType === 'unordered-list-item') {\n return {\n start: \"<li\" + blockStyle + attributeString + \">\",\n end: '</li>',\n nest: _react2.default.createElement(\"ul\", null)\n };\n } else if (blockType === 'ordered-list-item') {\n return {\n start: \"<li\" + blockStyle + attributeString + \">\",\n end: '</li>',\n nest: _react2.default.createElement(\"ol\", null)\n };\n }\n };\n};\n\nvar htmlToStyle = function htmlToStyle(options, source) {\n return function (nodeName, node, currentStyle) {\n\n if (!node || !node.style) {\n return currentStyle;\n }\n\n var unitImportFn = options.unitImportFn || defaultUnitImportFn;\n var newStyle = currentStyle;\n\n [].forEach.call(node.style, function (style) {\n\n if (nodeName === 'span' && style === 'color') {\n var color = getHexColor(node.style.color);\n newStyle = color ? newStyle.add('COLOR-' + color.replace('#', '').toUpperCase()) : newStyle;\n } else if (nodeName === 'span' && style === 'background-color') {\n var _color = getHexColor(node.style.backgroundColor);\n newStyle = _color ? newStyle.add('BGCOLOR-' + _color.replace('#', '').toUpperCase()) : newStyle;\n } else if (nodeName === 'span' && style === 'font-size') {\n newStyle = newStyle.add('FONTSIZE-' + unitImportFn(node.style.fontSize, 'font-size', source));\n } else if (nodeName === 'span' && style === 'line-height' && !isNaN(parseFloat(node.style.lineHeight, 10))) {\n newStyle = newStyle.add('LINEHEIGHT-' + unitImportFn(node.style.lineHeight, 'line-height', source));\n } else if (nodeName === 'span' && style === 'letter-spacing' && !isNaN(parseFloat(node.style.letterSpacing, 10))) {\n newStyle = newStyle.add('LETTERSPACING-' + unitImportFn(node.style.letterSpacing, 'letter-spacing', source));\n } else if (nodeName === 'span' && style === 'text-decoration') {\n if (node.style.textDecoration === 'line-through') {\n newStyle = newStyle.add('STRIKETHROUGH');\n } else if (node.style.textDecoration === 'underline') {\n newStyle = newStyle.add('UNDERLINE');\n }\n } else if (nodeName === 'span' && style === 'font-family') {\n var fontFamily = options.fontFamilies.find(function (item) {\n return item.family.toLowerCase() === node.style.fontFamily.toLowerCase();\n });\n if (!fontFamily) return;\n newStyle = newStyle.add('FONTFAMILY-' + fontFamily.name.toUpperCase());\n }\n });\n\n if (nodeName === 'sup') {\n newStyle = newStyle.add('SUPERSCRIPT');\n } else if (nodeName === 'sub') {\n newStyle = newStyle.add('SUBSCRIPT');\n }\n\n options.styleImportFn && (newStyle = options.styleImportFn(nodeName, node, newStyle, source) || newStyle);\n return newStyle;\n };\n};\n\nvar htmlToEntity = function htmlToEntity(options, source) {\n return function (nodeName, node, createEntity) {\n\n if (options && options.entityImportFn) {\n var customInput = options.entityImportFn(nodeName, node, createEntity, source);\n if (customInput) {\n return customInput;\n }\n }\n\n nodeName = nodeName.toLowerCase();\n\n var alt = node.alt,\n title = node.title,\n id = node.id,\n controls = node.controls,\n autoplay = node.autoplay,\n loop = node.loop,\n poster = node.poster;\n\n var meta = {};\n var nodeAttributes = {};\n\n id && (meta.id = id);\n alt && (meta.alt = alt);\n title && (meta.title = title);\n controls && (meta.controls = controls);\n autoplay && (meta.autoPlay = autoplay);\n loop && (meta.loop = loop);\n poster && (meta.poster = poster);\n\n node.attributes && Object.keys(node.attributes).forEach(function (key) {\n var attr = node.attributes[key];\n ignoredEntityNodeAttributes.indexOf(attr.name) === -1 && (nodeAttributes[attr.name] = attr.value);\n });\n\n if (nodeName === 'a' && !node.querySelectorAll('img').length) {\n var href = node.getAttribute('href');\n var _target = node.getAttribute('target');\n return createEntity('LINK', 'MUTABLE', { href: href, target: _target, nodeAttributes: nodeAttributes });\n } else if (nodeName === 'audio') {\n return createEntity('AUDIO', 'IMMUTABLE', { url: node.getAttribute('src'), meta: meta, nodeAttributes: nodeAttributes });\n } else if (nodeName === 'video') {\n return createEntity('VIDEO', 'IMMUTABLE', { url: node.getAttribute('src'), meta: meta, nodeAttributes: nodeAttributes });\n } else if (nodeName === 'img') {\n\n var parentNode = node.parentNode;\n var entityData = { meta: meta };\n var _node$style = node.style,\n width = _node$style.width,\n height = _node$style.height;\n\n\n entityData.url = node.getAttribute('src');\n width && (entityData.width = width);\n height && (entityData.height = height);\n\n if (parentNode.nodeName.toLowerCase() === 'a') {\n entityData.link = parentNode.getAttribute('href');\n entityData.link_target = parentNode.getAttribute('target');\n }\n\n return createEntity('IMAGE', 'IMMUTABLE', entityData);\n } else if (nodeName === 'hr') {\n return createEntity('HR', 'IMMUTABLE', {});\n } else if (node.parentNode && node.parentNode.classList.contains('embed-wrap')) {\n\n var embedContent = node.innerHTML || node.outerHTML;\n\n if (embedContent) {\n return createEntity('EMBED', 'IMMUTABLE', {\n url: embedContent\n });\n }\n }\n };\n};\n\nvar htmlToBlock = function htmlToBlock(options, source) {\n return function (nodeName, node) {\n\n if (options && options.blockImportFn) {\n var customInput = options.blockImportFn(nodeName, node, source);\n if (customInput) {\n return customInput;\n }\n }\n\n var nodeAttributes = {};\n var nodeStyle = node.style || {};\n\n node.attributes && Object.keys(node.attributes).forEach(function (key) {\n var attr = node.attributes[key];\n ignoredNodeAttributes.indexOf(attr.name) === -1 && (nodeAttributes[attr.name] = attr.value);\n });\n\n if (node.classList && node.classList.contains('media-wrap')) {\n\n return {\n type: 'atomic',\n data: {\n nodeAttributes: nodeAttributes,\n float: nodeStyle.float,\n alignment: nodeStyle.textAlign\n }\n };\n } else if (nodeName === 'img') {\n\n return {\n type: 'atomic',\n data: {\n nodeAttributes: nodeAttributes,\n float: nodeStyle.float,\n alignment: nodeStyle.textAlign\n }\n };\n } else if (nodeName === 'hr') {\n\n return {\n type: 'atomic',\n data: { nodeAttributes: nodeAttributes }\n };\n } else if (nodeName === 'pre') {\n\n node.innerHTML = node.innerHTML.replace(/<code(.*?)>/g, '').replace(/<\\/code>/g, '');\n\n return {\n type: 'code-block',\n data: { nodeAttributes: nodeAttributes }\n };\n } else if (blockNames.indexOf(nodeName) !== -1) {\n\n var blockData = { nodeAttributes: nodeAttributes };\n\n if (nodeStyle.textAlign) {\n blockData.textAlign = nodeStyle.textAlign;\n }\n\n if (nodeStyle.textIndent) {\n blockData.textIndent = /^\\d+em$/.test(nodeStyle.textIndent) ? Math.ceil(parseInt(nodeStyle.textIndent, 10) / 2) : 1;\n }\n\n return {\n type: blockTypes[blockNames.indexOf(nodeName)],\n data: blockData\n };\n }\n };\n};\n\nvar getToHTMLConfig = exports.getToHTMLConfig = function getToHTMLConfig(options) {\n\n return {\n styleToHTML: styleToHTML(options),\n entityToHTML: entityToHTML(options),\n blockToHTML: blockToHTML(options)\n };\n};\n\nvar getFromHTMLConfig = exports.getFromHTMLConfig = function getFromHTMLConfig(options) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknow';\n\n\n return {\n htmlToStyle: htmlToStyle(options, source),\n htmlToEntity: htmlToEntity(options, source),\n htmlToBlock: htmlToBlock(options, source)\n };\n};\n//# sourceMappingURL=configs.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertRawToEditorState = exports.convertEditorStateToRaw = exports.convertHTMLToEditorState = exports.convertEditorStateToHTML = exports.convertHTMLToRaw = exports.convertRawToHTML = undefined;\n\nvar _extends = Object.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; };\n\nvar _draftConvert = require('draft-convert');\n\nvar _configs = require('./configs');\n\nvar _draftJs = require('draft-js');\n\nvar defaultConvertOptions = {\n fontFamilies: _configs.defaultFontFamilies\n};\n\nvar convertRawToHTML = exports.convertRawToHTML = function convertRawToHTML(rawContent, options) {\n\n options = _extends({}, defaultConvertOptions, options);\n\n try {\n var contentState = (0, _draftJs.convertFromRaw)(rawContent);\n options.contentState = contentState;\n return (0, _draftConvert.convertToHTML)((0, _configs.getToHTMLConfig)(options))(contentState);\n } catch (error) {\n console.warn(error);\n return '';\n }\n};\n\nvar convertHTMLToRaw = exports.convertHTMLToRaw = function convertHTMLToRaw(HTMLString, options, source) {\n\n options = _extends({}, defaultConvertOptions, options);\n\n try {\n var contentState = (0, _draftConvert.convertFromHTML)((0, _configs.getFromHTMLConfig)(options, source))(HTMLString);\n return (0, _draftJs.convertToRaw)(contentState);\n } catch (error) {\n console.warn(error);\n return {};\n }\n};\n\nvar convertEditorStateToHTML = exports.convertEditorStateToHTML = function convertEditorStateToHTML(editorState, options) {\n\n options = _extends({}, defaultConvertOptions, options);\n\n try {\n var contentState = editorState.getCurrentContent();\n options.contentState = contentState;\n return (0, _draftConvert.convertToHTML)((0, _configs.getToHTMLConfig)(options))(contentState);\n } catch (error) {\n console.warn(error);\n return '';\n }\n};\n\nvar convertHTMLToEditorState = exports.convertHTMLToEditorState = function convertHTMLToEditorState(HTMLString, editorDecorators, options, source) {\n\n options = _extends({}, defaultConvertOptions, options);\n\n try {\n return _draftJs.EditorState.createWithContent((0, _draftConvert.convertFromHTML)((0, _configs.getFromHTMLConfig)(options, source))(HTMLString), editorDecorators);\n } catch (error) {\n console.warn(error);\n return _draftJs.EditorState.createEmpty(editorDecorators);\n }\n};\n\nvar convertEditorStateToRaw = exports.convertEditorStateToRaw = function convertEditorStateToRaw(editorState) {\n return (0, _draftJs.convertToRaw)(editorState.getCurrentContent());\n};\n\nvar convertRawToEditorState = exports.convertRawToEditorState = function convertRawToEditorState(rawContent, editorDecorators) {\n\n try {\n return _draftJs.EditorState.createWithContent((0, _draftJs.convertFromRaw)(rawContent), editorDecorators);\n } catch (error) {\n console.warn(error);\n return _draftJs.EditorState.createEmpty(editorDecorators);\n }\n};\n//# sourceMappingURL=index.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.redo = exports.undo = exports.handleKeyCommand = exports.clear = exports.setMediaPosition = exports.removeMedia = exports.setMediaData = exports.insertMedias = exports.insertHorizontalLine = exports.insertAtomicBlock = exports.insertHTML = exports.insertText = exports.toggleSelectionLetterSpacing = exports.toggleSelectionFontFamily = exports.toggleSelectionLineHeight = exports.toggleSelectionFontSize = exports.toggleSelectionBackgroundColor = exports.toggleSelectionColor = exports.decreaseSelectionIndent = exports.increaseSelectionIndent = exports.toggleSelectionIndent = exports.toggleSelectionAlignment = exports.removeSelectionInlineStyles = exports.toggleSelectionInlineStyle = exports.selectionHasInlineStyle = exports.getSelectionInlineStyle = exports.toggleSelectionLink = exports.toggleSelectionEntity = exports.getSelectionEntityData = exports.getSelectionEntityType = exports.toggleSelectionBlockType = exports.getSelectionText = exports.getSelectionBlockType = exports.getSelectionBlockData = exports.setSelectionBlockData = exports.getSelectedBlocks = exports.updateEachCharacterOfSelection = exports.getSelectionBlock = exports.removeBlock = exports.selectNextBlock = exports.selectBlock = exports.selectionContainsStrictBlock = exports.selectionContainsBlockType = exports.isSelectionCollapsed = exports.createEditorState = exports.createEmptyEditorState = exports.isEditorState = exports.registerStrictBlockType = undefined;\n\nvar _draftJs = require('draft-js');\n\nvar _draftjsUtils = require('draftjs-utils');\n\nvar _braftConvert = require('braft-convert');\n\nvar _immutable = require('immutable');\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar strictBlockTypes = ['atomic'];\n\nvar registerStrictBlockType = exports.registerStrictBlockType = function registerStrictBlockType(blockType) {\n strictBlockTypes.indexOf(blockType) === -1 && strictBlockTypes.push(blockType);\n};\n\nvar isEditorState = exports.isEditorState = function isEditorState(editorState) {\n return editorState instanceof _draftJs.EditorState;\n};\n\nvar createEmptyEditorState = exports.createEmptyEditorState = function createEmptyEditorState(editorDecorators) {\n return _draftJs.EditorState.createEmpty(editorDecorators);\n};\n\nvar createEditorState = exports.createEditorState = function createEditorState(contentState, editorDecorators) {\n return _draftJs.EditorState.createWithContent(contentState, editorDecorators);\n};\n\nvar isSelectionCollapsed = exports.isSelectionCollapsed = function isSelectionCollapsed(editorState) {\n return editorState.getSelection().isCollapsed();\n};\n\nvar selectionContainsBlockType = exports.selectionContainsBlockType = function selectionContainsBlockType(editorState, blockType) {\n return getSelectedBlocks(editorState).find(function (block) {\n return block.getType() === blockType;\n });\n};\n\nvar selectionContainsStrictBlock = exports.selectionContainsStrictBlock = function selectionContainsStrictBlock(editorState) {\n return getSelectedBlocks(editorState).find(function (block) {\n return ~strictBlockTypes.indexOf(block.getType());\n });\n};\n\nvar selectBlock = exports.selectBlock = function selectBlock(editorState, block) {\n\n var blockKey = block.getKey();\n\n return _draftJs.EditorState.forceSelection(editorState, new _draftJs.SelectionState({\n anchorKey: blockKey,\n anchorOffset: 0,\n focusKey: blockKey,\n focusOffset: block.getLength()\n }));\n};\n\nvar selectNextBlock = exports.selectNextBlock = function selectNextBlock(editorState, block) {\n var nextBlock = editorState.getCurrentContent().getBlockAfter(block.getKey());\n return nextBlock ? selectBlock(editorState, nextBlock) : editorState;\n};\n\nvar removeBlock = exports.removeBlock = function removeBlock(editorState, block) {\n var lastSelection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n\n var nextContentState = void 0,\n nextEditorState = void 0;\n var blockKey = block.getKey();\n\n nextContentState = _draftJs.Modifier.removeRange(editorState.getCurrentContent(), new _draftJs.SelectionState({\n anchorKey: blockKey,\n anchorOffset: 0,\n focusKey: blockKey,\n focusOffset: block.getLength()\n }), 'backward');\n\n nextContentState = _draftJs.Modifier.setBlockType(nextContentState, nextContentState.getSelectionAfter(), 'unstyled');\n nextEditorState = _draftJs.EditorState.push(editorState, nextContentState, 'remove-range');\n return _draftJs.EditorState.forceSelection(nextEditorState, lastSelection || nextContentState.getSelectionAfter());\n};\n\nvar getSelectionBlock = exports.getSelectionBlock = function getSelectionBlock(editorState) {\n return editorState.getCurrentContent().getBlockForKey(editorState.getSelection().getAnchorKey());\n};\n\nvar updateEachCharacterOfSelection = exports.updateEachCharacterOfSelection = function updateEachCharacterOfSelection(editorState, callback) {\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n var contentBlocks = contentState.getBlockMap();\n var selectedBlocks = getSelectedBlocks(editorState);\n\n if (selectedBlocks.length === 0) {\n return editorState;\n }\n\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n\n var nextContentBlocks = contentBlocks.map(function (block) {\n\n if (selectedBlocks.indexOf(block) === -1) {\n return block;\n }\n\n var blockKey = block.getKey();\n var charactersList = block.getCharacterList();\n var nextCharactersList = null;\n\n if (blockKey === startKey && blockKey === endKey) {\n nextCharactersList = charactersList.map(function (character, index) {\n if (index >= startOffset && index < endOffset) {\n return callback(character);\n }\n return character;\n });\n } else if (blockKey === startKey) {\n nextCharactersList = charactersList.map(function (character, index) {\n if (index >= startOffset) {\n return callback(character);\n }\n return character;\n });\n } else if (blockKey === endKey) {\n nextCharactersList = charactersList.map(function (character, index) {\n if (index < endOffset) {\n return callback(character);\n }\n return character;\n });\n } else {\n nextCharactersList = charactersList.map(function (character) {\n return callback(character);\n });\n }\n\n return block.merge({\n 'characterList': nextCharactersList\n });\n });\n\n return _draftJs.EditorState.push(editorState, contentState.merge({\n blockMap: nextContentBlocks,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n }), 'update-selection-character-list');\n};\n\nvar getSelectedBlocks = exports.getSelectedBlocks = function getSelectedBlocks(editorState) {\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n\n var startKey = selectionState.getStartKey();\n var endKey = selectionState.getEndKey();\n var isSameBlock = startKey === endKey;\n var startingBlock = contentState.getBlockForKey(startKey);\n var selectedBlocks = [startingBlock];\n\n if (!isSameBlock) {\n var blockKey = startKey;\n\n while (blockKey !== endKey) {\n var nextBlock = contentState.getBlockAfter(blockKey);\n selectedBlocks.push(nextBlock);\n blockKey = nextBlock.getKey();\n }\n }\n\n return selectedBlocks;\n};\n\nvar setSelectionBlockData = exports.setSelectionBlockData = function setSelectionBlockData(editorState, blockData, override) {\n\n var newBlockData = override ? blockData : Object.assign({}, getSelectionBlockData(editorState).toJS(), blockData);\n\n Object.keys(newBlockData).forEach(function (key) {\n if (newBlockData.hasOwnProperty(key) && newBlockData[key] === undefined) {\n delete newBlockData[key];\n }\n });\n\n return (0, _draftjsUtils.setBlockData)(editorState, newBlockData);\n};\n\nvar getSelectionBlockData = exports.getSelectionBlockData = function getSelectionBlockData(editorState, name) {\n var blockData = getSelectionBlock(editorState).getData();\n return name ? blockData.get(name) : blockData;\n};\n\nvar getSelectionBlockType = exports.getSelectionBlockType = function getSelectionBlockType(editorState) {\n return getSelectionBlock(editorState).getType();\n};\n\nvar getSelectionText = exports.getSelectionText = function getSelectionText(editorState) {\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n\n if (selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return '';\n }\n\n var anchorKey = selectionState.getAnchorKey();\n var currentContentBlock = contentState.getBlockForKey(anchorKey);\n var start = selectionState.getStartOffset();\n var end = selectionState.getEndOffset();\n\n return currentContentBlock.getText().slice(start, end);\n};\n\nvar toggleSelectionBlockType = exports.toggleSelectionBlockType = function toggleSelectionBlockType(editorState, blockType) {\n\n if (selectionContainsStrictBlock(editorState)) {\n return editorState;\n }\n\n return _draftJs.RichUtils.toggleBlockType(editorState, blockType);\n};\n\nvar getSelectionEntityType = exports.getSelectionEntityType = function getSelectionEntityType(editorState) {\n\n var entityKey = (0, _draftjsUtils.getSelectionEntity)(editorState);\n\n if (entityKey) {\n var entity = editorState.getCurrentContent().getEntity(entityKey);\n return entity ? entity.get('type') : null;\n }\n\n return null;\n};\n\nvar getSelectionEntityData = exports.getSelectionEntityData = function getSelectionEntityData(editorState, type) {\n\n var entityKey = (0, _draftjsUtils.getSelectionEntity)(editorState);\n\n if (entityKey) {\n var entity = editorState.getCurrentContent().getEntity(entityKey);\n if (entity && entity.get('type') === type) {\n return entity.getData();\n } else {\n return {};\n }\n } else {\n return {};\n }\n};\n\nvar toggleSelectionEntity = exports.toggleSelectionEntity = function toggleSelectionEntity(editorState, entity) {\n\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n\n if (selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return editorState;\n }\n\n if (!entity || !entity.type || getSelectionEntityType(editorState) === entity.type) {\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.applyEntity(contentState, selectionState, null), 'apply-entity');\n }\n\n try {\n\n var nextContentState = contentState.createEntity(entity.type, entity.mutability, entity.data);\n var entityKey = nextContentState.getLastCreatedEntityKey();\n\n var nextEditorState = _draftJs.EditorState.set(editorState, {\n currentContent: nextContentState\n });\n\n return _draftJs.EditorState.push(nextEditorState, _draftJs.Modifier.applyEntity(nextContentState, selectionState, entityKey), 'apply-entity');\n } catch (error) {\n console.warn(error);\n return editorState;\n }\n};\n\nvar toggleSelectionLink = exports.toggleSelectionLink = function toggleSelectionLink(editorState, href, target) {\n\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n\n var entityData = { href: href, target: target };\n\n if (selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return editorState;\n }\n\n if (href === false) {\n return _draftJs.RichUtils.toggleLink(editorState, selectionState, null);\n }\n\n if (href === null) {\n delete entityData.href;\n }\n\n try {\n\n var nextContentState = contentState.createEntity('LINK', 'MUTABLE', entityData);\n var entityKey = nextContentState.getLastCreatedEntityKey();\n\n var nextEditorState = _draftJs.EditorState.set(editorState, {\n currentContent: nextContentState\n });\n\n nextEditorState = _draftJs.RichUtils.toggleLink(nextEditorState, selectionState, entityKey);\n nextEditorState = _draftJs.EditorState.forceSelection(nextEditorState, selectionState.merge({\n anchorOffset: selectionState.getEndOffset(),\n focusOffset: selectionState.getEndOffset()\n }));\n\n nextEditorState = _draftJs.EditorState.push(nextEditorState, _draftJs.Modifier.insertText(nextEditorState.getCurrentContent(), nextEditorState.getSelection(), ''), 'insert-text');\n\n return nextEditorState;\n } catch (error) {\n console.warn(error);\n return editorState;\n }\n};\n\nvar getSelectionInlineStyle = exports.getSelectionInlineStyle = function getSelectionInlineStyle(editorState) {\n return editorState.getCurrentInlineStyle();\n};\n\nvar selectionHasInlineStyle = exports.selectionHasInlineStyle = function selectionHasInlineStyle(editorState, style) {\n return getSelectionInlineStyle(editorState).has(style.toUpperCase());\n};\n\nvar toggleSelectionInlineStyle = exports.toggleSelectionInlineStyle = function toggleSelectionInlineStyle(editorState, style) {\n var prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n\n var nextEditorState = editorState;\n style = prefix + style.toUpperCase();\n\n if (prefix) {\n\n nextEditorState = updateEachCharacterOfSelection(nextEditorState, function (characterMetadata) {\n\n return characterMetadata.toJS().style.reduce(function (characterMetadata, characterStyle) {\n if (characterStyle.indexOf(prefix) === 0 && style !== characterStyle) {\n return _draftJs.CharacterMetadata.removeStyle(characterMetadata, characterStyle);\n } else {\n return characterMetadata;\n }\n }, characterMetadata);\n });\n }\n\n return _draftJs.RichUtils.toggleInlineStyle(nextEditorState, style);\n};\n\nvar removeSelectionInlineStyles = exports.removeSelectionInlineStyles = function removeSelectionInlineStyles(editorState) {\n\n return updateEachCharacterOfSelection(editorState, function (characterMetadata) {\n return characterMetadata.merge({\n style: _immutable2.default.OrderedSet([])\n });\n });\n};\n\nvar toggleSelectionAlignment = exports.toggleSelectionAlignment = function toggleSelectionAlignment(editorState, alignment) {\n return setSelectionBlockData(editorState, {\n textAlign: getSelectionBlockData(editorState, 'textAlign') !== alignment ? alignment : undefined\n });\n};\n\nvar toggleSelectionIndent = exports.toggleSelectionIndent = function toggleSelectionIndent(editorState, textIndent) {\n var maxIndent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 6;\n\n return textIndent < 0 || textIndent > maxIndent || isNaN(textIndent) ? editorState : setSelectionBlockData(editorState, {\n textIndent: textIndent || undefined\n });\n};\n\nvar increaseSelectionIndent = exports.increaseSelectionIndent = function increaseSelectionIndent(editorState) {\n var maxIndent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n\n var currentIndent = getSelectionBlockData(editorState, 'textIndent') || 0;\n return toggleSelectionIndent(editorState, currentIndent + 1, maxIndent);\n};\n\nvar decreaseSelectionIndent = exports.decreaseSelectionIndent = function decreaseSelectionIndent(editorState) {\n var currentIndent = getSelectionBlockData(editorState, 'textIndent') || 0;\n return toggleSelectionIndent(editorState, currentIndent - 1);\n};\n\nvar toggleSelectionColor = exports.toggleSelectionColor = function toggleSelectionColor(editorState, color) {\n return toggleSelectionInlineStyle(editorState, color.replace('#', ''), 'COLOR-');\n};\n\nvar toggleSelectionBackgroundColor = exports.toggleSelectionBackgroundColor = function toggleSelectionBackgroundColor(editorState, color) {\n return toggleSelectionInlineStyle(editorState, color.replace('#', ''), 'BGCOLOR-');\n};\n\nvar toggleSelectionFontSize = exports.toggleSelectionFontSize = function toggleSelectionFontSize(editorState, fontSize) {\n return toggleSelectionInlineStyle(editorState, fontSize, 'FONTSIZE-');\n};\n\nvar toggleSelectionLineHeight = exports.toggleSelectionLineHeight = function toggleSelectionLineHeight(editorState, lineHeight) {\n return toggleSelectionInlineStyle(editorState, lineHeight, 'LINEHEIGHT-');\n};\n\nvar toggleSelectionFontFamily = exports.toggleSelectionFontFamily = function toggleSelectionFontFamily(editorState, fontFamily) {\n return toggleSelectionInlineStyle(editorState, fontFamily, 'FONTFAMILY-');\n};\n\nvar toggleSelectionLetterSpacing = exports.toggleSelectionLetterSpacing = function toggleSelectionLetterSpacing(editorState, letterSpacing) {\n return toggleSelectionInlineStyle(editorState, letterSpacing, 'LETTERSPACING-');\n};\n\nvar insertText = exports.insertText = function insertText(editorState, text, inlineStyle, entity) {\n\n var selectionState = editorState.getSelection();\n var currentSelectedBlockType = getSelectionBlockType(editorState);\n\n if (currentSelectedBlockType === 'atomic') {\n return editorState;\n }\n\n var entityKey = void 0;\n var contentState = editorState.getCurrentContent();\n\n if (entity && entity.type) {\n contentState = contentState.createEntity(entity.type, entity.mutability || 'MUTABLE', entity.data || entityData);\n entityKey = contentState.getLastCreatedEntityKey();\n }\n\n if (!selectionState.isCollapsed()) {\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.replaceText(contentState, selectionState, text, inlineStyle, entityKey), 'replace-text');\n } else {\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.insertText(contentState, selectionState, text, inlineStyle, entityKey), 'insert-text');\n }\n};\n\nvar insertHTML = exports.insertHTML = function insertHTML(editorState, htmlString, source) {\n\n if (!htmlString) {\n return editorState;\n }\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n var options = editorState.convertOptions || {};\n\n try {\n var _convertFromRaw = (0, _draftJs.convertFromRaw)((0, _braftConvert.convertHTMLToRaw)(htmlString, options, source)),\n blockMap = _convertFromRaw.blockMap;\n\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.replaceWithFragment(contentState, selectionState, blockMap), 'insert-fragment');\n } catch (error) {\n console.warn(error);\n return editorState;\n }\n};\n\nvar insertAtomicBlock = exports.insertAtomicBlock = function insertAtomicBlock(editorState, type) {\n var immutable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n\n if (selectionContainsStrictBlock(editorState)) {\n return insertAtomicBlock(selectNextBlock(editorState, getSelectionBlock(editorState)), type, immutable, data);\n }\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n\n if (!selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return editorState;\n }\n\n var contentStateWithEntity = contentState.createEntity(type, immutable ? 'IMMUTABLE' : 'MUTABLE', data);\n var entityKey = contentStateWithEntity.getLastCreatedEntityKey();\n var newEditorState = _draftJs.AtomicBlockUtils.insertAtomicBlock(editorState, entityKey, ' ');\n\n return newEditorState;\n};\n\nvar insertHorizontalLine = exports.insertHorizontalLine = function insertHorizontalLine(editorState) {\n return insertAtomicBlock(editorState, 'HR');\n};\n\nvar insertMedias = exports.insertMedias = function insertMedias(editorState) {\n var medias = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n\n if (!medias.length) {\n return editorState;\n }\n\n return medias.reduce(function (editorState, media) {\n var url = media.url,\n link = media.link,\n link_target = media.link_target,\n name = media.name,\n type = media.type,\n width = media.width,\n height = media.height,\n meta = media.meta;\n\n return insertAtomicBlock(editorState, type, true, { url: url, link: link, link_target: link_target, name: name, type: type, width: width, height: height, meta: meta });\n }, editorState);\n};\n\nvar setMediaData = exports.setMediaData = function setMediaData(editorState, entityKey, data) {\n return _draftJs.EditorState.push(editorState, editorState.getCurrentContent().mergeEntityData(entityKey, data), 'change-block-data');\n};\n\nvar removeMedia = exports.removeMedia = function removeMedia(editorState, mediaBlock) {\n return removeBlock(editorState, mediaBlock);\n};\n\nvar setMediaPosition = exports.setMediaPosition = function setMediaPosition(editorState, mediaBlock, position) {\n\n var newPosition = {};\n var float = position.float,\n alignment = position.alignment;\n\n\n if (typeof float !== 'undefined') {\n newPosition.float = mediaBlock.getData().get('float') === float ? null : float;\n }\n\n if (typeof alignment !== 'undefined') {\n newPosition.alignment = mediaBlock.getData().get('alignment') === alignment ? null : alignment;\n }\n\n return setSelectionBlockData(selectBlock(editorState, mediaBlock), newPosition);\n};\n\nvar clear = exports.clear = function clear(editorState) {\n\n var contentState = editorState.getCurrentContent();\n\n var firstBlock = contentState.getFirstBlock();\n var lastBlock = contentState.getLastBlock();\n\n var allSelected = new _draftJs.SelectionState({\n anchorKey: firstBlock.getKey(),\n anchorOffset: 0,\n focusKey: lastBlock.getKey(),\n focusOffset: lastBlock.getLength(),\n hasFocus: true\n });\n\n return _draftJs.RichUtils.toggleBlockType(_draftJs.EditorState.push(editorState, _draftJs.Modifier.removeRange(contentState, allSelected, 'backward'), 'remove-range'), 'unstyled');\n};\n\nvar handleKeyCommand = exports.handleKeyCommand = function handleKeyCommand(editorState, command) {\n return _draftJs.RichUtils.handleKeyCommand(editorState, command);\n};\n\nvar undo = exports.undo = function undo(editorState) {\n return _draftJs.EditorState.undo(editorState);\n};\n\nvar redo = exports.redo = function redo(editorState) {\n return _draftJs.EditorState.redo(editorState);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar braftUniqueIndex = 0;\n\nvar UniqueIndex = exports.UniqueIndex = function UniqueIndex() {\n return braftUniqueIndex += 1;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _namedColors = {\n \"aliceblue\": \"#f0f8ff\",\n \"antiquewhite\": \"#faebd7\",\n \"aqua\": \"#00ffff\",\n \"aquamarine\": \"#7fffd4\",\n \"azure\": \"#f0ffff\",\n \"beige\": \"#f5f5dc\",\n \"bisque\": \"#ffe4c4\",\n \"black\": \"#000000\",\n \"blanchedalmond\": \"#ffebcd\",\n \"blue\": \"#0000ff\",\n \"blueviolet\": \"#8a2be2\",\n \"brown\": \"#a52a2a\",\n \"burlywood\": \"#deb887\",\n \"cadetblue\": \"#5f9ea0\",\n \"chartreuse\": \"#7fff00\",\n \"chocolate\": \"#d2691e\",\n \"coral\": \"#ff7f50\",\n \"cornflowerblue\": \"#6495ed\",\n \"cornsilk\": \"#fff8dc\",\n \"crimson\": \"#dc143c\",\n \"cyan\": \"#00ffff\",\n \"darkblue\": \"#00008b\",\n \"darkcyan\": \"#008b8b\",\n \"darkgoldenrod\": \"#b8860b\",\n \"darkgray\": \"#a9a9a9\",\n \"darkgreen\": \"#006400\",\n \"darkkhaki\": \"#bdb76b\",\n \"darkmagenta\": \"#8b008b\",\n \"darkolivegreen\": \"#556b2f\",\n \"darkorange\": \"#ff8c00\",\n \"darkorchid\": \"#9932cc\",\n \"darkred\": \"#8b0000\",\n \"darksalmon\": \"#e9967a\",\n \"darkseagreen\": \"#8fbc8f\",\n \"darkslateblue\": \"#483d8b\",\n \"darkslategray\": \"#2f4f4f\",\n \"darkturquoise\": \"#00ced1\",\n \"darkviolet\": \"#9400d3\",\n \"deeppink\": \"#ff1493\",\n \"deepskyblue\": \"#00bfff\",\n \"dimgray\": \"#696969\",\n \"dodgerblue\": \"#1e90ff\",\n \"firebrick\": \"#b22222\",\n \"floralwhite\": \"#fffaf0\",\n \"forestgreen\": \"#228b22\",\n \"fuchsia\": \"#ff00ff\",\n \"gainsboro\": \"#dcdcdc\",\n \"ghostwhite\": \"#f8f8ff\",\n \"gold\": \"#ffd700\",\n \"goldenrod\": \"#daa520\",\n \"gray\": \"#808080\",\n \"green\": \"#008000\",\n \"greenyellow\": \"#adff2f\",\n \"honeydew\": \"#f0fff0\",\n \"hotpink\": \"#ff69b4\",\n \"indianred \": \"#cd5c5c\",\n \"indigo\": \"#4b0082\",\n \"ivory\": \"#fffff0\",\n \"khaki\": \"#f0e68c\",\n \"lavender\": \"#e6e6fa\",\n \"lavenderblush\": \"#fff0f5\",\n \"lawngreen\": \"#7cfc00\",\n \"lemonchiffon\": \"#fffacd\",\n \"lightblue\": \"#add8e6\",\n \"lightcoral\": \"#f08080\",\n \"lightcyan\": \"#e0ffff\",\n \"lightgoldenrodyellow\": \"#fafad2\",\n \"lightgrey\": \"#d3d3d3\",\n \"lightgreen\": \"#90ee90\",\n \"lightpink\": \"#ffb6c1\",\n \"lightsalmon\": \"#ffa07a\",\n \"lightseagreen\": \"#20b2aa\",\n \"lightskyblue\": \"#87cefa\",\n \"lightslategray\": \"#778899\",\n \"lightsteelblue\": \"#b0c4de\",\n \"lightyellow\": \"#ffffe0\",\n \"lime\": \"#00ff00\",\n \"limegreen\": \"#32cd32\",\n \"linen\": \"#faf0e6\",\n \"magenta\": \"#ff00ff\",\n \"maroon\": \"#800000\",\n \"mediumaquamarine\": \"#66cdaa\",\n \"mediumblue\": \"#0000cd\",\n \"mediumorchid\": \"#ba55d3\",\n \"mediumpurple\": \"#9370d8\",\n \"mediumseagreen\": \"#3cb371\",\n \"mediumslateblue\": \"#7b68ee\",\n \"mediumspringgreen\": \"#00fa9a\",\n \"mediumturquoise\": \"#48d1cc\",\n \"mediumvioletred\": \"#c71585\",\n \"midnightblue\": \"#191970\",\n \"mintcream\": \"#f5fffa\",\n \"mistyrose\": \"#ffe4e1\",\n \"moccasin\": \"#ffe4b5\",\n \"navajowhite\": \"#ffdead\",\n \"navy\": \"#000080\",\n \"oldlace\": \"#fdf5e6\",\n \"olive\": \"#808000\",\n \"olivedrab\": \"#6b8e23\",\n \"orange\": \"#ffa500\",\n \"orangered\": \"#ff4500\",\n \"orchid\": \"#da70d6\",\n \"palegoldenrod\": \"#eee8aa\",\n \"palegreen\": \"#98fb98\",\n \"paleturquoise\": \"#afeeee\",\n \"palevioletred\": \"#d87093\",\n \"papayawhip\": \"#ffefd5\",\n \"peachpuff\": \"#ffdab9\",\n \"peru\": \"#cd853f\",\n \"pink\": \"#ffc0cb\",\n \"plum\": \"#dda0dd\",\n \"powderblue\": \"#b0e0e6\",\n \"purple\": \"#800080\",\n \"rebeccapurple\": \"#663399\",\n \"red\": \"#ff0000\",\n \"rosybrown\": \"#bc8f8f\",\n \"royalblue\": \"#4169e1\",\n \"saddlebrown\": \"#8b4513\",\n \"salmon\": \"#fa8072\",\n \"sandybrown\": \"#f4a460\",\n \"seagreen\": \"#2e8b57\",\n \"seashell\": \"#fff5ee\",\n \"sienna\": \"#a0522d\",\n \"silver\": \"#c0c0c0\",\n \"skyblue\": \"#87ceeb\",\n \"slateblue\": \"#6a5acd\",\n \"slategray\": \"#708090\",\n \"snow\": \"#fffafa\",\n \"springgreen\": \"#00ff7f\",\n \"steelblue\": \"#4682b4\",\n \"tan\": \"#d2b48c\",\n \"teal\": \"#008080\",\n \"thistle\": \"#d8bfd8\",\n \"tomato\": \"#ff6347\",\n \"turquoise\": \"#40e0d0\",\n \"violet\": \"#ee82ee\",\n \"wheat\": \"#f5deb3\",\n \"white\": \"#ffffff\",\n \"whitesmoke\": \"#f5f5f5\",\n \"yellow\": \"#ffff00\",\n \"yellowgreen\": \"#9acd32\"\n};\n\nvar _getHexColor = function _getHexColor(color) {\n\n color = color.replace('color:', '').replace(';', '').replace(' ', '');\n\n if (/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(color)) {\n return color;\n } else if (namedColors[color]) {\n return namedColors[color];\n } else if (color.indexOf('rgb') === 0) {\n\n var rgbArray = color.split(',');\n var convertedColor = rgbArray.length < 3 ? null : '#' + [rgbArray[0], rgbArray[1], rgbArray[2]].map(function (x) {\n var hex = parseInt(x.replace(/\\D/g, ''), 10).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n\n return (/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(convertedColor) ? convertedColor : null\n );\n } else {\n return null;\n }\n};\n\nvar namedColors = exports.namedColors = _namedColors;\nvar getHexColor = exports.getHexColor = _getHexColor;\n\nvar detectColorsFromHTMLString = exports.detectColorsFromHTMLString = function detectColorsFromHTMLString(html) {\n return typeof html !== 'string' ? [] : (html.match(/color:[^;]{3,24};/g) || []).map(getHexColor).filter(function (color) {\n return color;\n });\n};\n\nvar detectColorsFromDraftState = exports.detectColorsFromDraftState = function detectColorsFromDraftState(draftState) {\n\n var result = [];\n\n if (!draftState || !draftState.blocks || !draftState.blocks.length) {\n return result;\n }\n\n draftState.blocks.forEach(function (block) {\n if (block && block.inlineStyleRanges && block.inlineStyleRanges.length) {\n block.inlineStyleRanges.forEach(function (inlineStyle) {\n if (inlineStyle.style && inlineStyle.style.indexOf('COLOR-') >= 0) {\n result.push('#' + inlineStyle.style.split('COLOR-')[1]);\n }\n });\n }\n });\n\n return result.filter(function (color) {\n return color;\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorUtils = exports.BaseUtils = exports.ContentUtils = undefined;\n\nvar _content = require('./content');\n\nvar _ContentUtils = _interopRequireWildcard(_content);\n\nvar _base = require('./base');\n\nvar _BaseUtils = _interopRequireWildcard(_base);\n\nvar _color = require('./color');\n\nvar _ColorUtils = _interopRequireWildcard(_color);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar ContentUtils = exports.ContentUtils = _ContentUtils;\nvar BaseUtils = exports.BaseUtils = _BaseUtils;\nvar ColorUtils = exports.ColorUtils = _ColorUtils;","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"react\")) : factory(root[\"react\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 20);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar compressImage = exports.compressImage = function compressImage(url) {\n var width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1280;\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 800;\n\n\n return new Promise(function (resolve, reject) {\n\n var image = new Image();\n\n image.src = url;\n\n image.onerror = function (error) {\n reject(error);\n };\n\n image.onload = function () {\n\n try {\n\n var compressCanvas = document.createElement('canvas');\n var scale = this.width > width || this.height > height ? this.width > this.height ? width / this.width : height / this.height : 1;\n\n compressCanvas.width = this.width * scale;\n compressCanvas.height = this.height * scale;\n\n var canvasContext = compressCanvas.getContext('2d');\n canvasContext.drawImage(this, 0, 0, compressCanvas.width, compressCanvas.height);\n\n resolve({\n url: compressCanvas.toDataURL('image/png', 1),\n width: compressCanvas.width,\n height: compressCanvas.height\n });\n } catch (error) {\n reject(error);\n }\n };\n });\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar UniqueIndex = exports.UniqueIndex = function UniqueIndex() {\n\n if (isNaN(window.__BRAFT_MM_UNIQUE_INDEX__)) {\n window.__BRAFT_MM_UNIQUE_INDEX__ = 1;\n } else {\n window.__BRAFT_MM_UNIQUE_INDEX__ += 1;\n }\n\n return window.__BRAFT_MM_UNIQUE_INDEX__;\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__2__;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: 'Kaldır',\n cancel: 'İptal',\n confirm: 'Onayla',\n insert: 'Seçilenleri ekle',\n width: 'Genişlik',\n height: 'Yükseklik',\n image: 'Resim',\n video: 'Görüntü',\n audio: 'Ses',\n embed: 'Nesne göm',\n caption: 'Kitaplık',\n dragTip: 'Tıkla ya da dosya sürükle',\n dropTip: 'Yüklemek için sürükleyin',\n selectAll: 'Tümünü seç',\n deselect: 'Seçimi kaldır',\n removeSelected: 'Seçilenleri kaldır',\n externalInputPlaceHolder: 'Kaynak adı|Kaynak bağlantısı',\n externalInputTip: 'Kaynak asını ve bağlantısını \"|\" ile ayırın ve Enter\\' a basın.',\n addLocalFile: 'Yerel\\' den ekle',\n addExternalSource: 'Harici kaynaktan ekle',\n unnamedItem: 'Adlandırılmamış giriş',\n confirmInsert: 'Seçilenleri ekle'\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: '削除する',\n cancel: 'キャンセル',\n confirm: '確認する',\n insert: '選択したアイテムを挿入',\n width: '幅',\n height: '身長',\n image: '絵',\n video: 'ビデオ',\n audio: '音声',\n embed: '埋め込みメディア',\n caption: 'メディアライブラリー',\n dragTip: 'ファイルをこの位置までクリックまたはドラッグします',\n dropTip: 'アップロードするマウスを放します',\n selectAll: 'すべて選択',\n deselect: '選択を解除',\n removeSelected: '選択したアイテムを削除',\n externalInputPlaceHolder: 'リソース名|リソースアドレス',\n externalInputTip: 'リソース名とリソースアドレスは \"|\"で区切ります。',\n addLocalFile: 'ローカルリソースを追加する',\n addExternalSource: 'ネットワークリソースを追加する',\n unnamedItem: '名前のないアイテム',\n confirmInsert: '選択したアイテムを挿入'\n};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: '삭제',\n cancel: '취소',\n confirm: '확인',\n insert: '선택한항목삽입',\n width: '너비',\n height: '높이',\n image: '그림',\n video: '비디오',\n audio: '오디오',\n embed: '임베디드미디어',\n caption: '미디어라이브러리',\n dragTip: '파일을 클릭하거나이 지점으로 드래그하십시오.',\n dropTip: '업로드하려면마우스를놓으십시오.',\n selectAll: '모두 선택',\n deselect: '선택 취소',\n removeSelected: '선택한 항목 삭제',\n externalInputPlaceHolder: '리소스 이름 | 리소스 주소',\n externalInputTip: '자원 이름과 자원 주소를 \"|\"',\n addLocalFile: '로컬 리소스 추가',\n addExternalSource: '네트워크 리소스 추가',\n unnamedItem: '이름없는 항목',\n confirmInsert: '선택한 항목 삽입'\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: 'Usuń',\n cancel: 'Anuluj',\n confirm: 'Potwierdź',\n insert: 'Wstaw wybrane elementy',\n width: 'Szerokość',\n height: 'Wysokość',\n image: 'Obraz',\n video: 'Wideo',\n audio: 'Dźwięk',\n embed: 'Obiekt',\n caption: 'Biblioteka mediów',\n dragTip: 'Kliknij lub przenieś tu pliki',\n dropTip: 'Upuść aby dodać plik',\n selectAll: 'Zaznacz wszystko',\n deselect: 'Odznacz',\n removeSelected: 'Usuń wybrane',\n externalInputPlaceHolder: 'Nazwa źródła|Adres URL',\n externalInputTip: 'Oddziel nazwę i adres URL źródła z pomocą \"|\", Potwierdź Enter-em',\n addLocalFile: 'Dodaj z komputera',\n addExternalSource: 'Dodaj z Internetu',\n unnamedItem: 'Bez nazwy',\n confirmInsert: 'Dodaj wybrane elementy'\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: '删除',\n cancel: '取消',\n confirm: '确认',\n insert: '插入所选项目',\n width: '宽度',\n height: '高度',\n image: '图片',\n video: '视频',\n audio: '音频',\n embed: '嵌入式媒体',\n caption: '媒体库',\n dragTip: '点击或拖动文件至此',\n dropTip: '放开鼠标以上传',\n selectAll: '选择全部',\n deselect: '取消选择',\n removeSelected: '删除选中项目',\n externalInputPlaceHolder: '资源名称|资源地址',\n externalInputTip: '使用“|”分隔资源名称和资源地址',\n addLocalFile: '添加本地资源',\n addExternalSource: '添加网络资源',\n unnamedItem: '未命名项目',\n confirmInsert: '插入选中项目'\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: '删除',\n cancel: '取消',\n confirm: '确认',\n insert: '插入所选项目',\n width: '宽度',\n height: '高度',\n image: '图片',\n video: '视频',\n audio: '音频',\n embed: '嵌入式媒体',\n caption: '媒体库',\n dragTip: '点击或拖动文件至此',\n dropTip: '放开鼠标以上传',\n selectAll: '选择全部',\n deselect: '取消选择',\n removeSelected: '删除选中项目',\n externalInputPlaceHolder: '资源名称|资源地址',\n externalInputTip: '使用“|”分隔资源名称和资源地址',\n addLocalFile: '添加本地资源',\n addExternalSource: '添加网络资源',\n unnamedItem: '未命名项目',\n confirmInsert: '插入选中项目'\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: 'Remove',\n cancel: 'Cancel',\n confirm: 'Confirm',\n insert: 'Insert Selected Items',\n width: 'Width',\n height: 'Height',\n image: 'Image',\n video: 'Video',\n audio: 'Audio',\n embed: 'Embed',\n caption: 'Media Library',\n dragTip: 'Click Or Drag Files Here',\n dropTip: 'Drop To Upload',\n selectAll: 'Select All',\n deselect: 'Deselect',\n removeSelected: 'Remove Selected Items',\n externalInputPlaceHolder: 'Source Name|Source URL',\n externalInputTip: 'Split source name and source URL with \"|\", confirm by hit Enter.',\n addLocalFile: 'Add from local',\n addExternalSource: 'Add from Internet',\n unnamedItem: 'Unnamed Item',\n confirmInsert: 'Insert selected items'\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _en = __webpack_require__(9);\n\nvar _en2 = _interopRequireDefault(_en);\n\nvar _zh = __webpack_require__(8);\n\nvar _zh2 = _interopRequireDefault(_zh);\n\nvar _zhHant = __webpack_require__(7);\n\nvar _zhHant2 = _interopRequireDefault(_zhHant);\n\nvar _pl = __webpack_require__(6);\n\nvar _pl2 = _interopRequireDefault(_pl);\n\nvar _kr = __webpack_require__(5);\n\nvar _kr2 = _interopRequireDefault(_kr);\n\nvar _jpn = __webpack_require__(4);\n\nvar _jpn2 = _interopRequireDefault(_jpn);\n\nvar _tr = __webpack_require__(3);\n\nvar _tr2 = _interopRequireDefault(_tr);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n \"en\": _en2.default,\n \"zh\": _zh2.default,\n \"zh-hant\": _zhHant2.default,\n \"pl\": _pl2.default,\n \"kr\": _kr2.default,\n \"jpn\": _jpn2.default,\n \"tr\": _tr2.default\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(11);\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = options.transform(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:font/ttf;base64,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\"\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nmodule.exports = function escape(url) {\n if (typeof url !== 'string') {\n return url\n }\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]/.test(url)) {\n return '\"' + url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') + '\"'\n }\n\n return url\n}\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar escape = __webpack_require__(15);\nexports = module.exports = __webpack_require__(14)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"@font-face {\\n font-family: 'bf-icons';\\n src: url(\" + escape(__webpack_require__(13)) + \") format(\\\"truetype\\\");\\n font-weight: normal;\\n font-style: normal; }\\n\\n.braft-finder [class^=\\\"braft-icon-\\\"], .braft-finder [class*=\\\" braft-icon-\\\"] {\\n /* use !important to prevent issues with browser extensions that change fonts */\\n font-family: 'bf-icons' !important;\\n font-style: normal;\\n font-weight: normal;\\n font-variant: normal;\\n text-transform: none;\\n /* Better Font Rendering =========== */\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale; }\\n\\n.braft-finder .braft-icon-code:before {\\n content: \\\"\\\\E903\\\"; }\\n\\n.braft-finder .braft-icon-pause:before {\\n content: \\\"\\\\E034\\\"; }\\n\\n.braft-finder .braft-icon-play_arrow:before {\\n content: \\\"\\\\E037\\\"; }\\n\\n.braft-finder .braft-icon-bin:before {\\n content: \\\"\\\\E9AC\\\"; }\\n\\n.braft-finder .braft-icon-replay:before {\\n content: \\\"\\\\E042\\\"; }\\n\\n.braft-finder .braft-icon-close:before {\\n content: \\\"\\\\E913\\\"; }\\n\\n.braft-finder .braft-icon-music:before {\\n content: \\\"\\\\E90E\\\"; }\\n\\n.braft-finder .braft-icon-camera:before {\\n content: \\\"\\\\E911\\\"; }\\n\\n.braft-finder .braft-icon-file-text:before {\\n content: \\\"\\\\E926\\\"; }\\n\\n.braft-finder .braft-icon-film:before {\\n content: \\\"\\\\E91C\\\"; }\\n\\n.braft-finder .braft-icon-paste:before {\\n content: \\\"\\\\E92D\\\"; }\\n\\n.braft-finder .braft-icon-spinner:before {\\n content: \\\"\\\\E980\\\"; }\\n\\n.braft-finder .braft-icon-media:before {\\n content: \\\"\\\\E90F\\\"; }\\n\\n.braft-finder .braft-icon-add:before {\\n content: \\\"\\\\E918\\\"; }\\n\\n.braft-finder .braft-icon-done:before {\\n content: \\\"\\\\E912\\\"; }\\n\\n.braft-finder .braft-icon-drop-down:before {\\n content: \\\"\\\\E906\\\"; }\\n\\n.braft-finder .braft-icon-drop-up:before {\\n content: \\\"\\\\E909\\\"; }\\n\\n.braft-finder .braft-icon-help:before {\\n content: \\\"\\\\E902\\\"; }\\n\\n.braft-finder .braft-icon-info:before {\\n content: \\\"\\\\E901\\\"; }\\n\\n.braft-finder .braft-icon-menu:before {\\n content: \\\"\\\\E908\\\"; }\\n\\n.pull-left {\\n float: left; }\\n\\n.pull-right {\\n float: right; }\\n\\n.braft-finder .bf-uploader {\\n position: relative;\\n height: 370px;\\n margin: 0; }\\n .braft-finder .bf-uploader.draging .bf-list-wrap,\\n .braft-finder .bf-uploader.draging .bf-add-external {\\n pointer-events: none; }\\n .braft-finder .bf-uploader input::-webkit-input-placeholder {\\n color: #ccc; }\\n .braft-finder .bf-uploader input::-moz-placeholder {\\n color: #ccc; }\\n .braft-finder .bf-uploader input::-ms-input-placeholder {\\n color: #ccc; }\\n\\n.braft-finder .bf-list-wrap {\\n position: relative;\\n height: 370px; }\\n\\n.braft-finder .bf-list-tools {\\n z-index: 1;\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: 0;\\n height: 20px;\\n padding: 0 15px;\\n background-color: #fff; }\\n .braft-finder .bf-list-tools span {\\n height: 26px;\\n font-size: 12px;\\n line-height: 20px;\\n cursor: pointer;\\n user-select: none; }\\n .braft-finder .bf-list-tools span[disabled] {\\n opacity: .3;\\n pointer-events: none; }\\n .braft-finder .bf-list-tools .bf-select-all,\\n .braft-finder .bf-list-tools .bf-deselect-all {\\n float: left;\\n margin-right: 5px;\\n color: #bbb; }\\n .braft-finder .bf-list-tools .bf-select-all:hover,\\n .braft-finder .bf-list-tools .bf-deselect-all:hover {\\n color: #3498db; }\\n .braft-finder .bf-list-tools .bf-remove-selected {\\n float: right;\\n color: #e74c3c; }\\n .braft-finder .bf-list-tools .bf-remove-selected:hover {\\n color: #c92e1e; }\\n\\n.braft-finder .bf-list {\\n position: absolute;\\n z-index: 1;\\n top: 30px;\\n right: 0;\\n left: 0;\\n bottom: 0;\\n margin: 0;\\n padding: 0 10px;\\n list-style: none;\\n overflow: auto; }\\n .braft-finder .bf-list::-webkit-scrollbar {\\n width: 5px;\\n height: 5px;\\n background-color: #fff; }\\n .braft-finder .bf-list::-webkit-scrollbar-track {\\n background-color: #fff; }\\n .braft-finder .bf-list::-webkit-scrollbar-thumb {\\n background-color: rgba(0, 0, 0, 0.1); }\\n\\n.braft-finder .bf-item,\\n.braft-finder .bf-add-item {\\n position: relative;\\n display: block;\\n float: left;\\n width: 113px;\\n height: 113px;\\n margin: 5px;\\n overflow: hidden;\\n border-radius: 3px; }\\n\\n.braft-finder .bf-item.uploading {\\n pointer-events: none; }\\n\\n.braft-finder .bf-item.error::before {\\n display: block;\\n content: \\\"\\\\E901\\\"; }\\n\\n.braft-finder .bf-item.error::after {\\n position: absolute;\\n z-index: 1;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: rgba(231, 76, 60, 0.8);\\n content: ''; }\\n\\n.braft-finder .bf-item.error:hover::after {\\n background-color: rgba(231, 76, 60, 0.9); }\\n\\n.braft-finder .bf-item.error .bf-item-uploading {\\n display: none; }\\n\\n.braft-finder .bf-add-item {\\n background-color: #ecedef;\\n color: #999; }\\n .braft-finder .bf-add-item:hover {\\n background-color: #e1e2e3; }\\n .braft-finder .bf-add-item i {\\n display: block;\\n width: 113px;\\n height: 113px;\\n font-size: 48px;\\n line-height: 113px;\\n text-align: center; }\\n .braft-finder .bf-add-item input {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n opacity: 0;\\n cursor: pointer; }\\n\\n.braft-finder .bf-item::before {\\n display: none;\\n position: absolute;\\n z-index: 2;\\n top: 0;\\n left: 0;\\n width: 113px;\\n height: 113px;\\n color: #fff;\\n font-size: 48px;\\n font-family: 'bf-icons';\\n line-height: 113px;\\n text-align: center; }\\n\\n.braft-finder .bf-item::after {\\n position: absolute;\\n z-index: 1;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: rgba(52, 152, 219, 0);\\n content: ''; }\\n\\n.braft-finder .bf-item:hover::after {\\n background-color: rgba(52, 152, 219, 0.3); }\\n\\n.braft-finder .bf-item:hover .bf-item-remove {\\n display: block; }\\n\\n.braft-finder .bf-item.active::before {\\n display: block;\\n content: \\\"\\\\E912\\\"; }\\n\\n.braft-finder .bf-item.active::after {\\n background-color: rgba(52, 152, 219, 0.6); }\\n\\n.braft-finder .bf-item.active:hover::after {\\n background-color: rgba(52, 152, 219, 0.8); }\\n\\n.braft-finder .bf-item.active:hover .bf-item-remove {\\n display: none; }\\n\\n.braft-finder .bf-item-uploading {\\n box-sizing: border-box;\\n position: absolute;\\n z-index: 3;\\n top: 52px;\\n left: 10px;\\n width: 93px;\\n height: 10px;\\n overflow: hidden;\\n background-color: rgba(255, 255, 255, 0.3);\\n border-radius: 5px;\\n box-shadow: 0 0 0 100px rgba(0, 0, 0, 0.5); }\\n\\n.braft-finder .bf-item-uploading-bar {\\n height: 10px;\\n background-color: #3498db;\\n border-radius: 0; }\\n\\n.braft-finder .bf-item-remove {\\n display: none;\\n position: absolute;\\n z-index: 2;\\n top: 0;\\n right: 0;\\n width: 28px;\\n height: 28px;\\n color: #fff;\\n font-size: 18px;\\n line-height: 28px;\\n text-align: center;\\n cursor: pointer; }\\n .braft-finder .bf-item-remove:hover {\\n color: #e74c3c; }\\n\\n.braft-finder .bf-item-title {\\n display: none;\\n box-sizing: border-box;\\n position: absolute;\\n z-index: 2;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 40px;\\n padding: 0 5px;\\n overflow: hidden;\\n background-image: linear-gradient(rgba(0, 0, 0, 0), black);\\n color: #fff;\\n font-size: 12px;\\n line-height: 55px;\\n text-align: center;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n.braft-finder .bf-image {\\n width: 100%;\\n height: 100%;\\n background-color: #eee;\\n user-select: none; }\\n .braft-finder .bf-image img {\\n display: block;\\n width: 100%;\\n height: 100%;\\n object-fit: cover; }\\n\\n.braft-finder .bf-video {\\n background-color: #8e44ad; }\\n\\n.braft-finder .bf-audio {\\n background-color: #f39c12; }\\n\\n.braft-finder .bf-embed {\\n background-color: #f1c40f; }\\n\\n.braft-finder .bf-icon {\\n display: block;\\n width: 113px;\\n height: 113px;\\n overflow: hidden;\\n color: #fff;\\n text-align: center;\\n text-decoration: none; }\\n .braft-finder .bf-icon i, .braft-finder .bf-icon span {\\n display: block; }\\n .braft-finder .bf-icon i {\\n margin-top: 35px;\\n font-size: 24px; }\\n .braft-finder .bf-icon span {\\n width: 103px;\\n margin: 10px auto;\\n overflow: hidden;\\n font-size: 12px;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n.braft-finder .bf-drag-uploader {\\n box-sizing: border-box;\\n position: absolute;\\n z-index: 2;\\n top: 0;\\n right: 15px;\\n left: 15px;\\n height: 100%;\\n background-color: #fff;\\n border: dashed 1px #bbb;\\n text-align: center;\\n opacity: 0;\\n pointer-events: none; }\\n .braft-finder .bf-drag-uploader:hover, .braft-finder .bf-drag-uploader.draging {\\n background-color: #f1f2f3; }\\n .braft-finder .bf-drag-uploader.active {\\n opacity: 1;\\n pointer-events: auto; }\\n\\n.braft-finder .bf-uploader-buttons {\\n height: 370px;\\n margin: auto;\\n text-align: center; }\\n\\n.braft-finder .bf-drag-tip {\\n display: inline-block;\\n margin-top: 150px;\\n color: #ccc;\\n text-align: center;\\n font-size: 28px;\\n font-weight: normal;\\n line-height: 40px; }\\n .braft-finder .bf-drag-tip input {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n opacity: 0;\\n color: #fff;\\n text-indent: -100px;\\n cursor: pointer; }\\n\\n.braft-finder .bf-manager-footer {\\n height: 36px;\\n margin: 10px 0;\\n padding: 0 15px; }\\n .braft-finder .bf-manager-footer .button {\\n float: right;\\n height: 36px;\\n margin-left: 5px;\\n padding: 0 35px;\\n font-size: 12px;\\n font-weight: 700;\\n border: none;\\n border-radius: 3px;\\n cursor: pointer; }\\n .braft-finder .bf-manager-footer .button-insert {\\n color: #fff;\\n background-color: #3498db; }\\n .braft-finder .bf-manager-footer .button-insert:hover {\\n background-color: #2084c7; }\\n .braft-finder .bf-manager-footer .button-insert[disabled] {\\n opacity: .3;\\n pointer-events: none;\\n filter: grayscale(0.4); }\\n .braft-finder .bf-manager-footer .button-cancel {\\n color: #999;\\n background-color: #e8e8e9; }\\n .braft-finder .bf-manager-footer .button-cancel:hover {\\n background-color: #d8d8d9; }\\n\\n.braft-finder .bf-toggle-external-form {\\n color: #666;\\n font-size: 12px;\\n line-height: 36px; }\\n .braft-finder .bf-toggle-external-form span {\\n color: #bbb;\\n line-height: 16px;\\n cursor: pointer;\\n user-select: none; }\\n .braft-finder .bf-toggle-external-form span:hover {\\n color: #3498db; }\\n .braft-finder .bf-toggle-external-form span i {\\n position: relative;\\n top: 2px;\\n font-size: 16px; }\\n\\n.braft-finder .bf-add-external {\\n position: absolute;\\n z-index: 3;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: #fff; }\\n .braft-finder .bf-add-external input {\\n border: solid 1px rgba(0, 0, 0, 0.3);\\n border: solid 0.5px rgba(0, 0, 0, 0.3);\\n box-shadow: none; }\\n .braft-finder .bf-add-external input:focus {\\n border-color: #3498db;\\n box-shadow: none; }\\n\\n.braft-finder .bf-external-form {\\n width: 500px;\\n max-width: 90%;\\n margin: 91px auto 0 auto; }\\n\\n.braft-finder .bf-external-input {\\n position: relative;\\n width: 100%;\\n height: 40px;\\n margin-bottom: 10px; }\\n .braft-finder .bf-external-input div {\\n position: absolute;\\n top: 0;\\n right: 85px;\\n left: 0;\\n height: 40px; }\\n .braft-finder .bf-external-input input,\\n .braft-finder .bf-external-input textarea {\\n display: block;\\n box-sizing: border-box;\\n width: 100%;\\n height: 40px;\\n padding: 0 10px;\\n border: none;\\n border-radius: 3px;\\n outline: none;\\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.3);\\n color: #999;\\n font-size: 18px; }\\n .braft-finder .bf-external-input input:focus,\\n .braft-finder .bf-external-input textarea:focus {\\n box-shadow: inset 0 0 0 1px #3498db; }\\n .braft-finder .bf-external-input textarea {\\n height: 100px;\\n font-size: 14px; }\\n .braft-finder .bf-external-input button {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 80px;\\n height: 40px;\\n background-color: #3498db;\\n border: none;\\n border-radius: 3px;\\n color: #fff;\\n font-size: 14px;\\n font-weight: bold;\\n cursor: pointer; }\\n .braft-finder .bf-external-input button:disabled {\\n opacity: .3;\\n pointer-events: none;\\n filter: grayscale(0.4); }\\n .braft-finder .bf-external-input button:hover {\\n background-color: #2084c7; }\\n\\n.braft-finder .bf-switch-external-type {\\n overflow: hidden;\\n text-align: center; }\\n .braft-finder .bf-switch-external-type button {\\n width: auto;\\n height: 30px;\\n margin: 10px 5px;\\n padding: 0 10px;\\n background-color: #e8e9ea;\\n border: none;\\n border-radius: 3px;\\n color: #999;\\n font-size: 12px;\\n cursor: pointer; }\\n .braft-finder .bf-switch-external-type button:hover {\\n background-color: #d8d9da; }\\n .braft-finder .bf-switch-external-type button:only-child {\\n display: none; }\\n .braft-finder .bf-switch-external-type[data-type=\\\"IMAGE\\\"] [data-type=\\\"IMAGE\\\"],\\n .braft-finder .bf-switch-external-type[data-type=\\\"VIDEO\\\"] [data-type=\\\"VIDEO\\\"],\\n .braft-finder .bf-switch-external-type[data-type=\\\"AUDIO\\\"] [data-type=\\\"AUDIO\\\"],\\n .braft-finder .bf-switch-external-type[data-type=\\\"EMBED\\\"] [data-type=\\\"EMBED\\\"],\\n .braft-finder .bf-switch-external-type[data-type=\\\"FILE\\\"] [data-type=\\\"FILE\\\"] {\\n background-color: #3498db;\\n color: #fff; }\\n\\n.braft-finder .bf-external-tip {\\n display: block;\\n margin-top: 15px;\\n color: #ccc;\\n font-size: 12px;\\n text-align: center; }\\n\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(16);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(12)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {}\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(17);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _base = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaultAccepts = {\n image: 'image/png,image/jpeg,image/gif,image/webp,image/apng,image/svg',\n video: 'video/mp4',\n audio: 'audio/mp3'\n};\n\nvar BraftFinderView = function (_React$Component) {\n _inherits(BraftFinderView, _React$Component);\n\n function BraftFinderView(props) {\n _classCallCheck(this, BraftFinderView);\n\n var _this = _possibleConstructorReturn(this, (BraftFinderView.__proto__ || Object.getPrototypeOf(BraftFinderView)).call(this, props));\n\n _this.toggleSelectItem = function (event) {\n\n var itemId = event.currentTarget.dataset.id;\n var item = _this.controller.getMediaItem(itemId);\n\n if (!item) {\n return false;\n }\n\n if (item.selected) {\n\n if (!_this.props.onBeforeDeselect || _this.props.onBeforeDeselect([item], _this.controller.getItems()) !== false) {\n _this.controller.deselectMediaItem(itemId);\n _this.props.onDeselect && _this.props.onDeselect([item], _this.controller.getItems());\n }\n } else {\n\n if (!_this.props.onBeforeSelect || _this.props.onBeforeSelect([item], _this.controller.getItems()) !== false) {\n _this.controller.selectMediaItem(itemId);\n _this.props.onSelect && _this.props.onSelect([item], _this.controller.getItems());\n }\n }\n };\n\n _this.removeItem = function (event) {\n\n var itemId = event.currentTarget.dataset.id;\n var item = _this.controller.getMediaItem(itemId);\n\n if (!item) {\n return false;\n }\n\n if (!_this.props.onBeforeRemove || _this.props.onBeforeRemove([item], _this.controller.getItems()) !== false) {\n _this.controller.removeMediaItem(itemId);\n _this.props.onRemove && _this.props.onRemove([item], _this.controller.getItems());\n }\n\n event.stopPropagation();\n };\n\n _this.selectAllItems = function () {\n\n var allItems = _this.controller.getItems();\n\n if (!_this.props.onBeforeSelect || _this.props.onBeforeSelect(allItems, allItems) !== false) {\n _this.controller.selectAllItems();\n _this.props.onSelect && _this.props.onSelect(allItems, allItems);\n }\n };\n\n _this.deselectAllItems = function () {\n\n var allItems = _this.controller.getItems();\n\n if (!_this.props.onBeforeDeselect || _this.props.onBeforeDeselect(allItems, allItems) !== false) {\n _this.controller.deselectAllItems();\n _this.props.onDeselect && _this.props.onDeselect(allItems, allItems);\n }\n };\n\n _this.removeSelectedItems = function () {\n\n var selectedItems = _this.controller.getSelectedItems();\n\n if (!_this.props.onBeforeRemove || _this.props.onBeforeRemove(selectedItems, _this.controller.getItems()) !== false) {\n _this.controller.removeSelectedItems();\n _this.props.onRemove && _this.props.onRemove(selectedItems, _this.controller.getItems());\n }\n };\n\n _this.handleDragLeave = function (event) {\n event.preventDefault();\n _this.dragCounter--;\n _this.dragCounter === 0 && _this.setState({\n draging: false\n });\n };\n\n _this.handleDragDrop = function (event) {\n event.preventDefault();\n _this.dragCounter = 0;\n _this.setState({ draging: false });\n _this.reslovePickedFiles(event);\n };\n\n _this.handleDragEnter = function (event) {\n event.preventDefault();\n _this.dragCounter++;\n _this.setState({ draging: true });\n };\n\n _this.reslovePickedFiles = function (event) {\n\n event.persist();\n\n var _ref = event.type === 'drop' ? event.dataTransfer : event.target,\n files = _ref.files;\n\n if (_this.props.onFileSelect) {\n var result = _this.props.onFileSelect(files);\n if (result === false) {\n return false;\n } else if (result instanceof FileList || result instanceof Array) {\n files = result;\n }\n }\n\n var accepts = _extends({}, defaultAccepts, _this.props.accepts);\n\n _this.controller.resolveFiles({\n files: files,\n onItemReady: function onItemReady(_ref2) {\n var id = _ref2.id;\n return _this.controller.selectMediaItem(id);\n },\n onAllReady: function onAllReady() {\n return event.target.value = null;\n }\n }, 0, accepts);\n };\n\n _this.inputExternal = function (event) {\n _this.setState({\n external: _extends({}, _this.state.external, {\n url: event.target.value\n })\n });\n };\n\n _this.switchExternalType = function (event) {\n _this.setState({\n external: _extends({}, _this.state.external, { type: event.target.dataset.type })\n });\n };\n\n _this.confirmAddExternal = function (event) {\n\n if (event.target.nodeName.toLowerCase() === 'button' || event.keyCode === 13) {\n var _this$state$external = _this.state.external,\n url = _this$state$external.url,\n type = _this$state$external.type;\n\n url = url.split('|');\n var name = url.length > 1 ? url[0] : _this.props.language.unnamedItem;\n url = url.length > 1 ? url[1] : url[0];\n var thumbnail = type === 'IMAGE' ? url : null;\n\n _this.controller.addItems([{\n thumbnail: thumbnail, url: url, name: name, type: type,\n id: new Date().getTime() + '_' + (0, _base.UniqueIndex)(),\n uploading: false,\n uploadProgress: 1,\n selected: true\n }]);\n\n _this.setState({\n showExternalForm: false,\n external: {\n url: '',\n type: 'IMAGE'\n }\n });\n }\n };\n\n _this.toggleExternalForm = function () {\n _this.setState({\n showExternalForm: !_this.state.showExternalForm\n });\n };\n\n _this.cancelInsert = function () {\n _this.props.onCancel && _this.props.onCancel();\n };\n\n _this.confirmInsert = function () {\n\n var selectedItems = _this.controller.getSelectedItems();\n\n if (_this.props.onBeforeInsert) {\n\n var filteredItems = _this.props.onBeforeInsert(selectedItems);\n\n if (filteredItems && filteredItems instanceof Array) {\n _this.controller.deselectAllItems();\n _this.props.onInsert && _this.props.onInsert(filteredItems);\n } else if (filteredItems !== false) {\n _this.controller.deselectAllItems();\n _this.props.onInsert && _this.props.onInsert(selectedItems);\n }\n } else {\n _this.controller.deselectAllItems();\n _this.props.onInsert && _this.props.onInsert(selectedItems);\n }\n };\n\n _this.dragCounter = 0;\n _this.controller = _this.props.controller;\n var initialItems = _this.controller.getItems();\n\n _this.state = {\n draging: false,\n error: false,\n confirmable: initialItems.find(function (_ref3) {\n var selected = _ref3.selected;\n return selected;\n }),\n external: {\n url: '',\n type: 'IMAGE'\n },\n fileAccept: '',\n showExternalForm: false,\n allowExternal: false,\n items: initialItems\n };\n\n _this.changeListenerId = _this.controller.onChange(function (items) {\n _this.setState({ items: items, confirmable: items.find(function (_ref4) {\n var selected = _ref4.selected;\n return selected;\n }) });\n _this.props.onChange && _this.props.onChange(items);\n });\n\n return _this;\n }\n\n _createClass(BraftFinderView, [{\n key: 'mapPropsToState',\n value: function mapPropsToState(props) {\n var accepts = props.accepts,\n externals = props.externals;\n\n\n accepts = _extends({}, defaultAccepts, accepts);\n\n var fileAccept = !accepts ? [defaultAccepts.image, defaultAccepts.video, defaultAccepts.audio].join(',') : [accepts.image, accepts.video, accepts.audio].filter(function (item) {\n return item;\n }).join(',');\n\n var external = {\n url: '',\n type: externals.image ? 'IMAGE' : externals.audio ? 'AUDIO' : externals.video ? 'VIDEO' : externals.embed ? 'EMBED' : ''\n };\n\n return {\n fileAccept: fileAccept,\n external: external,\n allowExternal: externals && (externals.image || externals.audio || externals.video || externals.embed)\n };\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.setState(this.mapPropsToState(this.props));\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n this.setState(this.mapPropsToState(nextProps));\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.controller.offChange(this.changeListenerId);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n language = _props.language,\n externals = _props.externals;\n var _state = this.state,\n items = _state.items,\n draging = _state.draging,\n confirmable = _state.confirmable,\n fileAccept = _state.fileAccept,\n external = _state.external,\n showExternalForm = _state.showExternalForm,\n allowExternal = _state.allowExternal;\n\n\n return _react2.default.createElement(\n 'div',\n { className: 'braft-finder' },\n _react2.default.createElement(\n 'div',\n {\n onDragEnter: this.handleDragEnter,\n onDragOver: this.handleDragEnter,\n onDragLeave: this.handleDragLeave,\n onDrop: this.handleDragDrop,\n className: 'bf-uploader'\n },\n _react2.default.createElement(\n 'div',\n { className: \"bf-drag-uploader \" + (draging || !items.length ? 'active ' : ' ') + (draging ? 'draging' : '') },\n _react2.default.createElement(\n 'span',\n { className: 'bf-drag-tip' },\n _react2.default.createElement('input', { accept: fileAccept, onChange: this.reslovePickedFiles, multiple: true, type: 'file' }),\n draging ? language.dropTip : language.dragTip\n )\n ),\n items.length ? _react2.default.createElement(\n 'div',\n { className: 'bf-list-wrap' },\n _react2.default.createElement(\n 'div',\n { className: 'bf-list-tools' },\n _react2.default.createElement(\n 'span',\n { onClick: this.selectAllItems, className: 'bf-select-all' },\n _react2.default.createElement('i', { className: 'braft-icon-done' }),\n ' ',\n language.selectAll\n ),\n _react2.default.createElement(\n 'span',\n { onClick: this.deselectAllItems, disabled: !confirmable, className: 'bf-deselect-all' },\n _react2.default.createElement('i', { className: 'braft-icon-close' }),\n ' ',\n language.deselect\n ),\n _react2.default.createElement(\n 'span',\n { onClick: this.removeSelectedItems, disabled: !confirmable, className: 'bf-remove-selected' },\n _react2.default.createElement('i', { className: 'braft-icon-bin' }),\n ' ',\n language.removeSelected\n )\n ),\n this.buildItemList()\n ) : null,\n showExternalForm && allowExternal ? _react2.default.createElement(\n 'div',\n { className: 'bf-add-external' },\n _react2.default.createElement(\n 'div',\n { className: 'bf-external-form' },\n _react2.default.createElement(\n 'div',\n { className: 'bf-external-input' },\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { onKeyDown: this.confirmAddExternal, value: external.url, onChange: this.inputExternal, placeholder: language.externalInputPlaceHolder })\n ),\n _react2.default.createElement(\n 'button',\n { type: 'button', onClick: this.confirmAddExternal, disabled: !external.url.trim().length },\n language.confirm\n )\n ),\n _react2.default.createElement(\n 'div',\n { 'data-type': external.type, className: 'bf-switch-external-type' },\n externals.image ? _react2.default.createElement(\n 'button',\n { type: 'button', onClick: this.switchExternalType, 'data-type': 'IMAGE' },\n language.image\n ) : null,\n externals.audio ? _react2.default.createElement(\n 'button',\n { type: 'button', onClick: this.switchExternalType, 'data-type': 'AUDIO' },\n language.audio\n ) : null,\n externals.video ? _react2.default.createElement(\n 'button',\n { type: 'button', onClick: this.switchExternalType, 'data-type': 'VIDEO' },\n language.video\n ) : null,\n externals.embed ? _react2.default.createElement(\n 'button',\n { type: 'button', onClick: this.switchExternalType, 'data-type': 'EMBED' },\n language.embed\n ) : null\n ),\n _react2.default.createElement(\n 'span',\n { className: 'bf-external-tip' },\n language.externalInputTip\n )\n )\n ) : null\n ),\n _react2.default.createElement(\n 'footer',\n { className: 'bf-manager-footer' },\n _react2.default.createElement(\n 'div',\n { className: 'pull-left' },\n allowExternal ? _react2.default.createElement(\n 'span',\n {\n onClick: this.toggleExternalForm,\n className: 'bf-toggle-external-form'\n },\n showExternalForm ? _react2.default.createElement(\n 'span',\n { className: 'bf-bottom-text' },\n _react2.default.createElement('i', { className: 'braft-icon-add' }),\n ' ',\n language.addLocalFile\n ) : _react2.default.createElement(\n 'span',\n { className: 'bf-bottom-text' },\n _react2.default.createElement('i', { className: 'braft-icon-add' }),\n ' ',\n language.addExternalSource\n )\n ) : null\n ),\n _react2.default.createElement(\n 'div',\n { className: 'pull-right' },\n _react2.default.createElement(\n 'button',\n { onClick: this.confirmInsert, className: 'button button-insert', disabled: !confirmable },\n language.insert\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this.cancelInsert, className: 'button button-cancel' },\n language.cancel\n )\n )\n )\n );\n }\n }, {\n key: 'buildItemList',\n value: function buildItemList() {\n var _this2 = this;\n\n return _react2.default.createElement(\n 'ul',\n { className: 'bf-list' },\n _react2.default.createElement(\n 'li',\n { className: 'bf-add-item' },\n _react2.default.createElement('i', { className: 'braft-icon-add' }),\n _react2.default.createElement('input', { accept: this.state.fileAccept, onChange: this.reslovePickedFiles, multiple: true, type: 'file' })\n ),\n this.state.items.map(function (item, index) {\n\n var previewerComponents = null;\n var progressMarker = item.uploading && !_this2.props.hideProgress ? _react2.default.createElement(\n 'div',\n { className: 'bf-item-uploading' },\n _react2.default.createElement('div', { className: 'bf-item-uploading-bar', style: { width: item.uploadProgress / 1 + '%' } })\n ) : '';\n\n switch (item.type) {\n case 'IMAGE':\n previewerComponents = _react2.default.createElement(\n 'div',\n { className: 'bf-image' },\n progressMarker,\n _react2.default.createElement('img', { src: item.thumbnail || item.url })\n );\n break;\n case 'VIDEO':\n previewerComponents = _react2.default.createElement(\n 'div',\n { className: 'bf-icon bf-video', title: item.url },\n progressMarker,\n _react2.default.createElement('i', { className: 'braft-icon-film' }),\n _react2.default.createElement(\n 'span',\n null,\n item.name || item.url\n )\n );\n break;\n case 'AUDIO':\n previewerComponents = _react2.default.createElement(\n 'div',\n { className: 'bf-icon bf-audio', title: item.url },\n progressMarker,\n _react2.default.createElement('i', { className: 'braft-icon-music' }),\n _react2.default.createElement(\n 'span',\n null,\n item.name || item.url\n )\n );\n break;\n case 'EMBED':\n previewerComponents = _react2.default.createElement(\n 'div',\n { className: 'bf-icon bf-embed', title: item.url },\n progressMarker,\n _react2.default.createElement('i', { className: 'braft-icon-code' }),\n _react2.default.createElement(\n 'span',\n null,\n item.name || _this2.props.language.embed\n )\n );\n break;\n default:\n previewerComponents = _react2.default.createElement(\n 'a',\n { className: 'bf-icon bf-file', title: item.url, href: item.url },\n progressMarker,\n _react2.default.createElement('i', { className: 'braft-icon-file-text' }),\n _react2.default.createElement(\n 'span',\n null,\n item.name || item.url\n )\n );\n break;\n }\n\n var className = ['bf-item'];\n item.selected && className.push('active');\n item.uploading && className.push('uploading');\n item.error && className.push('error');\n\n return _react2.default.createElement(\n 'li',\n {\n key: index,\n title: item.name,\n 'data-id': item.id,\n className: className.join(' '),\n onClick: _this2.toggleSelectItem\n },\n previewerComponents,\n _react2.default.createElement('span', { 'data-id': item.id, onClick: _this2.removeItem, className: 'bf-item-remove braft-icon-close' }),\n _react2.default.createElement(\n 'span',\n { className: 'bf-item-title' },\n item.name\n )\n );\n })\n );\n }\n }]);\n\n return BraftFinderView;\n}(_react2.default.Component);\n\nBraftFinderView.defaultProps = {\n accepts: defaultAccepts,\n externals: {\n image: true,\n video: true,\n audio: true,\n embed: true\n }\n};\nexports.default = BraftFinderView;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.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; };\n\nvar _base = __webpack_require__(1);\n\nvar _image = __webpack_require__(0);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultValidator = function defaultValidator() {\n return true;\n};\n\nvar BraftFinderController = function BraftFinderController() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, BraftFinderController);\n\n _initialiseProps.call(this);\n\n this.items = props.items || [];\n this.uploadFn = props.uploader;\n this.validateFn = props.validator || defaultValidator;\n\n this.changeListeners = [];\n}\n\n// resolvePastedFiles ({ clipboardData }, callback) {\n\n// if (clipboardData && clipboardData.items && clipboardData.items[0].type.indexOf('image') > -1) {\n// this.uploadImage(clipboardData.items[0].getAsFile(), callback)\n// }\n\n// }\n\n;\n\nvar _initialiseProps = function _initialiseProps() {\n var _this = this;\n\n this.setProps = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\n _this.items = props.items || _this.items || [];\n _this.uploadFn = props.uploader;\n _this.validateFn = props.validator || defaultValidator;\n };\n\n this.getMediaItem = function (id) {\n return _this.items.find(function (item) {\n return item.id === id;\n });\n };\n\n this.getSelectedItems = function () {\n return _this.items.filter(function (item) {\n return item.selected;\n });\n };\n\n this.getItems = function () {\n return _this.items;\n };\n\n this.setItems = function (items) {\n _this.items = items.map(function (item) {\n return _extends({}, item, { id: item.id.toString() });\n }) || [];\n _this.applyChange();\n _this.uploadItems();\n };\n\n this.addMediaItem = function (item) {\n _this.addItems([item]);\n };\n\n this.addItems = function (items) {\n _this.items = [].concat(_toConsumableArray(_this.items), _toConsumableArray(items.map(function (item) {\n return _extends({}, item, { id: item.id.toString() });\n })));\n _this.applyChange();\n _this.uploadItems();\n };\n\n this.selectMediaItem = function (id) {\n var item = _this.getMediaItem(id);\n if (item && (item.uploading || item.error)) {\n return false;\n }\n _this.setMediaItemState(id, {\n selected: true\n });\n };\n\n this.selectAllItems = function () {\n _this.items = _this.items.filter(function (item) {\n return !item.error && !item.uploading;\n }).map(function (item) {\n return _extends({}, item, { selected: true });\n });\n _this.applyChange();\n };\n\n this.deselectMediaItem = function (id) {\n _this.setMediaItemState(id, {\n selected: false\n });\n };\n\n this.deselectAllItems = function () {\n _this.items = _this.items.map(function (item) {\n return _extends({}, item, { selected: false });\n });\n _this.applyChange();\n };\n\n this.removeMediaItem = function (id) {\n _this.items = _this.items.filter(function (item) {\n return item.id !== id;\n });\n _this.applyChange();\n };\n\n this.removeItems = function () {\n var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n _this.items = _this.items.filter(function (item) {\n return !ids.includes(item.id);\n });\n _this.applyChange();\n };\n\n this.removeSelectedItems = function () {\n _this.items = _this.items.filter(function (item) {\n return !item.selected;\n });\n _this.applyChange();\n };\n\n this.removeErrorItems = function () {\n _this.items = _this.items.filter(function (item) {\n return !item.error;\n });\n _this.applyChange();\n };\n\n this.removeAllItems = function () {\n _this.items = [];\n _this.applyChange();\n };\n\n this.setMediaItemState = function (id, state) {\n _this.items = _this.items.map(function (item) {\n return item.id === id ? _extends({}, item, state) : item;\n });\n _this.applyChange();\n };\n\n this.reuploadErrorItems = function () {\n _this.uploadItems(true);\n };\n\n this.uploadItems = function () {\n var ignoreError = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\n _this.items.forEach(function (item, index) {\n\n if (item.uploading || item.url) {\n return false;\n }\n\n if (!ignoreError && item.error) {\n return false;\n }\n\n if (item.type === 'IMAGE') {\n _this.createThumbnail(item);\n _this.uploadFn = _this.uploadFn || _this.createInlineImage;\n } else if (!_this.uploadFn) {\n _this.setMediaItemState(item.id, { error: 1 });\n return false;\n }\n\n _this.setMediaItemState(item.id, {\n uploading: true,\n uploadProgress: 0,\n error: 0\n });\n\n _this.uploadFn({\n id: item.id,\n file: item.file,\n success: function success(res) {\n _this.handleUploadSuccess(item.id, res);\n },\n progress: function progress(_progress) {\n _this.setMediaItemState(item.id, {\n uploading: true,\n uploadProgress: _progress\n });\n },\n error: function error(_error) {\n _this.setMediaItemState(item.id, {\n uploading: false,\n error: 2\n });\n }\n });\n });\n };\n\n this.createThumbnail = function (_ref) {\n var id = _ref.id,\n file = _ref.file;\n\n\n (0, _image.compressImage)(URL.createObjectURL(file), 226, 226).then(function (result) {\n _this.setMediaItemState(id, { thumbnail: result.url });\n });\n };\n\n this.createInlineImage = function (param) {\n\n (0, _image.compressImage)(URL.createObjectURL(param.file), 1280, 800).then(function (result) {\n param.success({ url: result.url });\n }).catch(function (error) {\n param.error(error);\n });\n };\n\n this.handleUploadSuccess = function (id, data) {\n\n _this.setMediaItemState(id, _extends({}, data, {\n file: null,\n uploadProgress: 1,\n uploading: false,\n selected: false\n }));\n\n var item = _this.getMediaItem(data.id || id);\n item.onReady && item.onReady(item);\n };\n\n this.applyChange = function () {\n _this.changeListeners.forEach(function (_ref2) {\n var callback = _ref2.callback;\n return callback(_this.items);\n });\n };\n\n this.uploadImage = function (file, callback) {\n\n var fileId = new Date().getTime() + '_' + (0, _base.UniqueIndex)();\n\n _this.addMediaItem({\n type: 'IMAGE',\n id: fileId,\n file: file,\n name: fileId,\n size: file.size,\n uploadProgress: 0,\n uploading: false,\n selected: false,\n error: 0,\n onReady: callback\n });\n };\n\n this.uploadImageRecursively = function (files, callback) {\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n\n if (files[index] && files[index].type.indexOf('image') > -1) {\n _this.uploadImage(files[index], function (image) {\n callback && callback(image);\n index < files.length - 1 && _this.uploadImageRecursively(files, callback, index + 1);\n });\n } else {\n index < files.length - 1 && _this.uploadImageRecursively(files, callback, index + 1);\n }\n };\n\n this.addResolvedFiles = function (param, index, accepts) {\n\n var data = {\n id: new Date().getTime() + '_' + (0, _base.UniqueIndex)(),\n file: param.files[index],\n name: param.files[index].name,\n size: param.files[index].size,\n uploadProgress: 0,\n uploading: false,\n selected: false,\n error: 0,\n onReady: function onReady(item) {\n param.onItemReady && param.onItemReady(item);\n }\n };\n\n if (param.files[index].type.indexOf('image/') === 0 && accepts.image) {\n data.type = 'IMAGE';\n _this.addMediaItem(data);\n } else if (param.files[index].type.indexOf('video/') === 0 && accepts.video) {\n data.type = 'VIDEO';\n _this.addMediaItem(data);\n } else if (param.files[index].type.indexOf('audio/') === 0 && accepts.audio) {\n data.type = 'AUDIO';\n _this.addMediaItem(data);\n }\n\n setTimeout(function () {\n _this.resolveFiles(param, index + 1, accepts);\n }, 60);\n };\n\n this.resolveFiles = function (param, index, accepts) {\n\n if (index < param.files.length) {\n\n var validateResult = _this.validateFn(param.files[index]);\n\n if (validateResult instanceof Promise) {\n validateResult.then(function () {\n _this.addResolvedFiles(param, index, accepts);\n });\n } else if (validateResult) {\n _this.addResolvedFiles(param, index, accepts);\n }\n } else {\n param.onAllReady && param.onAllReady();\n }\n };\n\n this.onChange = function (callback) {\n\n var listenerId = (0, _base.UniqueIndex)();\n\n _this.changeListeners.push({\n id: listenerId,\n callback: callback\n });\n\n return listenerId;\n };\n\n this.offChange = function (listenerId) {\n _this.changeListeners = _this.changeListeners.filter(function (_ref3) {\n var id = _ref3.id;\n return id !== listenerId;\n });\n };\n};\n\nexports.default = BraftFinderController;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ImageUtils = undefined;\n\nvar _extends = Object.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; };\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _controller = __webpack_require__(19);\n\nvar _controller2 = _interopRequireDefault(_controller);\n\nvar _view = __webpack_require__(18);\n\nvar _view2 = _interopRequireDefault(_view);\n\nvar _languages = __webpack_require__(10);\n\nvar _languages2 = _interopRequireDefault(_languages);\n\nvar _image = __webpack_require__(0);\n\nvar ImageUtils = _interopRequireWildcard(_image);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BraftFinder = function (_FinderController) {\n _inherits(BraftFinder, _FinderController);\n\n function BraftFinder(props) {\n _classCallCheck(this, BraftFinder);\n\n var _this = _possibleConstructorReturn(this, (BraftFinder.__proto__ || Object.getPrototypeOf(BraftFinder)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.superProps = props;\n return _this;\n }\n\n return BraftFinder;\n}(_controller2.default);\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.ReactComponent = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\n var componentProps = _extends({}, _this2.superProps, props);\n\n var language = (typeof componentProps.language === 'function' ? componentProps.language(_languages2.default, 'braft-finder') : _languages2.default[componentProps.language]) || _languages2.default['zh'];\n\n return _react2.default.createElement(_view2.default, _extends({}, componentProps, {\n language: language,\n controller: _this2\n }));\n };\n};\n\nexports.default = BraftFinder;\nexports.ImageUtils = ImageUtils;\n\n/***/ })\n/******/ ]);\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"braft-utils\"), require(\"draft-js\"), require(\"immutable\"), require(\"braft-convert\"), require(\"react-dom\"), require(\"braft-finder\"), require(\"draftjs-utils\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"braft-utils\", \"draft-js\", \"immutable\", \"braft-convert\", \"react-dom\", \"braft-finder\", \"draftjs-utils\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"react\"), require(\"braft-utils\"), require(\"draft-js\"), require(\"immutable\"), require(\"braft-convert\"), require(\"react-dom\"), require(\"braft-finder\"), require(\"draftjs-utils\")) : factory(root[\"react\"], root[\"braft-utils\"], root[\"draft-js\"], root[\"immutable\"], root[\"braft-convert\"], root[\"react-dom\"], root[\"braft-finder\"], root[\"draftjs-utils\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__3__, __WEBPACK_EXTERNAL_MODULE__6__, __WEBPACK_EXTERNAL_MODULE__13__, __WEBPACK_EXTERNAL_MODULE__14__, __WEBPACK_EXTERNAL_MODULE__16__, __WEBPACK_EXTERNAL_MODULE__17__, __WEBPACK_EXTERNAL_MODULE__23__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 39);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__3__;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(2);\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(15);\n\nvar assertThisInitialized = __webpack_require__(1);\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nfunction _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar setPrototypeOf = __webpack_require__(26);\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\nfunction _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayWithoutHoles = __webpack_require__(27);\n\nvar iterableToArray = __webpack_require__(28);\n\nvar nonIterableSpread = __webpack_require__(29);\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__13__;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__14__;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nfunction _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__16__;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__17__;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Immutable = __webpack_require__(13);\n\nvar KEY_SEPARATOR = '-';\n\nfunction MultiDecorator(decorators) {\n this.decorators = Immutable.List(decorators);\n}\n\n/**\n Return list of decoration IDs per character\n\n @param {ContentBlock}\n @return {List<String>}\n*/\nMultiDecorator.prototype.getDecorations = function(block) {\n var decorations = Array(block.getText().length).fill(null);\n\n this.decorators.forEach(function(decorator, i) {\n var _decorations = decorator.getDecorations(block);\n\n _decorations.forEach(function(key, offset) {\n if (!key) {\n return;\n }\n\n key = i + KEY_SEPARATOR + key;\n\n decorations[offset] = key;\n });\n });\n\n return Immutable.List(decorations);\n};\n\n/**\n Return component to render a decoration\n\n @param {String}\n @return {Function}\n*/\nMultiDecorator.prototype.getComponentForKey = function(key) {\n var decorator = this.getDecoratorForKey(key);\n return decorator.getComponentForKey(\n this.getInnerKey(key)\n );\n};\n\n/**\n Return props to render a decoration\n\n @param {String}\n @return {Object}\n*/\nMultiDecorator.prototype.getPropsForKey = function(key) {\n var decorator = this.getDecoratorForKey(key);\n return decorator.getPropsForKey(\n this.getInnerKey(key)\n );\n};\n\n/**\n Return a decorator for a specific key\n\n @param {String}\n @return {Decorator}\n*/\nMultiDecorator.prototype.getDecoratorForKey = function(key) {\n var parts = key.split(KEY_SEPARATOR);\n var index = Number(parts[0]);\n\n return this.decorators.get(index);\n};\n\n/**\n Return inner key for a decorator\n\n @param {String}\n @return {String}\n*/\nMultiDecorator.prototype.getInnerKey = function(key) {\n var parts = key.split(KEY_SEPARATOR);\n return parts.slice(1).join(KEY_SEPARATOR);\n};\n\nmodule.exports = MultiDecorator;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, 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 * @providesModule CharacterMetadata\n * @format\n * \n */\n\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _require = __webpack_require__(13),\n Map = _require.Map,\n OrderedSet = _require.OrderedSet,\n Record = _require.Record;\n\n// 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();\n\nvar defaultRecord = {\n style: EMPTY_SET,\n entity: null\n};\n\nvar CharacterMetadataRecord = Record(defaultRecord);\n\nvar CharacterMetadata = function (_CharacterMetadataRec) {\n _inherits(CharacterMetadata, _CharacterMetadataRec);\n\n function CharacterMetadata() {\n _classCallCheck(this, CharacterMetadata);\n\n return _possibleConstructorReturn(this, _CharacterMetadataRec.apply(this, arguments));\n }\n\n CharacterMetadata.prototype.getStyle = function getStyle() {\n return this.get('style');\n };\n\n CharacterMetadata.prototype.getEntity = function getEntity() {\n return this.get('entity');\n };\n\n CharacterMetadata.prototype.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 /**\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 };\n\n // Fill in unspecified properties, if necessary.\n var configMap = Map(defaultConfig).merge(config);\n\n var existing = pool.get(configMap);\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 return CharacterMetadata;\n}(CharacterMetadataRecord);\n\nvar EMPTY = new CharacterMetadata();\nvar pool = Map([[Map(defaultRecord), EMPTY]]);\n\nCharacterMetadata.EMPTY = EMPTY;\n\nmodule.exports = CharacterMetadata;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, 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 * @providesModule findRangesImmutable\n * @format\n * \n */\n\n\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\n haystack.reduce(function (value, nextValue, nextIndex) {\n if (!areEqualFn(value, nextValue)) {\n if (filterFn(value)) {\n foundFn(cursor, nextIndex);\n }\n cursor = nextIndex;\n }\n return nextValue;\n });\n\n filterFn(haystack.last()) && foundFn(cursor, haystack.count());\n}\n\nmodule.exports = findRangesImmutable;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar objectWithoutPropertiesLoose = __webpack_require__(25);\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, 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 * @providesModule getFragmentFromSelection\n * @format\n * \n */\n\n\n\nvar getContentStateFragment = __webpack_require__(30);\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;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__23__;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayWithHoles = __webpack_require__(36);\n\nvar iterableToArrayLimit = __webpack_require__(37);\n\nvar nonIterableRest = __webpack_require__(38);\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports) {\n\nfunction _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports) {\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports) {\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, 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 * @providesModule getContentStateFragment\n * @format\n * \n */\n\n\n\nvar randomizeBlockMapKeys = __webpack_require__(31);\nvar removeEntitiesAtEdges = __webpack_require__(34);\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();\n\n // 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 var contentWithoutEdgeEntities = removeEntitiesAtEdges(contentState, selectionState);\n\n var blockMap = contentWithoutEdgeEntities.getBlockMap();\n var blockKeys = blockMap.keySeq();\n var startIndex = blockKeys.indexOf(startKey);\n var endIndex = blockKeys.indexOf(endKey) + 1;\n\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;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, 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 * @providesModule randomizeBlockMapKeys\n * @format\n * \n */\n\n\n\nvar ContentBlockNode = __webpack_require__(32);\nvar Immutable = __webpack_require__(13);\n\nvar generateRandomKey = __webpack_require__(33);\n\nvar OrderedMap = Immutable.OrderedMap;\n\n\nvar randomizeContentBlockNodeKeys = function randomizeContentBlockNodeKeys(blockMap) {\n var newKeysRef = {};\n\n // we keep track of root blocks in order to update subsequent sibling links\n var lastRootBlock = void 0;\n\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();\n\n // new key that we will use to build linking\n var key = generateRandomKey();\n\n // we will add it here to re-use it later\n newKeysRef[oldKey] = key;\n\n if (nextKey) {\n var nextBlock = blockMapState.get(nextKey);\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 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 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\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, 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 * @providesModule ContentBlockNode\n * @format\n * \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\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = __webpack_require__(19);\nvar Immutable = __webpack_require__(13);\n\nvar findRangesImmutable = __webpack_require__(20);\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\n\n\nvar EMPTY_SET = OrderedSet();\n\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\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlockNode = function (_Record) {\n _inherits(ContentBlockNode, _Record);\n\n function ContentBlockNode() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultRecord;\n\n _classCallCheck(this, ContentBlockNode);\n\n return _possibleConstructorReturn(this, _Record.call(this, decorateCharacterList(props)));\n }\n\n ContentBlockNode.prototype.getKey = function getKey() {\n return this.get('key');\n };\n\n ContentBlockNode.prototype.getType = function getType() {\n return this.get('type');\n };\n\n ContentBlockNode.prototype.getText = function getText() {\n return this.get('text');\n };\n\n ContentBlockNode.prototype.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n ContentBlockNode.prototype.getLength = function getLength() {\n return this.getText().length;\n };\n\n ContentBlockNode.prototype.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n ContentBlockNode.prototype.getData = function getData() {\n return this.get('data');\n };\n\n ContentBlockNode.prototype.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n ContentBlockNode.prototype.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n };\n\n ContentBlockNode.prototype.getChildKeys = function getChildKeys() {\n return this.get('children');\n };\n\n ContentBlockNode.prototype.getParentKey = function getParentKey() {\n return this.get('parent');\n };\n\n ContentBlockNode.prototype.getPrevSiblingKey = function getPrevSiblingKey() {\n return this.get('prevSibling');\n };\n\n ContentBlockNode.prototype.getNextSiblingKey = function getNextSiblingKey() {\n return this.get('nextSibling');\n };\n\n ContentBlockNode.prototype.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n };\n\n ContentBlockNode.prototype.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\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, 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 * @providesModule generateRandomKey\n * @format\n * \n */\n\n\n\nvar seenKeys = {};\nvar MULTIPLIER = Math.pow(2, 24);\n\nfunction generateRandomKey() {\n var key = void 0;\n while (key === undefined || seenKeys.hasOwnProperty(key) || !isNaN(+key)) {\n key = Math.floor(Math.random() * MULTIPLIER).toString(32);\n }\n seenKeys[key] = true;\n return key;\n}\n\nmodule.exports = generateRandomKey;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, 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 * @providesModule removeEntitiesAtEdges\n * @format\n * \n */\n\n\n\nvar CharacterMetadata = __webpack_require__(19);\n\nvar findRangesImmutable = __webpack_require__(20);\nvar invariant = __webpack_require__(35);\n\nfunction removeEntitiesAtEdges(contentState, selectionState) {\n var blockMap = contentState.getBlockMap();\n var entityMap = contentState.getEntityMap();\n\n var updatedBlocks = {};\n\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 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\nfunction getRemovalRange(characters, key, offset) {\n var removalRange;\n findRangesImmutable(characters, function (a, b) {\n return a.getEntity() === b.getEntity();\n }, function (element) {\n return element.getEntity() === key;\n }, function (start, end) {\n if (start <= offset && end >= offset) {\n removalRange = { start: start, end: end };\n }\n });\n !(typeof removalRange === 'object') ? false ? undefined : 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 if (entity.getMutability() !== 'MUTABLE') {\n var _getRemovalRange = getRemovalRange(chars, entityAfterCursor, offset),\n start = _getRemovalRange.start,\n end = _getRemovalRange.end;\n\n var current;\n while (start < end) {\n current = chars.get(start);\n chars = chars.set(start, CharacterMetadata.applyEntity(current, null));\n start++;\n }\n return block.set('characterList', chars);\n }\n }\n\n return block;\n}\n\nmodule.exports = removeEntitiesAtEdges;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\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\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (false) {}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\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 args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/typeof.js\nvar helpers_typeof = __webpack_require__(15);\nvar typeof_default = /*#__PURE__*/__webpack_require__.n(helpers_typeof);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/objectSpread.js\nvar objectSpread = __webpack_require__(5);\nvar objectSpread_default = /*#__PURE__*/__webpack_require__.n(objectSpread);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/objectWithoutProperties.js\nvar objectWithoutProperties = __webpack_require__(21);\nvar objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(objectWithoutProperties);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/classCallCheck.js\nvar classCallCheck = __webpack_require__(4);\nvar classCallCheck_default = /*#__PURE__*/__webpack_require__.n(classCallCheck);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/createClass.js\nvar createClass = __webpack_require__(7);\nvar createClass_default = /*#__PURE__*/__webpack_require__.n(createClass);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\nvar possibleConstructorReturn = __webpack_require__(8);\nvar possibleConstructorReturn_default = /*#__PURE__*/__webpack_require__.n(possibleConstructorReturn);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/getPrototypeOf.js\nvar getPrototypeOf = __webpack_require__(9);\nvar getPrototypeOf_default = /*#__PURE__*/__webpack_require__.n(getPrototypeOf);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/inherits.js\nvar inherits = __webpack_require__(10);\nvar inherits_default = /*#__PURE__*/__webpack_require__.n(inherits);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/assertThisInitialized.js\nvar assertThisInitialized = __webpack_require__(1);\nvar assertThisInitialized_default = /*#__PURE__*/__webpack_require__.n(assertThisInitialized);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/defineProperty.js\nvar defineProperty = __webpack_require__(2);\nvar defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/toConsumableArray.js\nvar toConsumableArray = __webpack_require__(12);\nvar toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);\n\n// EXTERNAL MODULE: ../node_modules/draft-js/dist/Draft.css\nvar Draft = __webpack_require__(40);\n\n// EXTERNAL MODULE: ./assets/scss/_base.scss\nvar _base = __webpack_require__(42);\n\n// EXTERNAL MODULE: external \"react\"\nvar external_react_ = __webpack_require__(0);\nvar external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);\n\n// CONCATENATED MODULE: ./languages/en.js\n/* harmony default export */ var en = ({\n base: {\n remove: 'Remove',\n cancel: 'Cancel',\n confirm: 'Confirm',\n inert: 'Insert',\n width: 'Width',\n height: 'Height'\n },\n controls: {\n clear: 'Clear',\n undo: 'Undo',\n redo: 'Redo',\n fontSize: 'Font Size',\n color: 'Color',\n textColor: 'Text',\n tempColors: 'Temp Colors',\n backgroundColor: 'Background',\n bold: 'Bold',\n lineHeight: 'Line Height',\n letterSpacing: 'Letter Spacing',\n textIndent: 'Text Indent',\n increaseIndent: 'Increase Indent',\n decreaseIndent: 'Decrease Indent',\n italic: 'Italic',\n underline: 'Underline',\n strikeThrough: 'Strike Through',\n fontFamily: 'Font Family',\n textAlign: 'Text Alignment',\n alignLeft: 'Left Alignment',\n alignCenter: 'Center Alignment',\n alignRight: 'Right Alignment',\n alignJustify: 'Justify Alignment',\n floatLeft: 'Left Float',\n floatRight: 'Right Float',\n superScript: 'Super Script',\n subScript: 'Sub Script',\n removeStyles: 'Remove Styles',\n headings: 'Headings',\n header: 'Header',\n normal: 'Normal',\n orderedList: 'Ordered List',\n unorderedList: 'Unordered List',\n blockQuote: 'Quote',\n code: 'Code',\n link: 'Link',\n unlink: 'Unlink',\n hr: 'Horizontal Line',\n media: 'Media',\n mediaLibirary: 'Media Library',\n emoji: 'Emoji',\n fullscreen: 'Fullscreen',\n exitFullscreen: 'Exit Fullscreen'\n },\n linkEditor: {\n textInputPlaceHolder: 'Input link text',\n linkInputPlaceHolder: 'Input link URL',\n inputWithEnterPlaceHolder: 'Input link URL and press Enter',\n openInNewWindow: 'Open in new window',\n removeLink: 'Remove Link'\n },\n audioPlayer: {\n title: 'Play Audio'\n },\n videoPlayer: {\n title: 'Play Video',\n embedTitle: 'Embed Media'\n },\n media: {\n image: 'Image',\n video: 'Video',\n audio: 'Audio',\n embed: 'Embed'\n }\n});\n// CONCATENATED MODULE: ./languages/zh.js\n/* harmony default export */ var zh = ({\n base: {\n remove: '删除',\n cancel: '取消',\n confirm: '确定',\n inert: '插入',\n width: '宽度',\n height: '高度'\n },\n controls: {\n clear: '清除内容',\n undo: '撤销',\n redo: '重做',\n fontSize: '字号',\n lineHeight: '行高',\n letterSpacing: '字间距',\n textIndent: '段落缩进',\n increaseIndent: '增加缩进',\n decreaseIndent: '减少缩进',\n border: '边框',\n color: '颜色',\n textColor: '文字颜色',\n backgroundColor: '背景颜色',\n tempColors: '临时颜色',\n bold: '加粗',\n italic: '斜体',\n underline: '下划线',\n strikeThrough: '删除线',\n fontFamily: '字体',\n textAlign: '文本对齐',\n alignLeft: '居左',\n alignCenter: '居中',\n alignRight: '居右',\n alignJustify: '两端',\n floatLeft: '左浮动',\n floatRight: '右浮动',\n superScript: '上标',\n subScript: '下标',\n removeStyles: '清除样式',\n headings: '标题',\n header: '标题',\n normal: '常规',\n orderedList: '有序列表',\n unorderedList: '无序列表',\n blockQuote: '引用',\n code: '代码',\n link: '链接',\n unlink: '清除链接',\n hr: '水平线',\n media: '媒体',\n mediaLibirary: '媒体库',\n emoji: '小表情',\n fullscreen: '全屏',\n exitFullscreen: '退出全屏'\n },\n linkEditor: {\n textInputPlaceHolder: '输入链接文字',\n linkInputPlaceHolder: '输入链接地址',\n inputWithEnterPlaceHolder: '输入链接地址并回车',\n openInNewWindow: '在新窗口打开',\n removeLink: '移除链接'\n },\n audioPlayer: {\n title: '播放音频文件'\n },\n videoPlayer: {\n title: '播放视频文件',\n embedTitle: '嵌入式媒体'\n },\n media: {\n image: '图像',\n video: '视频',\n audio: '音频',\n embed: '嵌入式媒体'\n }\n});\n// CONCATENATED MODULE: ./languages/zh-hant.js\n/* harmony default export */ var zh_hant = ({\n base: {\n remove: '刪除',\n cancel: '取消',\n confirm: '確定',\n inert: '插入',\n width: '宽度',\n height: '高度'\n },\n controls: {\n clear: '清除内容',\n undo: '撤銷',\n redo: '重做',\n fontSize: '字號',\n color: '顏色',\n textColor: '文字顏色',\n backgroundColor: '背景顏色',\n tempColors: '臨時顏色',\n bold: '加粗',\n lineHeight: '行高',\n letterSpacing: '字間距',\n textIndent: '段落縮進',\n increaseIndent: '增加縮進',\n decreaseIndent: '减少縮進',\n border: '邊框',\n italic: '斜體',\n underline: '下劃線',\n strikeThrough: '刪除線',\n fontFamily: '字體',\n textAlign: '文本對齊',\n alignLeft: '居左',\n alignCenter: '居中',\n alignRight: '居右',\n alignJustify: '兩端對齊',\n floatLeft: '左浮動',\n floatRight: '右浮動',\n superScript: '上標',\n subScript: '下標',\n removeStyles: '清除样式',\n headings: '標題',\n header: '標題',\n normal: '常規',\n orderedList: '有序列表',\n unorderedList: '無序列表',\n blockQuote: '引用',\n code: '代碼',\n link: '鏈接',\n unlink: '清除鏈接',\n hr: '水平线',\n media: '媒體',\n mediaLibirary: '媒體库',\n emoji: '小表情',\n fullscreen: '全熒幕',\n exitFullscreen: '退出全熒幕'\n },\n linkEditor: {\n textInputPlaceHolder: '輸入鏈接文字',\n linkInputPlaceHolder: '輸入鏈接地址',\n inputWithEnterPlaceHolder: '輸入鏈接地址並回車',\n openInNewWindow: '在新窗口打開',\n removeLink: '移除鏈接'\n },\n audioPlayer: {\n title: '播放音頻文件'\n },\n videoPlayer: {\n title: '播放視頻文件',\n embedTitle: '嵌入式媒體'\n },\n media: {\n image: '圖像',\n video: '視頻',\n audio: '音頻',\n embed: '嵌入式媒體'\n }\n});\n// CONCATENATED MODULE: ./languages/pl.js\n/* harmony default export */ var pl = ({\n base: {\n remove: 'Usuń',\n cancel: 'Anuluj',\n confirm: 'Potwierdź',\n inert: 'Wstaw',\n width: 'Szerokość',\n height: 'Wysokość'\n },\n controls: {\n clear: 'Wyczyść',\n undo: 'Cofnij',\n redo: 'Przywróć',\n fontSize: 'Wielkość',\n color: 'Kolor',\n textColor: 'Kolor tekstu',\n tempColors: 'Kolory',\n backgroundColor: 'Tło',\n bold: 'Pogrubienie',\n lineHeight: 'Wysokość linii',\n letterSpacing: 'Odstęp znaków',\n textIndent: 'Wcięcie tekstu',\n increaseIndent: 'Zwiększ wcięcie',\n decreaseIndent: 'Zmniejsz wcięcie',\n italic: 'Italiki',\n underline: 'Podkreślenie',\n strikeThrough: 'Przekreślenie',\n fontFamily: 'Czcionka',\n textAlign: 'Wyrównanie tekstu',\n alignLeft: 'Do lewej',\n alignCenter: 'Wycentruj',\n alignRight: 'Do prawej',\n alignJustify: 'Wyjustuj',\n floatLeft: 'Do lewej',\n floatRight: 'Do prawej',\n superScript: 'Superskrypt',\n subScript: 'Subskrypt',\n removeStyles: 'Usuń stylowanie',\n headings: 'Nagłówki',\n header: 'Nagłówek',\n normal: 'Normalny',\n orderedList: 'Lista uporządkowana',\n unorderedList: 'Lista nieuporządkowana',\n blockQuote: 'Cytat',\n code: 'Kod',\n link: 'Link',\n unlink: 'Usuń link',\n hr: 'Linia pozioma',\n media: 'Media',\n mediaLibirary: 'Biblioteka mediów',\n emoji: 'Emoji'\n },\n linkEditor: {\n textInputPlaceHolder: 'Wpisz tekst linku',\n linkInputPlaceHolder: 'Wpisz Adres URL',\n inputWithEnterPlaceHolder: 'Wpisz adres URL i naciśnij Enter',\n openInNewWindow: 'Otwórz w nowym oknie',\n removeLink: 'Usuń link'\n },\n audioPlayer: {\n title: 'Odtwórz audio'\n },\n videoPlayer: {\n title: 'Odtwórz wideo',\n embedTitle: 'Tytuł'\n },\n media: {\n image: 'Obraz',\n video: 'Wideo',\n audio: 'Audio',\n embed: 'Obiekt osadzony'\n }\n});\n// CONCATENATED MODULE: ./languages/kr.js\n/* harmony default export */ var kr = ({\n base: {\n remove: '삭제',\n cancel: '취소',\n confirm: '결정',\n inert: '삽입',\n width: '너비',\n height: '높이'\n },\n controls: {\n clear: '콘텐츠지우기',\n undo: '취소',\n redo: '다시하기',\n fontSize: '글자크기',\n lineHeight: '행높이',\n letterSpacing: '단어간격',\n textIndent: '단락들여쓰기',\n increaseIndent: '들여쓰기늘리기',\n decreaseIndent: '들여쓰기줄이기',\n border: '국경',\n color: '색상',\n textColor: '텍스트색상',\n backgroundColor: '배경색상',\n tempColors: '임시색',\n bold: '굵게',\n italic: '기울임꼴',\n underline: '밑줄',\n strikeThrough: '취소선',\n fontFamily: '글꼴',\n textAlign: '텍스트정렬',\n alignLeft: '왼쪽',\n alignCenter: '중심',\n alignRight: '오른쪽',\n alignJustify: '양쪽끝',\n floatLeft: '떠다니기',\n floatRight: '오른쪽부동',\n superScript: '위첨자',\n subScript: '첨자',\n removeStyles: '스타일지우기',\n headings: '제목',\n header: '제목',\n normal: '재래식',\n orderedList: '순서가지정된목록',\n unorderedList: '정렬되지않은목록',\n blockQuote: '참고문헌',\n code: '코드',\n link: '링크',\n unlink: '링크삭제',\n hr: '수평선',\n media: '미디어',\n mediaLibirary: '미디어라이브러리',\n emoji: '작은표현',\n fullscreen: '전체화면',\n exitFullscreen: '전체화면종료'\n },\n linkEditor: {\n textInputPlaceHolder: '링크텍스트입력',\n linkInputPlaceHolder: '링크주소입력',\n inputWithEnterPlaceHolder: '링크주소입력.',\n openInNewWindow: '새창열기',\n removeLink: '링크삭제'\n },\n audioPlayer: {\n title: '오디오파일재생'\n },\n videoPlayer: {\n title: '비디오파일재생',\n embedTitle: '임베디드미디어'\n },\n media: {\n image: '이미지',\n video: '비디오',\n audio: '오디오',\n embed: '임베디드미디어'\n }\n});\n// CONCATENATED MODULE: ./languages/tr.js\n/* harmony default export */ var tr = ({\n base: {\n remove: 'Kaldır',\n cancel: 'İptal',\n confirm: 'Onayla',\n inert: 'Ekle',\n width: 'Genişlik',\n height: 'Yükseklik'\n },\n controls: {\n clear: 'Temizle',\n undo: 'Geri al',\n redo: 'İleri al',\n fontSize: 'Yazı boyutu',\n color: 'Renk',\n textColor: 'Yazı rengi',\n tempColors: 'Geçici renkler',\n backgroundColor: 'Arkaplan',\n bold: 'Kalın',\n lineHeight: 'Satır yüksekliği',\n letterSpacing: 'Harf aralığı',\n textIndent: 'Çentik aralığı',\n increaseIndent: 'Çentiği genişlet',\n decreaseIndent: 'Çentiği daralt',\n italic: 'Eğik',\n underline: 'Altı çizili',\n strikeThrough: 'Üstü çizili',\n fontFamily: 'Yazı tipi',\n textAlign: 'Metin Hizalama',\n alignLeft: 'Sola hizala',\n alignCenter: 'Ortaya hizala',\n alignRight: 'Sağa hizala',\n alignJustify: 'Her iki tarafa hizala',\n floatLeft: 'Sola yatır',\n floatRight: 'Sağa yatır',\n superScript: 'Ana kod',\n subScript: 'Alt kod',\n removeStyles: 'Stilleri kaldır',\n headings: 'Başlıklar',\n header: 'Başlık',\n normal: 'Normal',\n orderedList: 'Sıralı liste',\n unorderedList: 'Sırasız liste',\n blockQuote: 'Alıntı',\n code: 'Kod',\n link: 'Bağlantı',\n unlink: 'Bağlantıyı kaldır',\n hr: 'Yatay çizgi',\n media: 'Medya',\n mediaLibirary: 'Kütüphane',\n emoji: 'İfade',\n fullscreen: 'Tam ekran',\n exitFullscreen: 'Tam ekrandan çık'\n },\n linkEditor: {\n textInputPlaceHolder: 'Bağlantı metnini girin',\n linkInputPlaceHolder: 'Bağlantı URL\\' si girin',\n inputWithEnterPlaceHolder: 'Bağlantı URL\\'si girin ve Enter\\' a basın',\n openInNewWindow: 'Yeni pencerede aç',\n removeLink: 'Bağlantıyı kaldır'\n },\n audioPlayer: {\n title: 'Ses çal'\n },\n videoPlayer: {\n title: 'Görüntü oynat',\n embedTitle: 'Görüntüyü göm'\n },\n media: {\n image: 'Resim',\n video: 'Görüntü',\n audio: 'Ses',\n embed: 'Gömülü nesne'\n }\n});\n// CONCATENATED MODULE: ./languages/jpn.js\n/* harmony default export */ var jpn = ({\n base: {\n remove: '削除',\n cancel: 'キャンセル',\n confirm: '決定',\n inert: '挿入',\n width: '幅',\n height: '高さ'\n },\n controls: {\n clear: 'クリアコンテンツ',\n undo: 'キャンセル',\n redo: 'キャンセル',\n fontSize: 'フォントサイズ',\n lineHeight: 'フォントサイズ',\n letterSpacing: 'ワード間隔',\n textIndent: '段落のインデント',\n increaseIndent: 'インデントを増やす',\n decreaseIndent: 'インデントを減らす',\n border: '国境',\n color: '色',\n textColor: 'テキストの色',\n backgroundColor: '背景色',\n tempColors: '仮色',\n bold: '太字',\n italic: 'イタリック体',\n underline: '下線',\n strikeThrough: '取り消し線',\n fontFamily: 'フォント',\n textAlign: 'テキストの配置',\n alignLeft: '左',\n alignCenter: '中央揃え',\n alignRight: '右に立つ',\n alignJustify: '両端',\n floatLeft: '左フローティング',\n floatRight: '右フローティング',\n superScript: '上付き',\n subScript: '下付き文字',\n removeStyles: 'クリアスタイル',\n headings: '役職',\n header: '役職',\n normal: '従来の',\n orderedList: '順序付きリスト',\n unorderedList: '番号なしリスト',\n blockQuote: '参照',\n code: 'コード',\n link: 'リンク',\n unlink: 'リンクを解除',\n hr: '横線',\n media: 'メディア',\n mediaLibirary: 'メディアライブラリー',\n emoji: '小さな表現',\n fullscreen: '全画面',\n exitFullscreen: '全画面を退く'\n },\n linkEditor: {\n textInputPlaceHolder: 'リンクテキストを入力',\n linkInputPlaceHolder: 'リンクアドレスを入力',\n inputWithEnterPlaceHolder: 'リンクアドレスを入力して戻ります',\n openInNewWindow: '新しいウィンドウで開く',\n removeLink: '新しいウィンドウで開く'\n },\n audioPlayer: {\n title: 'オーディオファイルを再生する'\n },\n videoPlayer: {\n title: 'ビデオファイルを再生する',\n embedTitle: '埋め込みメディア'\n },\n media: {\n image: '画像',\n video: 'ビデオ',\n audio: '音声',\n embed: '埋め込みメディア'\n }\n});\n// CONCATENATED MODULE: ./languages/ru.js\n/* harmony default export */ var ru = ({\n base: {\n remove: 'Удалить',\n cancel: 'Отмена',\n confirm: 'Подтвердить',\n insert: 'Вставить',\n width: 'Ширина',\n height: 'Высота'\n },\n controls: {\n clear: 'Очистить',\n undo: 'Отменить',\n redo: 'Повторить',\n fontSize: 'Размер шрифта',\n color: 'Цвет',\n textColor: 'Цвет текста',\n tempColors: 'Temp Colors',\n backgroundColor: 'Цвет фона',\n bold: 'Жирный',\n lineHeight: 'Межстрочный интервал',\n letterSpacing: 'Межбуквенный интервал',\n textIndent: 'Отступ',\n increaseIndent: 'Увеличить отступ',\n decreaseIndent: 'Уменьшить отступ',\n italic: 'Курсив',\n underline: 'Подчеркнутый',\n strikeThrough: 'Перечеркнутый',\n fontFamily: 'Шрифт',\n textAlign: 'Расположение текста',\n alignLeft: 'По левому краю',\n alignCenter: 'По центру',\n alignRight: 'По правому краю',\n alignJustify: 'По ширине',\n floatLeft: 'Обтекание слева',\n floatRight: 'Обтекание справа',\n superScript: 'Надстрочный индекс',\n subScript: 'Подстрочный индекс',\n removeStyles: 'Убрать стили',\n headings: 'Заголовки',\n header: 'Заголовок',\n normal: 'Обычный',\n orderedList: 'Упорядоченный список',\n unorderedList: 'Неупорядоченный список',\n blockQuote: 'Цитата',\n code: 'Код',\n link: 'Вставить ссылку',\n unlink: 'Убрать ссылку',\n hr: 'Горизонтальная линия',\n media: 'Медиа',\n mediaLibirary: 'Медиа библиотека',\n emoji: 'Emoji',\n fullscreen: 'Полноэкранный режим',\n exitFullscreen: 'Выйти из полноэкранного режима'\n },\n linkEditor: {\n textInputPlaceHolder: 'Введите текст ссылки',\n linkInputPlaceHolder: 'Вставить ссылку',\n inputWithEnterPlaceHolder: 'Вставить ссылку и нажать Enter',\n openInNewWindow: 'Открыть в новом окне',\n removeLink: 'Убрать ссылку'\n },\n audioPlayer: {\n title: 'Воспроизвести аудиофайл'\n },\n videoPlayer: {\n title: 'Воспроизвести видеофайл',\n embedTitle: 'Embed Media'\n },\n media: {\n image: 'Картинка',\n video: 'Видео',\n audio: 'Аудио',\n embed: 'Встроенное'\n }\n});\n// CONCATENATED MODULE: ./languages/fr.js\n/* harmony default export */ var fr = ({\n base: {\n remove: 'Supprimer',\n cancel: 'Annuler',\n confirm: 'Confirmer',\n inert: 'Insérer',\n width: 'Largeur',\n height: 'Hauteur'\n },\n controls: {\n clear: 'Effacer',\n undo: 'Annuler',\n redo: 'Refaire',\n fontSize: 'Taille de police',\n color: 'Couleur',\n textColor: 'Texte',\n tempColors: 'Couleurs temporaire',\n backgroundColor: 'Couleur d\\'arrière plan',\n bold: 'Gras',\n lineHeight: 'Hauteur de ligne',\n letterSpacing: 'Espacement des lettres',\n textIndent: 'Indentation du texte',\n increaseIndent: 'Augmenter l\\'indentation',\n decreaseIndent: 'Réduire l\\'indentation',\n italic: 'Italique',\n underline: 'Souligner',\n strikeThrough: 'Barrer',\n fontFamily: 'Police d\\'écriture',\n textAlign: 'Alignement du texte',\n alignLeft: 'Aligner à gauche',\n alignCenter: 'Aligner au centre',\n alignRight: 'Aligner à droite',\n alignJustify: 'Justifier',\n floatLeft: 'Déplacer à gauche',\n floatRight: 'Déplacer à droite',\n superScript: 'Super-script',\n subScript: 'Sous-script',\n removeStyles: 'Supprimer les styles',\n headings: 'Titres',\n header: 'Entêtes',\n normal: 'Normal',\n orderedList: 'Liste ordonnée',\n unorderedList: 'Liste non-ordonnée',\n blockQuote: 'Citation',\n code: 'Code',\n link: 'Insérer un lien',\n unlink: 'Supprimer le lien',\n hr: 'Ligne horizontale',\n media: 'Média',\n mediaLibirary: 'Bibliothêque',\n emoji: 'Emoji',\n fullscreen: 'Plein écran',\n exitFullscreen: 'Quitter le plein écran'\n },\n linkEditor: {\n textInputPlaceHolder: 'Insérer le texte à afficher',\n linkInputPlaceHolder: 'Insérer le lien URL',\n inputWithEnterPlaceHolder: 'Insérer le lien URL puis appuyer sur Entrée',\n openInNewWindow: 'Ouvrir dans une nouvelle fenêtre',\n removeLink: 'Supprimer le lien'\n },\n audioPlayer: {\n title: 'Lancer le son audio'\n },\n videoPlayer: {\n title: 'Lancer la video',\n embedTitle: 'Intégrer média'\n },\n media: {\n image: 'Image',\n video: 'Vidéo',\n audio: 'Audio',\n embed: 'Intégré'\n }\n});\n// CONCATENATED MODULE: ./languages/pt-br.js\n/* harmony default export */ var pt_br = ({\n base: {\n remove: 'Remover',\n cancel: 'Cancelar',\n confirm: 'Confirmar',\n inert: 'Inserir',\n width: 'Largura',\n height: 'Altura'\n },\n controls: {\n clear: 'Limpar',\n undo: 'Desfazer',\n redo: 'Refazer',\n fontSize: 'Tamanho da Fonte',\n color: 'Cor',\n textColor: 'Texto',\n tempColors: 'Temp Colors',\n backgroundColor: 'Cor de Fundo',\n bold: 'Negrito',\n lineHeight: 'Altura da LinhaLine Height',\n letterSpacing: 'Espaçamento entre Letras',\n textIndent: 'Identação de Texto',\n increaseIndent: 'Aumentar Identação',\n decreaseIndent: 'Diminuir Identção',\n italic: 'Itálico',\n underline: 'Sublinhado',\n strikeThrough: 'Riscado',\n fontFamily: 'Família da Fonte',\n textAlign: 'Alinhamento de Texto',\n alignLeft: 'Alinhamento à Esquerda',\n alignCenter: 'Alinhamento Centralizado',\n alignRight: 'Alinhamento à Direita',\n alignJustify: 'Alinhamento Justificado',\n floatLeft: 'Flutuação à Esquerda',\n floatRight: 'Flutuação à Direita',\n superScript: 'Sobrescrito',\n subScript: 'Subscrito',\n removeStyles: 'Remover Estilos',\n headings: 'Cabeçalhos',\n header: 'Cabeçalho',\n normal: 'Normal',\n orderedList: 'Lista Ordenada',\n unorderedList: 'Lista Não Ordenada',\n blockQuote: 'Citação',\n code: 'Código',\n link: 'Link',\n unlink: 'Remover Link',\n hr: 'Linha Horizontal',\n media: 'Mídia',\n mediaLibirary: 'Biblioteca de Mídia',\n emoji: 'Emoji',\n fullscreen: 'Tela Cheia',\n exitFullscreen: 'Sair de Tela Cheia'\n },\n linkEditor: {\n textInputPlaceHolder: 'Insira o texto do link',\n linkInputPlaceHolder: 'Insira a URL do link',\n inputWithEnterPlaceHolder: 'Insira a URL do link e aperte Enter',\n openInNewWindow: 'Abrir em nova janela',\n removeLink: 'Remover Link'\n },\n audioPlayer: {\n title: 'Tocar Áudio'\n },\n videoPlayer: {\n title: 'Tocar Vídeo',\n embedTitle: 'Mídia Embutida'\n },\n media: {\n image: 'Imagem',\n video: 'Vídeo',\n audio: 'Áudio',\n embed: 'Embutido'\n }\n});\n// CONCATENATED MODULE: ./languages/index.js\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var languages = ({\n 'en': en,\n 'zh': zh,\n 'zh-hant': zh_hant,\n 'pl': pl,\n 'kr': kr,\n 'tr': tr,\n 'jpn': jpn,\n 'ru': ru,\n 'fr': fr,\n 'pt-br': pt_br\n});\n// EXTERNAL MODULE: external \"braft-finder\"\nvar external_braft_finder_ = __webpack_require__(17);\nvar external_braft_finder_default = /*#__PURE__*/__webpack_require__.n(external_braft_finder_);\n\n// EXTERNAL MODULE: external \"braft-utils\"\nvar external_braft_utils_ = __webpack_require__(3);\n\n// EXTERNAL MODULE: external \"draft-js\"\nvar external_draft_js_ = __webpack_require__(6);\n\n// EXTERNAL MODULE: external \"immutable\"\nvar external_immutable_ = __webpack_require__(13);\nvar external_immutable_default = /*#__PURE__*/__webpack_require__.n(external_immutable_);\n\n// CONCATENATED MODULE: ./configs/keybindings.js\n // TODO\n// 允许自定义的快捷键设置\n\n/* harmony default export */ var keybindings = (function (customKeyBindingFn) {\n return function (event) {\n if (event.keyCode === 83 && (external_draft_js_[\"KeyBindingUtil\"].hasCommandModifier(event) || external_draft_js_[\"KeyBindingUtil\"].isCtrlKeyCommand(event))) {\n return 'braft-save';\n }\n\n if (customKeyBindingFn) {\n return customKeyBindingFn(event) || Object(external_draft_js_[\"getDefaultKeyBinding\"])(event);\n }\n\n return Object(external_draft_js_[\"getDefaultKeyBinding\"])(event);\n };\n});\n// CONCATENATED MODULE: ./configs/props.js\n/* harmony default export */ var configs_props = ({\n language: 'zh',\n controls: ['undo', 'redo', 'separator', 'font-size', 'line-height', 'letter-spacing', 'separator', 'text-color', 'bold', 'italic', 'underline', 'strike-through', 'separator', 'superscript', 'subscript', 'remove-styles', 'emoji', 'separator', 'text-indent', 'text-align', 'separator', 'headings', 'list-ul', 'list-ol', 'blockquote', 'code', 'separator', 'media', 'link', 'table', 'split', 'hr', 'separator', 'clear', 'separator', 'fullscreen'],\n excludeControls: [],\n extendControls: [],\n extendAtomics: [],\n componentBelowControlBar: null,\n media: {\n pasteImage: true,\n imagePasteLimit: 5,\n image: true,\n video: true,\n audio: true,\n uploadFn: null,\n validateFn: null,\n onBeforeDeselect: null,\n onDeselect: null,\n onBeforeSelect: null,\n onSelect: null,\n onBeforeRemove: null,\n onRemove: null,\n onCancel: null,\n onFileSelect: null,\n onBeforeInsert: null,\n onInsert: null,\n onChange: null,\n accepts: {\n image: 'image/png,image/jpeg,image/gif,image/webp,image/apng,image/svg',\n video: 'video/mp4',\n audio: 'audio/mp3'\n },\n externals: {\n audio: true,\n video: true,\n image: true,\n embed: true\n }\n },\n imageControls: ['float-left', 'float-right', 'align-left', 'align-center', 'align-right', 'link', 'size', 'remove'],\n imageResizable: true,\n colors: ['#000000', '#333333', '#666666', '#999999', '#cccccc', '#ffffff', '#61a951', '#16a085', '#07a9fe', '#003ba5', '#8e44ad', '#f32784', '#c0392b', '#d35400', '#f39c12', '#fdda00'],\n colorPicker: null,\n colorPickerTheme: 'dark',\n colorPickerAutoHide: true,\n codeTabIndents: 2,\n headings: ['header-one', 'header-two', 'header-three', 'header-four', 'header-five', 'header-six', 'unstyled'],\n textAligns: ['left', 'center', 'right', 'justify'],\n textBackgroundColor: true,\n allowInsertLinkText: false,\n defaultLinkTarget: '',\n letterSpacings: [0, 1, 2, 3, 4, 5, 6],\n lineHeights: [1, 1.2, 1.5, 1.75, 2, 2.5, 3, 4],\n fontSizes: [12, 14, 16, 18, 20, 24, 28, 30, 32, 36, 40, 48, 56, 64, 72, 96, 120, 144],\n fontFamilies: [{\n name: 'Araial',\n family: 'Arial, Helvetica, sans-serif'\n }, {\n name: 'Georgia',\n family: 'Georgia, serif'\n }, {\n name: 'Impact',\n family: 'Impact, serif'\n }, {\n name: 'Monospace',\n family: '\"Courier New\", Courier, monospace'\n }, {\n name: 'Tahoma',\n family: 'tahoma, arial, \"Hiragino Sans GB\", 宋体, sans-serif'\n }],\n converts: {\n unitExportFn: function unitExportFn(value, type) {\n return type === 'line-height' ? value : \"\".concat(value, \"px\");\n }\n },\n emojis: ['🤣', '🙌', '💚', '💛', '👏', '😉', '💯', '💕', '💞', '💘', '💙', '💝', '🖤', '💜', '❤️', '😍', '😻', '💓', '💗', '😋', '😇', '😂', '😹', '😘', '💖', '😁', '😀', '🤞', '😲', '😄', '😊', '👍', '😌', '😃', '😅', '✌️', '🤗', '💋', '😗', '😽', '😚', '🤠', '😙', '😺', '👄', '😸', '😏', '😼', '👌', '😎', '😆', '😛', '🙏', '🤝', '🙂', '🤑', '😝', '😐', '😑', '🤤', '😤', '🙃', '🤡', '😶', '😪', '😴', '😵', '😓', '👊', '😦', '😷', '🤐', '😜', '🤓', '👻', '😥', '🙄', '🤔', '🤒', '🙁', '😔', '😯', '☹️', '☠️', '😰', '😩', '😖', '😕', '😒', '😣', '😢', '😮', '😿', '🤧', '😫', '🤥', '😞', '😬', '👎', '💀', '😳', '😨', '🤕', '🤢', '😱', '😭', '😠', '😈', '😧', '💔', '😟', '🙀', '💩', '👿', '😡', '😾', '🖕'],\n stripPastedStyles: false,\n triggerChangeOnMount: true,\n className: '',\n style: {},\n controlBarClassName: '',\n controlBarStyle: {},\n contentClassName: '',\n contentStyle: {},\n draftProps: {},\n hooks: {},\n onChange: null,\n onFocus: null,\n onBlur: null,\n onTab: null,\n onDelete: null,\n onSave: null,\n fixPlaceholder: false\n});\n// EXTERNAL MODULE: ../node_modules/draft-js/lib/getFragmentFromSelection.js\nvar getFragmentFromSelection = __webpack_require__(22);\nvar getFragmentFromSelection_default = /*#__PURE__*/__webpack_require__.n(getFragmentFromSelection);\n\n// EXTERNAL MODULE: external \"draftjs-utils\"\nvar external_draftjs_utils_ = __webpack_require__(23);\n\n// CONCATENATED MODULE: ./configs/handlers.js\n\n\n\n\n\n\nvar handlers_keyCommandHandlers = function keyCommandHandlers(command, editorState, editor) {\n if (editor.editorProps.handleKeyCommand && editor.editorProps.handleKeyCommand(command, editorState, editor) === 'handled') {\n return 'handled';\n }\n\n if (command === 'braft-save') {\n editor.editorProps.onSave && editor.editorProps.onSave(editorState);\n return 'handled';\n }\n\n var _editor$editorProps = editor.editorProps,\n controls = _editor$editorProps.controls,\n excludeControls = _editor$editorProps.excludeControls;\n var allowIndent = (controls.indexOf('text-indent') !== 0 || controls.find(function (item) {\n return item.key === 'text-indent';\n })) && excludeControls.indexOf('text-indent') === -1;\n var cursorStart = editorState.getSelection().getStartOffset();\n var cursorEnd = editorState.getSelection().getEndOffset();\n var cursorIsAtFirst = cursorStart === 0 && cursorEnd === 0;\n\n if (command === 'backspace') {\n if (editor.editorProps.onDelete && editor.editorProps.onDelete(editorState) === false) {\n return 'handled';\n }\n\n var blockType = external_braft_utils_[\"ContentUtils\"].getSelectionBlockType(editorState);\n\n if (allowIndent && cursorIsAtFirst && blockType !== 'code-block') {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].decreaseSelectionIndent(editorState));\n }\n }\n\n if (command === 'tab') {\n var _blockType = external_braft_utils_[\"ContentUtils\"].getSelectionBlockType(editorState);\n\n if (_blockType === 'code-block') {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].insertText(editorState, ' '.repeat(editor.editorProps.codeTabIndents)));\n return 'handled';\n } else if (_blockType === 'ordered-list-item' || _blockType === 'unordered-list-item') {\n var newEditorState = external_draft_js_[\"RichUtils\"].onTab(event, editorState, 4);\n\n if (newEditorState !== editorState) {\n editor.setValue(newEditorState);\n }\n\n return 'handled';\n } else if (_blockType !== 'atomic' && allowIndent && cursorIsAtFirst) {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].increaseSelectionIndent(editorState));\n return 'handled';\n }\n }\n\n var nextEditorState = external_braft_utils_[\"ContentUtils\"].handleKeyCommand(editorState, command);\n\n if (nextEditorState) {\n editor.setValue(nextEditorState);\n return 'handled';\n }\n\n return 'not-handled';\n};\nvar handlers_returnHandlers = function returnHandlers(event, editorState, editor) {\n if (editor.editorProps.handleReturn && editor.editorProps.handleReturn(event, editorState, editor) === 'handled') {\n return 'handled';\n }\n\n var currentBlock = external_braft_utils_[\"ContentUtils\"].getSelectionBlock(editorState);\n var currentBlockType = currentBlock.getType();\n\n if (currentBlockType === 'unordered-list-item' || currentBlockType === 'ordered-list-item') {\n if (currentBlock.getLength() === 0) {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionBlockType(editorState, 'unstyled'));\n return 'handled';\n }\n\n return 'not-handled';\n } else if (currentBlockType === 'code-block') {\n if (event.which === 13 && (event.getModifierState('Shift') || event.getModifierState('Alt') || event.getModifierState('Control'))) {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionBlockType(editorState, 'unstyled'));\n return 'handled';\n }\n\n return 'not-handled';\n } else if (currentBlockType === 'blockquote') {\n if (event.which === 13) {\n if (event.getModifierState('Shift') || event.getModifierState('Alt') || event.getModifierState('Control')) {\n event.which = 0;\n } else {\n editor.setValue(external_draft_js_[\"RichUtils\"].insertSoftNewline(editorState));\n return 'handled';\n }\n }\n }\n\n var nextEditorState = Object(external_draftjs_utils_[\"handleNewLine\"])(editorState, event);\n\n if (nextEditorState) {\n editor.setValue(nextEditorState);\n return 'handled';\n }\n\n return 'not-handled';\n};\nvar beforeInputHandlers = function beforeInputHandlers(chars, editorState, editor) {\n if (editor.editorProps.handleBeforeInput && editor.editorProps.handleBeforeInput(chars, editorState, editor) === 'handled') {\n return 'handled';\n }\n\n return 'not-handled';\n};\nvar handlers_compositionStartHandler = function compositionStartHandler(_, editor) {\n var editorState = editor.state.editorState;\n var selectedBlocks = external_braft_utils_[\"ContentUtils\"].getSelectedBlocks(editorState);\n\n if (selectedBlocks && selectedBlocks.length > 1) {\n var nextEditorState = external_draft_js_[\"EditorState\"].push(editorState, external_draft_js_[\"Modifier\"].removeRange(editorState.getCurrentContent(), editorState.getSelection(), 'backward'), 'remove-range');\n editor.setValue(nextEditorState);\n }\n};\nvar handlers_dropHandlers = function dropHandlers(selectionState, dataTransfer, editor) {\n if (editor.editorProps.readOnly || editor.editorProps.disabled) {\n return 'handled';\n }\n\n if (window && window.__BRAFT_DRAGING__IMAGE__) {\n var nextEditorState = external_draft_js_[\"EditorState\"].forceSelection(editor.state.editorState, selectionState);\n nextEditorState = external_braft_utils_[\"ContentUtils\"].insertMedias(nextEditorState, [window.__BRAFT_DRAGING__IMAGE__.mediaData]);\n nextEditorState = external_braft_utils_[\"ContentUtils\"].removeBlock(nextEditorState, window.__BRAFT_DRAGING__IMAGE__.block, nextEditorState.getSelection());\n window.__BRAFT_DRAGING__IMAGE__ = null;\n editor.lockOrUnlockEditor(true);\n editor.setValue(nextEditorState);\n return 'handled';\n } else if (!dataTransfer || !dataTransfer.getText()) {\n return 'handled';\n }\n\n return 'not-handled';\n};\nvar handlers_handleFiles = function handleFiles(files, editor) {\n var _editor$constructor$d = objectSpread_default()({}, editor.constructor.defaultProps.media, editor.editorProps.media),\n pasteImage = _editor$constructor$d.pasteImage,\n validateFn = _editor$constructor$d.validateFn,\n imagePasteLimit = _editor$constructor$d.imagePasteLimit;\n\n pasteImage && files.slice(0, imagePasteLimit).forEach(function (file) {\n if (file && file.type.indexOf('image') > -1 && editor.braftFinder) {\n var validateResult = validateFn ? validateFn(file) : true;\n\n if (validateResult instanceof Promise) {\n validateResult.then(function () {\n editor.braftFinder.uploadImage(file, function (image) {\n editor.isLiving && editor.setValue(external_braft_utils_[\"ContentUtils\"].insertMedias(editor.state.editorState, [image]));\n });\n });\n } else if (validateResult) {\n editor.braftFinder.uploadImage(file, function (image) {\n editor.isLiving && editor.setValue(external_braft_utils_[\"ContentUtils\"].insertMedias(editor.state.editorState, [image]));\n });\n }\n }\n });\n\n if (files[0] && files[0].type.indexOf('image') > -1 && pasteImage) {\n return 'handled';\n }\n\n return 'not-handled';\n};\nvar droppedFilesHandlers = function droppedFilesHandlers(selectionState, files, editor) {\n if (editor.editorProps.handleDroppedFiles && editor.editorProps.handleDroppedFiles(selectionState, files, editor) === 'handled') {\n return 'handled';\n }\n\n return handlers_handleFiles(files, editor);\n};\nvar pastedFilesHandlers = function pastedFilesHandlers(files, editor) {\n if (editor.editorProps.handlePastedFiles && editor.editorProps.handlePastedFiles(files, editor) === 'handled') {\n return 'handled';\n }\n\n return handlers_handleFiles(files, editor);\n};\nvar handlers_copyHandlers = function copyHandlers(event, editor) {\n var blockMap = getFragmentFromSelection_default()(editor.state.editorState);\n\n if (blockMap && blockMap.toArray) {\n try {\n var tempContentState = external_draft_js_[\"ContentState\"].createFromBlockArray(blockMap.toArray());\n var tempEditorState = external_draft_js_[\"EditorState\"].createWithContent(tempContentState);\n var clipboardData = event.clipboardData || window.clipboardData || event.originalEvent.clipboardData;\n tempEditorState.setConvertOptions(editor.state.editorState.convertOptions);\n clipboardData.setData('text/html', tempEditorState.toHTML());\n clipboardData.setData('text/plain', tempEditorState.toText());\n event.preventDefault();\n } catch (error) {\n console.warn(error);\n }\n }\n};\nvar handlers_pastedTextHandlers = function pastedTextHandlers(text, html, editorState, editor) {\n if (editor.editorProps.handlePastedText && editor.editorProps.handlePastedText(text, html, editorState, editor) === 'handled') {\n return 'handled';\n }\n\n if (!html || editor.editorProps.stripPastedStyles) {\n return false;\n }\n\n var tempColors = external_braft_utils_[\"ColorUtils\"].detectColorsFromHTMLString(html);\n editor.setState({\n tempColors: toConsumableArray_default()(editor.state.tempColors).concat(toConsumableArray_default()(tempColors)).filter(function (item) {\n return editor.editorProps.colors.indexOf(item) === -1;\n }).filter(function (item, index, array) {\n return array.indexOf(item) === index;\n })\n }, function () {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].insertHTML(editorState, html, 'paste'));\n });\n return 'handled';\n};\n// CONCATENATED MODULE: ./helpers/extension.js\n\n// TODO\n// - block-style和atomic类型的扩展支持\n\nvar extension_extensionControls = [];\nvar extension_extensionDecorators = [];\nvar extension_propInterceptors = [];\nvar extension_extensionBlockRenderMaps = [];\nvar extension_extensionBlockRendererFns = [];\nvar extensionInlineStyleMaps = [];\nvar extension_extensionInlineStyleFns = [];\nvar extensionEntities = [];\nvar inlineStyleImporters = [];\nvar inlineStyleExporters = [];\nvar blockImporters = [];\nvar blockExporters = [];\n\nvar filterByEditorId = function filterByEditorId(items, editorId) {\n if (!editorId) {\n return items.filter(function (item) {\n return !item.includeEditors;\n }).map(function (item) {\n return item.data;\n });\n }\n\n return items.map(function (item) {\n if (!item.includeEditors && !item.excludeEditors) {\n return item.data;\n }\n\n if (item.includeEditors) {\n return item.includeEditors.indexOf(editorId) !== -1 ? item.data : false;\n }\n\n if (item.excludeEditors) {\n return item.excludeEditors.indexOf(editorId) !== -1 ? false : item.data;\n }\n\n return false;\n }).filter(function (item) {\n return item;\n });\n};\n\nvar getPropInterceptors = function getPropInterceptors(editorId) {\n return filterByEditorId(extension_propInterceptors, editorId);\n};\nvar getExtensionControls = function getExtensionControls(editorId) {\n return filterByEditorId(extension_extensionControls, editorId);\n};\nvar getExtensionDecorators = function getExtensionDecorators(editorId) {\n return filterByEditorId(extension_extensionDecorators, editorId, 'decorators');\n};\nvar getExtensionBlockRenderMaps = function getExtensionBlockRenderMaps(editorId) {\n return filterByEditorId(extension_extensionBlockRenderMaps, editorId);\n};\nvar getExtensionBlockRendererFns = function getExtensionBlockRendererFns(editorId) {\n return filterByEditorId(extension_extensionBlockRendererFns, editorId);\n};\nvar getExtensionInlineStyleMap = function getExtensionInlineStyleMap(editorId) {\n var inlineStyleMap = {};\n filterByEditorId(extensionInlineStyleMaps, editorId).forEach(function (item) {\n inlineStyleMap[item.inlineStyleName] = item.styleMap;\n });\n return inlineStyleMap;\n};\nvar getExtensionInlineStyleFns = function getExtensionInlineStyleFns(editorId) {\n return filterByEditorId(extension_extensionInlineStyleFns, editorId);\n};\nvar compositeStyleImportFn = function compositeStyleImportFn(styleImportFn, editorId) {\n return function (nodeName, node, style) {\n filterByEditorId(inlineStyleImporters, editorId).forEach(function (styleImporter) {\n if (styleImporter.importer && styleImporter.importer(nodeName, node)) {\n style = style.add(styleImporter.inlineStyleName);\n }\n });\n return styleImportFn ? styleImportFn(nodeName, node, style) : style;\n };\n};\nvar compositeStyleExportFn = function compositeStyleExportFn(styleExportFn, editorId) {\n return function (style) {\n style = style.toUpperCase();\n var result = styleExportFn ? styleExportFn(style) : undefined;\n\n if (result) {\n return result;\n }\n\n filterByEditorId(inlineStyleExporters, editorId).find(function (item) {\n if (item.inlineStyleName === style) {\n result = item.exporter;\n return true;\n }\n });\n return result;\n };\n};\nvar compositeEntityImportFn = function compositeEntityImportFn(entityImportFn, editorId) {\n return function (nodeName, node, createEntity, source) {\n var result = entityImportFn ? entityImportFn(nodeName, node, createEntity, source) : null;\n\n if (result) {\n return result;\n }\n\n filterByEditorId(extensionEntities, editorId).find(function (entityItem) {\n var matched = entityItem.importer ? entityItem.importer(nodeName, node, source) : null;\n matched && (result = createEntity(entityItem.entityType, matched.mutability || 'MUTABLE', matched.data || {}));\n return !!matched;\n });\n return result;\n };\n};\nvar compositeEntityExportFn = function compositeEntityExportFn(entityExportFn, editorId) {\n return function (entity, originalText) {\n var result = entityExportFn ? entityExportFn(entity, originalText) : undefined;\n\n if (result) {\n return result;\n }\n\n var entityType = entity.type.toUpperCase();\n filterByEditorId(extensionEntities, editorId).find(function (entityItem) {\n if (entityItem.entityType === entityType) {\n result = entityItem.exporter ? entityItem.exporter(entity, originalText) : undefined;\n return true;\n }\n });\n return result;\n };\n};\nvar compositeBlockImportFn = function compositeBlockImportFn(blockImportFn, editorId) {\n return function (nodeName, node, source) {\n var result = blockImportFn ? blockImportFn(nodeName, node, source) : null;\n\n if (result) {\n return result;\n }\n\n filterByEditorId(blockImporters, editorId).find(function (blockImporter) {\n var matched = blockImporter.importer ? blockImporter.importer(nodeName, node, source) : undefined;\n matched && (result = matched);\n return !!matched;\n });\n return result;\n };\n};\nvar compositeBlockExportFn = function compositeBlockExportFn(blockExportFn, editorId) {\n return function (contentState, block) {\n var result = blockExportFn ? blockExportFn(contentState, block) : null;\n\n if (result) {\n return result;\n }\n\n filterByEditorId(blockExporters, editorId).find(function (blockExporter) {\n var matched = blockExporter.exporter ? blockExporter.exporter(contentState, block) : undefined;\n matched && (result = matched);\n return !!matched;\n });\n return result;\n };\n};\n\nvar extension_useExtension = function useExtension(extension) {\n if (extension instanceof Array) {\n extension.forEach(useExtension);\n return false;\n }\n\n if (!extension || !extension.type || typeof extension.type !== 'string') {\n return false;\n }\n\n var includeEditors = extension.includeEditors,\n excludeEditors = extension.excludeEditors;\n\n if (extension.type === 'control') {\n extension_extensionControls.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: extension.control\n });\n } else if (extension.type === 'inline-style') {\n var inlineStyleName = extension.name.toUpperCase();\n\n if (extension.control) {\n extension_extensionControls.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: objectSpread_default()({\n key: inlineStyleName,\n type: 'inline-style',\n command: inlineStyleName\n }, extension.control)\n });\n }\n\n if (extension.style) {\n extensionInlineStyleMaps.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n inlineStyleName: inlineStyleName,\n styleMap: extension.style\n }\n });\n }\n\n if (extension.styleFn) {\n extension_extensionInlineStyleFns.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n inlineStyleName: inlineStyleName,\n styleFn: extension.styleFn\n }\n });\n }\n\n if (extension.importer) {\n inlineStyleImporters.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n inlineStyleName: inlineStyleName,\n importer: extension.importer\n }\n });\n }\n\n inlineStyleExporters.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n inlineStyleName: inlineStyleName,\n exporter: extension.exporter ? extension.exporter(extension) : external_react_default.a.createElement(\"span\", {\n style: extension.style\n })\n }\n });\n } else if (extension.type === 'block-style') {// TODO\n } else if (extension.type === 'entity') {\n var entityType = extension.name.toUpperCase();\n\n if (extension.control) {\n extension_extensionControls.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: typeof extension.control === 'function' ? extension.control : objectSpread_default()({\n key: entityType,\n type: 'entity',\n command: entityType,\n data: {\n mutability: extension.mutability || 'MUTABLE',\n data: extension.data || {}\n }\n }, extension.control)\n });\n }\n\n extensionEntities.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n entityType: entityType,\n importer: extension.importer,\n exporter: extension.exporter\n }\n });\n extension_extensionDecorators.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n type: 'entity',\n decorator: {\n key: entityType,\n component: extension.component\n }\n }\n });\n } else if (extension.type === 'block') {\n var blockType = extension.name;\n\n if (extension.renderMap) {\n extension_extensionBlockRenderMaps.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n blockType: blockType,\n renderMap: extension.renderMap\n }\n });\n }\n\n if (extension.rendererFn) {\n extension_extensionBlockRendererFns.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n blockType: blockType,\n rendererFn: extension.rendererFn\n }\n });\n }\n\n if (extension.importer) {\n blockImporters.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n blockType: blockType,\n importer: extension.importer\n }\n });\n }\n\n if (extension.exporter) {\n blockExporters.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n blockType: blockType,\n exporter: extension.exporter\n }\n });\n }\n } else if (extension.type === 'atomic') {// TODO\n } else if (extension.type === 'decorator') {\n var decorator = extension.decorator;\n\n if (decorator && decorator.strategy && decorator.component) {\n extension_extensionDecorators.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n type: 'strategy',\n decorator: decorator\n }\n });\n } else if (decorator && decorator.getDecorations) {\n extension_extensionDecorators.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n type: 'class',\n decorator: decorator\n }\n });\n }\n } else if (extension.type === 'prop-interception') {\n extension_propInterceptors.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: extension.interceptor\n });\n }\n};\n\nvar createExtensibleEditor = function createExtensibleEditor(BraftEditor) {\n BraftEditor.use = extension_useExtension;\n return BraftEditor;\n};\n// CONCATENATED MODULE: ./renderers/block/blockRenderMap.js\n\n\n\n\n/* harmony default export */ var block_blockRenderMap = (function (props, blockRenderMap) {\n var customBlockRenderMap = Object(external_immutable_[\"Map\"])({\n 'atomic': {\n element: ''\n },\n 'code-block': {\n element: 'code',\n wrapper: external_react_default.a.createElement(\"pre\", {\n className: \"braft-code-block\"\n })\n }\n });\n\n try {\n var extensionBlockRenderMaps = getExtensionBlockRenderMaps(props.editorId);\n customBlockRenderMap = extensionBlockRenderMaps.reduce(function (customBlockRenderMap, item) {\n return customBlockRenderMap.merge(typeof item.renderMap === 'function' ? item.renderMap(props) : item.renderMap);\n }, customBlockRenderMap);\n\n if (blockRenderMap) {\n if (typeof blockRenderMap === 'function') {\n customBlockRenderMap = customBlockRenderMap.merge(blockRenderMap(props));\n } else {\n customBlockRenderMap = customBlockRenderMap.merge(blockRenderMap);\n }\n }\n\n customBlockRenderMap = external_draft_js_[\"DefaultDraftBlockRenderMap\"].merge(customBlockRenderMap);\n } catch (error) {\n console.warn(error);\n }\n\n return customBlockRenderMap;\n});\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/extends.js\nvar helpers_extends = __webpack_require__(11);\nvar extends_default = /*#__PURE__*/__webpack_require__.n(helpers_extends);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/slicedToArray.js\nvar slicedToArray = __webpack_require__(24);\nvar slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);\n\n// EXTERNAL MODULE: ./renderers/atomics/Image/style.scss\nvar Image_style = __webpack_require__(45);\n\n// EXTERNAL MODULE: ./components/common/Switch/style.scss\nvar Switch_style = __webpack_require__(46);\n\n// CONCATENATED MODULE: ./components/common/Switch/index.jsx\n\n\n/* harmony default export */ var Switch = (function (props) {\n var active = props.active,\n _onClick = props.onClick,\n className = props.className;\n return external_react_default.a.createElement(\"div\", {\n onClick: function onClick() {\n return _onClick();\n },\n className: 'bf-switch ' + className + (active ? ' active' : '')\n });\n});\n// CONCATENATED MODULE: ./configs/controls.js\n\n/* harmony default export */ var configs_controls = (function (lang, editor) {\n return [{\n key: 'undo',\n title: lang.controls.undo,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-undo\"\n }),\n type: 'editor-method',\n command: 'undo'\n }, {\n key: 'redo',\n title: lang.controls.redo,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-redo\"\n }),\n type: 'editor-method',\n command: 'redo'\n }, {\n key: 'remove-styles',\n title: lang.controls.removeStyles,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-format_clear\"\n }),\n type: 'editor-method',\n command: 'removeSelectionInlineStyles'\n }, {\n key: 'hr',\n title: lang.controls.hr,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-hr\"\n }),\n type: 'editor-method',\n command: 'insertHorizontalLine'\n }, {\n key: 'bold',\n title: lang.controls.bold,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-bold\"\n }),\n type: 'inline-style',\n command: 'bold'\n }, {\n key: 'italic',\n title: lang.controls.italic,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-italic\"\n }),\n type: 'inline-style',\n command: 'italic'\n }, {\n key: 'underline',\n title: lang.controls.underline,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-underlined\"\n }),\n type: 'inline-style',\n command: 'underline'\n }, {\n key: 'strike-through',\n title: lang.controls.strikeThrough,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-strikethrough\"\n }),\n type: 'inline-style',\n command: 'strikethrough'\n }, {\n key: 'superscript',\n title: lang.controls.superScript,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-superscript\"\n }),\n type: 'inline-style',\n command: 'superscript'\n }, {\n key: 'subscript',\n title: lang.controls.subScript,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-subscript\"\n }),\n type: 'inline-style',\n command: 'subscript'\n }, {\n key: 'headings',\n title: lang.controls.headings,\n type: 'headings'\n }, {\n key: 'blockquote',\n title: lang.controls.blockQuote,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-quote\"\n }),\n type: 'block-type',\n command: 'blockquote'\n }, {\n key: 'code',\n title: lang.controls.code,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-code\"\n }),\n type: 'block-type',\n command: 'code-block'\n }, {\n key: 'list-ul',\n title: lang.controls.unorderedList,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-list\"\n }),\n type: 'block-type',\n command: 'unordered-list-item'\n }, {\n key: 'list-ol',\n title: lang.controls.orderedList,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-list-numbered\"\n }),\n type: 'block-type',\n command: 'ordered-list-item'\n }, {\n key: 'link',\n title: lang.controls.link,\n type: 'link'\n }, {\n key: 'text-color',\n title: lang.controls.color,\n type: 'text-color'\n }, {\n key: 'line-height',\n title: lang.controls.lineHeight,\n type: 'line-height'\n }, {\n key: 'letter-spacing',\n title: lang.controls.letterSpacing,\n type: 'letter-spacing'\n }, {\n key: 'text-indent',\n title: lang.controls.textIndent,\n type: 'text-indent'\n }, {\n key: 'font-size',\n title: lang.controls.fontSize,\n type: 'font-size'\n }, {\n key: 'font-family',\n title: lang.controls.fontFamily,\n type: 'font-family'\n }, {\n key: 'text-align',\n title: lang.controls.textAlign,\n type: 'text-align'\n }, {\n key: 'media',\n title: lang.controls.media,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-media\"\n }),\n type: 'media'\n }, {\n key: 'emoji',\n title: lang.controls.emoji,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-emoji\"\n }),\n type: 'emoji'\n }, {\n key: 'clear',\n title: lang.controls.clear,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-clear_all\"\n }),\n type: 'editor-method',\n command: 'clearEditorContent'\n }, {\n key: 'fullscreen',\n title: editor.state.isFullscreen ? lang.controls.exitFullscreen : lang.controls.fullscreen,\n text: external_react_default.a.createElement(\"i\", {\n className: editor.state.isFullscreen ? 'bfi-fullscreen-exit' : 'bfi-fullscreen'\n }),\n type: 'editor-method',\n command: 'toggleFullscreen'\n }, {\n key: 'modal',\n type: 'modal'\n }, {\n key: 'button',\n type: 'button'\n }, {\n key: 'dropdown',\n type: 'dropdown'\n }, {\n key: 'component',\n type: 'component'\n }];\n});\nvar imageControlItems = {\n 'float-left': {\n text: external_react_default.a.createElement(\"span\", {\n \"data-float\": \"left\"\n }, \"\\uE91E\"),\n command: 'setImageFloat|left'\n },\n 'float-right': {\n text: external_react_default.a.createElement(\"span\", {\n \"data-float\": \"right\"\n }, \"\\uE914\"),\n command: 'setImageFloat|right'\n },\n 'align-left': {\n text: external_react_default.a.createElement(\"span\", {\n \"data-align\": \"left\"\n }, \"\\uE027\"),\n command: 'setImageAlignment|left'\n },\n 'align-center': {\n text: external_react_default.a.createElement(\"span\", {\n \"data-align\": \"center\"\n }, \"\\uE028\"),\n command: 'setImageAlignment|center'\n },\n 'align-right': {\n text: external_react_default.a.createElement(\"span\", {\n \"data-align\": \"right\"\n }, \"\\uE029\"),\n command: 'setImageAlignment|right'\n },\n 'size': {\n text: external_react_default.a.createElement(\"span\", null, \"\\uE3C2\"),\n command: 'toggleSizeEditor'\n },\n 'link': {\n text: external_react_default.a.createElement(\"span\", null, \"\\uE91A\"),\n command: 'toggleLinkEditor'\n },\n 'remove': {\n text: external_react_default.a.createElement(\"span\", null, \"\\uE9AC\"),\n command: 'removeImage'\n }\n};\n// CONCATENATED MODULE: ./renderers/atomics/Image/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image_Image =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(Image, _React$Component);\n\n function Image() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, Image);\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 = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(Image)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n toolbarVisible: false,\n toolbarOffset: 0,\n linkEditorVisible: false,\n sizeEditorVisible: false,\n tempLink: null,\n tempWidth: null,\n tempHeight: null\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"initialLeft\", void 0);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"initialTop\", void 0);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"initialWidth\", void 0);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"initialHeight\", void 0);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"reSizeType\", void 0);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"changeSize\", function (e) {\n var type = _this.reSizeType;\n\n if (!_this.initialLeft) {\n _this.initialLeft = e.screenX;\n _this.initialTop = e.screenY;\n }\n\n if (type === 'rightbottom') {\n _this.initialHeight += e.screenY - _this.initialTop;\n _this.initialWidth += e.screenX - _this.initialLeft;\n }\n\n if (type === 'leftbottom') {\n _this.initialHeight += e.screenY - _this.initialTop;\n _this.initialWidth += -e.screenX + _this.initialLeft;\n }\n\n _this.initialLeft = e.screenX;\n _this.initialTop = e.screenY;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"moveImage\", function (e) {\n _this.changeSize(e);\n\n _this.setState({\n tempWidth: Math.abs(_this.initialWidth),\n tempHeight: Math.abs(_this.initialHeight)\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"upImage\", function () {\n _this.confirmImageSize();\n\n document.removeEventListener('mousemove', _this.moveImage);\n document.removeEventListener('mouseup', _this.upImage);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"repareChangeSize\", function (type) {\n return function (e) {\n _this.reSizeType = type;\n\n var imageRect = _this.imageElement.getBoundingClientRect();\n\n _this.initialLeft = _this.initialTop = 0;\n _this.initialWidth = imageRect.width;\n _this.initialHeight = imageRect.height;\n e.preventDefault();\n document.addEventListener('mousemove', _this.moveImage);\n document.addEventListener('mouseup', _this.upImage);\n };\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"preventDragEvent\", function (event) {\n event.stopPropagation();\n event.preventDefault();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleDragStart\", function () {\n if (_this.props.editor.editorProps.readOnly || _this.props.editor.editorProps.disabled) {\n return false;\n }\n\n window.__BRAFT_DRAGING__IMAGE__ = {\n block: _this.props.block,\n mediaData: objectSpread_default()({\n type: 'IMAGE'\n }, _this.props.mediaData)\n };\n\n _this.setState({\n toolbarVisible: false\n }, function () {\n _this.unlockEditor();\n });\n\n return true;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleDragEnd\", function () {\n window.__BRAFT_DRAGING__IMAGE__ = null;\n return false;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"executeCommand\", function (command) {\n if (typeof command === 'string') {\n var _command$split = command.split('|'),\n _command$split2 = slicedToArray_default()(_command$split, 2),\n method = _command$split2[0],\n param = _command$split2[1];\n\n _this[method] && _this[method](param);\n } else if (typeof command === 'function') {\n command(_this.props.block, _this.props.mediaData, _this.props.editor.getValue());\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeImage\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].removeBlock(_this.props.editor.getValue(), _this.props.block));\n\n _this.unlockEditor();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"toggleLinkEditor\", function () {\n _this.setState({\n linkEditorVisible: !_this.state.linkEditorVisible,\n sizeEditorVisible: false\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"toggleSizeEditor\", function () {\n _this.setState({\n linkEditorVisible: false,\n sizeEditorVisible: !_this.state.sizeEditorVisible\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleLinkInputKeyDown\", function (e) {\n if (e.keyCode === 13) {\n _this.confirmImageLink();\n } else {\n return;\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setImageLink\", function (e) {\n _this.setState({\n tempLink: e.currentTarget.value\n });\n\n return;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"confirmImageLink\", function () {\n var link = _this.state.tempLink;\n\n var hookReturns = _this.props.hooks('set-image-link', link)(link);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n link = hookReturns;\n }\n\n if (link !== null) {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].setMediaData(_this.props.editor.getValue(), _this.props.entityKey, {\n link: link\n }));\n\n window.setImmediate(_this.props.editor.forceRender);\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleSizeInputKeyDown\", function (e) {\n if (e.keyCode === 13) {\n _this.confirmImageSize();\n } else {\n return;\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setImageWidth\", function (_ref) {\n var currentTarget = _ref.currentTarget;\n var value = currentTarget.value;\n value && !isNaN(value) && (value = value + 'px');\n\n _this.setState({\n tempWidth: value\n });\n\n return;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setImageHeight\", function (_ref2) {\n var currentTarget = _ref2.currentTarget;\n var value = currentTarget.value;\n value && !isNaN(value) && (value = value + 'px');\n\n _this.setState({\n tempHeight: value\n });\n\n return;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"confirmImageSize\", function () {\n var _this$state = _this.state,\n width = _this$state.tempWidth,\n height = _this$state.tempHeight;\n var newImageSize = {};\n width !== null && (newImageSize.width = width);\n height !== null && (newImageSize.height = height);\n\n var hookReturns = _this.props.hooks('set-image-size', newImageSize)(newImageSize);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (hookReturns && (hookReturns.width || hookReturns.height)) {\n newImageSize = hookReturns;\n }\n\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].setMediaData(_this.props.editor.getValue(), _this.props.entityKey, newImageSize));\n\n window.setImmediate(_this.props.editor.forceRender);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setImageFloat\", function (float) {\n var hookReturns = _this.props.hooks('set-image-float', float)(float);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n float = hookReturns;\n }\n\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].setMediaPosition(_this.props.editor.getValue(), _this.props.block, {\n float: float\n }));\n\n _this.unlockEditor();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setImageAlignment\", function (alignment) {\n var hookReturns = _this.props.hooks('set-image-alignment', alignment)(alignment);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n alignment = hookReturns;\n }\n\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].setMediaPosition(_this.props.editor.getValue(), _this.props.block, {\n alignment: alignment\n }));\n\n _this.unlockEditor();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"showToolbar\", function (event) {\n if (_this.props.editor.editorProps.readOnly || _this.props.editor.editorProps.disabled) {\n return false;\n }\n\n event.preventDefault();\n\n if (!_this.state.toolbarVisible) {\n _this.setState({\n toolbarVisible: true\n }, function () {\n _this.lockEditor();\n\n _this.setState({\n toolbarOffset: _this.calcToolbarOffset()\n });\n });\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"hideToolbar\", function (event) {\n event.preventDefault();\n\n _this.setState({\n toolbarVisible: false\n }, function () {\n _this.unlockEditor(); // this.props.editor.requestFocus()\n\n });\n });\n\n return _this;\n }\n\n createClass_default()(Image, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n mediaData = _this$props.mediaData,\n language = _this$props.language,\n imageControls = _this$props.imageControls,\n imageResizable = _this$props.imageResizable;\n var _this$state2 = this.state,\n toolbarVisible = _this$state2.toolbarVisible,\n toolbarOffset = _this$state2.toolbarOffset,\n linkEditorVisible = _this$state2.linkEditorVisible,\n sizeEditorVisible = _this$state2.sizeEditorVisible,\n tempWidth = _this$state2.tempWidth,\n tempHeight = _this$state2.tempHeight;\n var blockData = this.props.block.getData();\n var float = blockData.get('float');\n var alignment = blockData.get('alignment');\n var url = mediaData.url,\n link = mediaData.link,\n link_target = mediaData.link_target,\n width = mediaData.width,\n height = mediaData.height,\n meta = mediaData.meta;\n var imageStyles = {};\n var clearFix = false;\n\n if (float) {\n alignment = null;\n } else if (alignment === 'left') {\n imageStyles.float = 'left';\n clearFix = true;\n } else if (alignment === 'right') {\n imageStyles.float = 'right';\n clearFix = true;\n } else if (alignment === 'center') {\n imageStyles.textAlign = 'center';\n } else {\n imageStyles.float = 'left';\n clearFix = true;\n }\n\n var renderedControlItems = imageControls.map(function (item, index) {\n if (typeof item === 'string' && imageControlItems[item]) {\n return external_react_default.a.createElement(\"a\", {\n className: item === 'link' && link ? 'active' : '',\n key: index,\n onClick: function onClick() {\n return _this2.executeCommand(imageControlItems[item].command);\n }\n }, imageControlItems[item].text);\n } else if (item && (item.render || item.text)) {\n return item.render ? item.render(mediaData, _this2.props.block) : external_react_default.a.createElement(\"a\", {\n key: index,\n onClick: function onClick() {\n return item.onClick && _this2.executeCommand(item.onClick);\n }\n }, item.text);\n } else {\n return null;\n }\n });\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-media\"\n }, external_react_default.a.createElement(\"div\", {\n style: imageStyles,\n draggable: true,\n onMouseEnter: this.showToolbar,\n onMouseMove: this.showToolbar,\n onMouseLeave: this.hideToolbar,\n onDragStart: this.handleDragStart,\n onDragEnd: this.handleDragEnd,\n ref: function ref(instance) {\n return _this2.mediaEmbederInstance = instance;\n },\n className: \"bf-image\"\n }, toolbarVisible ? external_react_default.a.createElement(\"div\", {\n style: {\n marginLeft: toolbarOffset\n },\n ref: function ref(instance) {\n return _this2.toolbarElement = instance;\n },\n \"data-float\": float,\n \"data-align\": alignment,\n className: \"bf-media-toolbar\"\n }, linkEditorVisible ? external_react_default.a.createElement(\"div\", {\n className: \"bf-image-link-editor\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"editor-input-group\"\n }, external_react_default.a.createElement(\"input\", {\n type: \"text\",\n placeholder: language.linkEditor.inputWithEnterPlaceHolder,\n onKeyDown: this.handleLinkInputKeyDown,\n onChange: this.setImageLink,\n defaultValue: link\n }), external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.confirmImageLink\n }, language.base.confirm)), external_react_default.a.createElement(\"div\", {\n className: \"switch-group\"\n }, external_react_default.a.createElement(Switch, {\n active: link_target === '_blank',\n onClick: function onClick() {\n return _this2.setImageLinkTarget(link_target);\n }\n }), external_react_default.a.createElement(\"label\", null, language.linkEditor.openInNewWindow))) : null, sizeEditorVisible ? external_react_default.a.createElement(\"div\", {\n className: \"bf-image-size-editor\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"editor-input-group\"\n }, external_react_default.a.createElement(\"input\", {\n type: \"text\",\n placeholder: language.base.width,\n onKeyDown: this.handleSizeInputKeyDown,\n onChange: this.setImageWidth,\n defaultValue: width\n }), external_react_default.a.createElement(\"input\", {\n type: \"text\",\n placeholder: language.base.height,\n onKeyDown: this.handleSizeInputKeyDown,\n onChange: this.setImageHeight,\n defaultValue: height\n }), external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.confirmImageSize\n }, language.base.confirm))) : null, renderedControlItems, external_react_default.a.createElement(\"i\", {\n style: {\n marginLeft: toolbarOffset * -1\n },\n className: \"bf-media-toolbar-arrow\"\n })) : null, external_react_default.a.createElement(\"div\", {\n style: {\n position: 'relative',\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n display: 'inline-block'\n }\n }, external_react_default.a.createElement(\"img\", extends_default()({\n ref: function ref(instance) {\n return _this2.imageElement = instance;\n },\n src: url,\n width: width,\n height: height\n }, meta)), toolbarVisible && imageResizable ? external_react_default.a.createElement(\"div\", {\n className: \"bf-csize-icon right-bottom\",\n onMouseDown: this.repareChangeSize('rightbottom')\n }) : null, toolbarVisible && imageResizable ? external_react_default.a.createElement(\"div\", {\n className: \"bf-csize-icon left-bottom\",\n onMouseDown: this.repareChangeSize('leftbottom')\n }) : null, external_react_default.a.createElement(\"div\", {\n className: \"bf-pre-csize \".concat(this.reSizeType),\n style: {\n width: \"\".concat(tempWidth, \"px\"),\n height: \"\".concat(tempHeight, \"px\")\n }\n }))), clearFix && external_react_default.a.createElement(\"div\", {\n className: \"clearfix\",\n style: {\n clear: 'both',\n height: 0,\n lineHeight: 0,\n float: 'none'\n }\n }));\n }\n }, {\n key: \"lockEditor\",\n value: function lockEditor() {\n this.props.editor.lockOrUnlockEditor(true);\n }\n }, {\n key: \"unlockEditor\",\n value: function unlockEditor() {\n this.props.editor.lockOrUnlockEditor(false);\n }\n }, {\n key: \"calcToolbarOffset\",\n value: function calcToolbarOffset() {\n var _this$props2 = this.props,\n getContainerNode = _this$props2.getContainerNode,\n containerNode = _this$props2.containerNode;\n var container = getContainerNode ? getContainerNode() : containerNode;\n\n if (!container) {\n return 0;\n }\n\n var viewRect = container.querySelector('.bf-content').getBoundingClientRect();\n var toolbarRect = this.toolbarElement.getBoundingClientRect();\n var imageRect = this.imageElement.getBoundingClientRect();\n var right = viewRect.right - (imageRect.right - imageRect.width / 2 + toolbarRect.width / 2);\n var left = imageRect.left + imageRect.width / 2 - toolbarRect.width / 2 - viewRect.left;\n\n if (right < 10) {\n return right - 10;\n } else if (left < 10) {\n return left * -1 + 10;\n } else {\n return 0;\n }\n }\n }, {\n key: \"setImageLinkTarget\",\n value: function setImageLinkTarget(link_target) {\n var hookReturns = this.props.hooks('set-image-link-target', link_target)(link_target);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n link_target = hookReturns;\n }\n\n link_target = link_target === '_blank' ? '' : '_blank';\n this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].setMediaData(this.props.editor.getValue(), this.props.entityKey, {\n link_target: link_target\n }));\n window.setImmediate(this.props.editor.forceRender);\n }\n }]);\n\n return Image;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./renderers/atomics/Video/style.scss\nvar Video_style = __webpack_require__(47);\n\n// EXTERNAL MODULE: ./components/common/Modal/style.scss\nvar Modal_style = __webpack_require__(48);\n\n// EXTERNAL MODULE: external \"react-dom\"\nvar external_react_dom_ = __webpack_require__(16);\nvar external_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_react_dom_);\n\n// CONCATENATED MODULE: ./components/common/Modal/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Modal_Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(Modal, _React$Component);\n\n function Modal(props) {\n var _this;\n\n classCallCheck_default()(this, Modal);\n\n _this = possibleConstructorReturn_default()(this, getPrototypeOf_default()(Modal).call(this, props));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleTransitionEnd\", function () {\n if (!_this.rootElement || !_this.rootElement.classList) {\n return false;\n }\n\n if (!_this.rootElement.classList.contains('active')) {\n external_react_dom_default.a.unmountComponentAtNode(_this.rootElement) && _this.rootElement.parentNode.removeChild(_this.rootElement);\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleMouseDown\", function (event) {\n var tagName = event.target.tagName.toLowerCase();\n\n if (tagName === 'input' || tagName === 'textarea') {\n return false;\n }\n\n event.preventDefault();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleCancel\", function () {\n _this.props.closeOnCancel && _this.close();\n _this.props.onCancel && _this.props.onCancel();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleConfirm\", function () {\n _this.props.closeOnConfirm && _this.close();\n _this.props.onConfirm && _this.props.onConfirm();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleMaskClick\", function () {\n _this.props.closeOnBlur && _this.close();\n _this.props.onBlue && _this.props.onBlue();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"close\", function () {\n _this.unrenderComponent();\n\n _this.props.onClose && _this.props.onClose();\n });\n\n _this.active = false;\n _this.componentId = 'BRAFT-MODAL-' + external_braft_utils_[\"BaseUtils\"].UniqueIndex();\n return _this;\n }\n\n createClass_default()(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.visible) {\n this.active = true;\n this.renderComponent(this.props);\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(next) {\n if (this.props.visible && !next.visible) {\n this.unrenderComponent();\n } else if (this.props.visible || next.visible) {\n this.active = true;\n this.renderComponent(next);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }, {\n key: \"unrenderComponent\",\n value: function unrenderComponent() {\n this.active = false;\n this.activeId && window.clearImmediate(this.activeId);\n\n if (this.rootElement && this.rootElement.classList) {\n this.rootElement.classList.remove('active');\n }\n }\n }, {\n key: \"renderComponent\",\n value: function renderComponent(props) {\n var _this2 = this;\n\n if (!this.active) {\n return false;\n }\n\n var title = props.title,\n className = props.className,\n width = props.width,\n height = props.height,\n children = props.children,\n component = props.component,\n confirmable = props.confirmable,\n showFooter = props.showFooter,\n showCancel = props.showCancel,\n showConfirm = props.showConfirm,\n showClose = props.showClose,\n cancelText = props.cancelText,\n confirmText = props.confirmText,\n bottomText = props.bottomText,\n language = props.language;\n typeof showCancel === 'undefined' && (showCancel = true);\n typeof showClose === 'undefined' && (showClose = true);\n typeof showConfirm === 'undefined' && (showConfirm = true);\n typeof showFooter === 'undefined' && (showFooter = true);\n var childComponent = external_react_default.a.createElement(\"div\", {\n onMouseDown: this.handleMouseDown,\n className: 'bf-modal ' + (className || '')\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-mask\",\n onClick: this.handleMaskClick\n }), external_react_default.a.createElement(\"div\", {\n onTransitionEnd: this.handleTransitionEnd,\n style: {\n width: width,\n height: height\n },\n className: \"bf-modal-content\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-header\"\n }, external_react_default.a.createElement(\"h3\", {\n className: \"bf-modal-caption\"\n }, title), showClose && external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.close,\n className: \"bf-modal-close-button\"\n }, external_react_default.a.createElement(\"i\", {\n className: \"bfi-close\"\n }))), external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-body\"\n }, children || component), showFooter ? external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-footer\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-addon-text\"\n }, bottomText), external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-buttons\"\n }, showCancel && external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleCancel,\n className: \"bf-modal-cancel\"\n }, cancelText || language.base.cancel), showConfirm && external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleConfirm,\n className: 'bf-modal-confirm ' + (!confirmable ? 'disabled' : '')\n }, confirmText || language.base.confirm))) : null));\n this.rootElement = document.querySelector('#' + this.componentId);\n\n if (!this.rootElement) {\n this.rootElement = document.createElement('div');\n this.rootElement.id = this.componentId;\n this.rootElement.className = 'bf-modal-root';\n document.body.appendChild(this.rootElement);\n }\n\n external_react_dom_default.a.render(childComponent, this.rootElement);\n this.activeId = window.setImmediate(function () {\n _this2.rootElement.classList.add('active');\n });\n }\n }]);\n\n return Modal;\n}(external_react_default.a.Component);\n\ndefineProperty_default()(Modal_Modal, \"defaultProps\", {\n showFooter: true,\n closeOnBlur: true\n});\n\n\nvar Modal_showModal = function showModal(props) {\n var hostNode = document.createElement('div');\n hostNode.style.display = 'none';\n document.body.appendChild(hostNode);\n props = objectSpread_default()({\n visible: true,\n closeOnConfirm: true,\n closeOnCancel: true\n }, props);\n\n var close = function close() {\n external_react_dom_default.a.unmountComponentAtNode(hostNode) && hostNode.parentNode.removeChild(hostNode);\n };\n\n var onConfirm = function onConfirm() {\n props.onConfirm && props.onConfirm();\n };\n\n var onCancel = function onCancel() {\n props.onCancel && props.onCancel();\n };\n\n var onClose = function onClose() {\n close();\n props.onClose && props.onClose();\n };\n\n var modalInstance = external_react_dom_default.a.render(external_react_default.a.createElement(Modal_Modal, extends_default()({}, props, {\n onConfirm: onConfirm,\n onCancel: onCancel,\n onClose: onClose\n })), hostNode);\n modalInstance.destroy = close;\n modalInstance.update = modalInstance.renderComponent;\n return modalInstance;\n};\n// EXTERNAL MODULE: ./components/business/PlayerModal/style.scss\nvar PlayerModal_style = __webpack_require__(49);\n\n// CONCATENATED MODULE: ./components/business/PlayerModal/index.jsx\n\n\n\n\nvar PlayerModal_playViaModal = function playViaModal(title, component, language) {\n return Modal_showModal({\n title: title,\n component: component,\n language: language,\n showFooter: false\n });\n};\n\nvar typeIconsMap = {\n 'video': 'bfi-film',\n 'audio': 'bfi-music',\n 'embed': 'bfi-code'\n};\n/* harmony default export */ var PlayerModal = (function (_ref) {\n var title = _ref.title,\n type = _ref.type,\n language = _ref.language,\n name = _ref.name,\n url = _ref.url,\n poster = _ref.poster,\n children = _ref.children,\n onRemove = _ref.onRemove;\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-player-holder \".concat(type)\n }, external_react_default.a.createElement(\"div\", {\n className: \"icon-badge\"\n }, external_react_default.a.createElement(\"i\", {\n className: typeIconsMap[type]\n }), external_react_default.a.createElement(\"span\", {\n className: \"text\"\n }, language.media[type])), external_react_default.a.createElement(\"button\", {\n onMouseDown: onRemove,\n className: \"button-remove\"\n }, external_react_default.a.createElement(\"i\", {\n className: \"bfi-close\"\n })), external_react_default.a.createElement(\"button\", {\n onMouseDown: function onMouseDown() {\n return PlayerModal_playViaModal(name ? \"\".concat(title, \":\").concat(name) : title, children, language);\n },\n className: \"button-play\"\n }, external_react_default.a.createElement(\"i\", {\n className: \"bfi-play_arrow\"\n })), name ? external_react_default.a.createElement(\"h5\", {\n className: \"bf-name\"\n }, name) : null, external_react_default.a.createElement(\"h6\", {\n className: \"bf-url\"\n }, url), poster ? external_react_default.a.createElement(\"div\", {\n className: \"bf-poster\",\n style: {\n backgroundImage: \"url(\".concat(poster, \")\")\n }\n }) : null);\n});\n// CONCATENATED MODULE: ./renderers/atomics/Video/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\nvar Video_Video =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(Video, _React$Component);\n\n function Video() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, Video);\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 = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(Video)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeVideo\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].removeBlock(_this.props.editorState, _this.props.block));\n });\n\n return _this;\n }\n\n createClass_default()(Video, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n mediaData = _this$props.mediaData,\n language = _this$props.language;\n var url = mediaData.url,\n name = mediaData.name,\n meta = mediaData.meta;\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-video-wrap\"\n }, external_react_default.a.createElement(PlayerModal, {\n type: \"video\",\n onRemove: this.removeVideo,\n poster: meta ? meta.poster || '' : '',\n language: language,\n url: url,\n name: name,\n title: language.videoPlayer.title\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-video-player\"\n }, external_react_default.a.createElement(\"video\", {\n controls: true,\n poster: meta ? meta.poster || '' : ''\n }, external_react_default.a.createElement(\"source\", {\n src: url\n })))));\n }\n }]);\n\n return Video;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./renderers/atomics/Audio/style.scss\nvar Audio_style = __webpack_require__(50);\n\n// CONCATENATED MODULE: ./renderers/atomics/Audio/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\nvar Audio_Audio =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(Audio, _React$Component);\n\n function Audio() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, Audio);\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 = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(Audio)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeAudio\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].removeBlock(_this.props.editorState, _this.props.block));\n });\n\n return _this;\n }\n\n createClass_default()(Audio, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n mediaData = _this$props.mediaData,\n language = _this$props.language;\n var url = mediaData.url,\n name = mediaData.name,\n meta = mediaData.meta;\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-audio-wrap\"\n }, external_react_default.a.createElement(PlayerModal, {\n type: \"audio\",\n onRemove: this.removeAudio,\n poster: meta ? meta.poster || '' : '',\n language: language,\n url: url,\n name: name,\n title: language.audioPlayer.title\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-audio-player\"\n }, external_react_default.a.createElement(\"audio\", {\n controls: true,\n src: url\n }))));\n }\n }]);\n\n return Audio;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./renderers/atomics/Embed/style.scss\nvar Embed_style = __webpack_require__(51);\n\n// CONCATENATED MODULE: ./renderers/atomics/Embed/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\nvar Embed_Embed =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(Embed, _React$Component);\n\n function Embed() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, Embed);\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 = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(Embed)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeEmbed\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].removeBlock(_this.props.editorState, _this.props.block));\n });\n\n return _this;\n }\n\n createClass_default()(Embed, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n mediaData = _this$props.mediaData,\n language = _this$props.language;\n var name = mediaData.name,\n url = mediaData.url,\n meta = mediaData.meta;\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-embed-wrap\"\n }, external_react_default.a.createElement(PlayerModal, {\n type: \"embed\",\n onRemove: this.removeEmbed,\n poster: meta ? meta.poster || '' : '',\n language: language,\n url: url,\n name: name,\n title: language.videoPlayer.embedTitle\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-embed-player\",\n dangerouslySetInnerHTML: {\n __html: url\n }\n })));\n }\n }]);\n\n return Embed;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./renderers/atomics/HorizontalLine/style.scss\nvar HorizontalLine_style = __webpack_require__(52);\n\n// CONCATENATED MODULE: ./renderers/atomics/HorizontalLine/index.jsx\n\n\n\n\n\n\n\n\n\n\n\nvar HorizontalLine_HorizontalLine =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(HorizontalLine, _React$Component);\n\n function HorizontalLine() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, HorizontalLine);\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 = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(HorizontalLine)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeHorizontalLine\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].removeBlock(_this.props.editorState, _this.props.block));\n });\n\n return _this;\n }\n\n createClass_default()(HorizontalLine, [{\n key: \"render\",\n value: function render() {\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-hr\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-media-toolbar\"\n }, external_react_default.a.createElement(\"a\", {\n onClick: this.removeHorizontalLine\n }, \"\\uE9AC\")));\n }\n }]);\n\n return HorizontalLine;\n}(external_react_default.a.Component);\n\n\n// CONCATENATED MODULE: ./renderers/block/blockRendererFn.js\n\n\n\n\n\n\n\n\n\n\n\nvar blockRendererFn_BlockRenderFnContext = function BlockRenderFnContext() {\n var _this = this;\n\n classCallCheck_default()(this, BlockRenderFnContext);\n\n defineProperty_default()(this, \"superProps\", void 0);\n\n defineProperty_default()(this, \"customBlockRendererFn\", void 0);\n\n defineProperty_default()(this, \"getRenderFn\", function (superProps, customBlockRendererFn) {\n _this.superProps = superProps;\n _this.customBlockRendererFn = customBlockRendererFn;\n return _this.blockRendererFn;\n });\n\n defineProperty_default()(this, \"renderAtomicBlock\", function (props) {\n var superProps = _this.superProps;\n var entityKey = props.block.getEntityAt(0);\n\n if (!entityKey) {\n return null;\n }\n\n var entity = props.contentState.getEntity(entityKey);\n var mediaData = entity.getData();\n var mediaType = entity.getType();\n\n var mediaProps = objectSpread_default()({}, superProps, {\n block: props.block,\n mediaData: mediaData,\n entityKey: entityKey\n });\n\n if (mediaType === 'IMAGE') {\n return external_react_default.a.createElement(Image_Image, mediaProps);\n } else if (mediaType === 'AUDIO') {\n return external_react_default.a.createElement(Audio_Audio, mediaProps);\n } else if (mediaType === 'VIDEO') {\n return external_react_default.a.createElement(Video_Video, mediaProps);\n } else if (mediaType === 'EMBED') {\n return external_react_default.a.createElement(Embed_Embed, mediaProps);\n } else if (mediaType === 'HR') {\n return external_react_default.a.createElement(HorizontalLine_HorizontalLine, mediaProps);\n }\n\n if (superProps.extendAtomics) {\n var atomics = superProps.extendAtomics;\n\n for (var i = 0; i < atomics.length; i++) {\n if (mediaType === atomics[i].type) {\n var Component = atomics[i].component;\n return external_react_default.a.createElement(Component, mediaProps);\n }\n }\n }\n\n return null;\n });\n\n defineProperty_default()(this, \"blockRendererFn\", function (block) {\n var customBlockRendererFn = _this.customBlockRendererFn,\n superProps = _this.superProps;\n var blockType = block.getType();\n var blockRenderer = null;\n\n if (customBlockRendererFn) {\n blockRenderer = customBlockRendererFn(block, superProps) || null;\n }\n\n if (blockRenderer) {\n return blockRenderer;\n }\n\n var extensionBlockRendererFns = getExtensionBlockRendererFns(superProps.editorId);\n extensionBlockRendererFns.find(function (item) {\n if (item.blockType === blockType || item.blockType instanceof RegExp && item.blockType.test(blockType)) {\n blockRenderer = item.rendererFn ? item.rendererFn(superProps) : null;\n return true;\n }\n });\n\n if (blockRenderer) {\n return blockRenderer;\n }\n\n if (blockType === 'atomic') {\n blockRenderer = {\n component: _this.renderAtomicBlock,\n editable: false\n };\n }\n\n return blockRenderer;\n });\n};\n\nvar blockRenderFnContext = new blockRendererFn_BlockRenderFnContext();\n/* harmony default export */ var block_blockRendererFn = (blockRenderFnContext.getRenderFn);\n// CONCATENATED MODULE: ./renderers/block/blockStyleFn.js\n/* harmony default export */ var block_blockStyleFn = (function (customBlockStyleFn) {\n return function (block) {\n var blockAlignment = block.getData() && block.getData().get('textAlign');\n var blockIndent = block.getData() && block.getData().get('textIndent');\n var blockFloat = block.getData() && block.getData().get('float');\n var result = '';\n\n if (blockAlignment) {\n result = \"bfa-\".concat(blockAlignment);\n }\n\n if (blockIndent && blockIndent !== 0) {\n result += \" bftd-\".concat(blockIndent);\n }\n\n if (blockFloat) {\n result += \" bff-\".concat(blockFloat);\n }\n\n if (customBlockStyleFn) {\n result += customBlockStyleFn(block) || '';\n }\n\n return result;\n };\n});\n// CONCATENATED MODULE: ./renderers/inline/inlineStyleMap.js\n\n\n/* harmony default export */ var inlineStyleMap = (function (props) {\n var customStyleMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var extensionInlineStyleMap = getExtensionInlineStyleMap(props.editorId);\n return objectSpread_default()({\n 'SUPERSCRIPT': {\n position: 'relative',\n top: '-8px',\n fontSize: '11px'\n },\n 'SUBSCRIPT': {\n position: 'relative',\n bottom: '-8px',\n fontSize: '11px'\n }\n }, extensionInlineStyleMap, customStyleMap);\n});\n// CONCATENATED MODULE: ./renderers/inline/inlineStyleFn.js\n\n\nvar getStyleValue = function getStyleValue(style) {\n return style.split('-')[1];\n};\n\n/* harmony default export */ var inlineStyleFn = (function (props, options) {\n return function (styles, block) {\n var output = {};\n var fontFamilies = options.fontFamilies,\n unitExportFn = options.unitExportFn,\n customStyleFn = options.customStyleFn;\n var extensionInlineStyleFns = getExtensionInlineStyleFns(props.editorId);\n extensionInlineStyleFns.forEach(function (item) {\n output = item.styleFn ? item.styleFn(styles, block, output) : output;\n });\n output = customStyleFn ? customStyleFn(styles, block, output) : {};\n styles.forEach(function (style) {\n if (style.indexOf('COLOR-') === 0) {\n output.color = '#' + getStyleValue(style);\n } else if (style.indexOf('BGCOLOR-') === 0) {\n output.backgroundColor = '#' + getStyleValue(style);\n } else if (style.indexOf('FONTSIZE-') === 0) {\n output.fontSize = unitExportFn(getStyleValue(style), 'font-size', 'editor');\n } else if (style.indexOf('LINEHEIGHT-') === 0) {\n output.lineHeight = unitExportFn(getStyleValue(style), 'line-height', 'editor');\n } else if (style.indexOf('LETTERSPACING-') === 0) {\n output.letterSpacing = unitExportFn(getStyleValue(style), 'letter-spacing', 'editor');\n } else if (style.indexOf('TEXTINDENT-') === 0) {\n output.textIndent = unitExportFn(getStyleValue(style), 'text-indent', 'editor');\n } else if (style.indexOf('FONTFAMILY-') === 0) {\n output.fontFamily = (fontFamilies.find(function (item) {\n return item.name.toUpperCase() === getStyleValue(style);\n }) || {}).family || '';\n }\n });\n return output;\n };\n});\n// EXTERNAL MODULE: ../node_modules/draft-js-multidecorators/index.js\nvar draft_js_multidecorators = __webpack_require__(18);\nvar draft_js_multidecorators_default = /*#__PURE__*/__webpack_require__.n(draft_js_multidecorators);\n\n// CONCATENATED MODULE: ./renderers/decorators/Link/index.jsx\n\n/* harmony default export */ var Link = (function (props) {\n var children = props.children,\n entityKey = props.entityKey,\n contentState = props.contentState;\n\n var _contentState$getEnti = contentState.getEntity(entityKey).getData(),\n href = _contentState$getEnti.href,\n target = _contentState$getEnti.target;\n\n return external_react_default.a.createElement(\"span\", {\n className: \"bf-link-wrap\"\n }, external_react_default.a.createElement(\"a\", {\n onClick: function onClick(event) {\n return viewLink(event, href);\n },\n className: \"bf-link\",\n href: href,\n target: target\n }, children));\n});\n\nvar viewLink = function viewLink(event, link) {\n // 当按下Ctrl/command键时,点击打开链接文字中的url\n if (event.getModifierState('Control') || event.getModifierState('Meta')) {\n var tempLink = document.createElement('a');\n tempLink.href = link;\n tempLink.target = event.currentTarget.target;\n tempLink.click();\n }\n};\n// CONCATENATED MODULE: ./renderers/decorators/index.js\n\n\n\n\n\n\nvar KEY_SEPARATOR = '-';\n\ndraft_js_multidecorators_default.a.prototype.getDecorations = function (block, contentState) {\n var decorations = Array(block.getText().length).fill(null);\n this.decorators.forEach(function (decorator, i) {\n decorator.getDecorations(block, contentState).forEach(function (key, offset) {\n if (!key) {\n return;\n }\n\n key = i + KEY_SEPARATOR + key;\n decorations[offset] = key;\n });\n });\n return external_immutable_default.a.List(decorations);\n};\n\nvar builtinDecorators = [{\n type: 'entity',\n decorator: {\n key: 'LINK',\n component: Link\n }\n}];\n\nvar createStrategy = function createStrategy(type) {\n return function (block, callback, contentState) {\n block.findEntityRanges(function (character) {\n var entityKey = character.getEntity();\n return entityKey !== null && contentState.getEntity(entityKey).getType() === type;\n }, callback);\n };\n};\n\n/* harmony default export */ var decorators = (function (editorId) {\n var extensionDecorators = getExtensionDecorators(editorId);\n var entityDecorators = builtinDecorators.concat(toConsumableArray_default()(extensionDecorators.filter(function (item) {\n return item.type === 'entity';\n })));\n var strategyDecorators = extensionDecorators.filter(function (item) {\n return item.type === 'strategy';\n });\n var classDecorators = extensionDecorators.filter(function (item) {\n return item.type === 'class';\n });\n return new draft_js_multidecorators_default.a(toConsumableArray_default()(classDecorators.map(function (item) {\n return item.decorator;\n })).concat([// combine decorators created with strategy\n new external_draft_js_[\"CompositeDecorator\"](strategyDecorators.map(function (item) {\n return item.decorator;\n })), // combine decorators for entities\n new external_draft_js_[\"CompositeDecorator\"](entityDecorators.map(function (item) {\n return {\n strategy: createStrategy(item.decorator.key),\n component: item.decorator.component\n };\n }))]));\n});\n// CONCATENATED MODULE: ./renderers/index.js\n\n\n\n\n\n\nvar getBlockRenderMap = block_blockRenderMap;\nvar getBlockRendererFn = block_blockRendererFn;\nvar getBlockStyleFn = block_blockStyleFn;\nvar getCustomStyleMap = inlineStyleMap;\nvar getCustomStyleFn = inlineStyleFn;\nvar getDecorators = decorators;\n// EXTERNAL MODULE: ./components/business/ControlBar/style.scss\nvar ControlBar_style = __webpack_require__(53);\n\n// EXTERNAL MODULE: ./components/business/LinkEditor/style.scss\nvar LinkEditor_style = __webpack_require__(54);\n\n// EXTERNAL MODULE: ./components/common/DropDown/style.scss\nvar DropDown_style = __webpack_require__(55);\n\n// CONCATENATED MODULE: ./helpers/responsive.js\n\n\nvar resizeEventHandlers = [];\nvar responsiveHelperInited = false;\nvar debouce = false;\n/* harmony default export */ var responsive = ({\n resolve: function resolve(eventHandler) {\n var id = external_braft_utils_[\"BaseUtils\"].UniqueIndex();\n resizeEventHandlers.push({\n id: id,\n eventHandler: eventHandler\n });\n return id;\n },\n unresolve: function unresolve(id) {\n resizeEventHandlers = resizeEventHandlers.filter(function (item) {\n return item.id !== id;\n });\n }\n});\n\nif (!responsiveHelperInited && (typeof window === \"undefined\" ? \"undefined\" : typeof_default()(window)) === 'object') {\n window.addEventListener('resize', function (event) {\n clearTimeout(debouce);\n debouce = setTimeout(function () {\n resizeEventHandlers.map(function (item) {\n typeof item.eventHandler === 'function' && item.eventHandler(event);\n });\n debouce = false;\n }, 100);\n });\n responsiveHelperInited = true;\n}\n// CONCATENATED MODULE: ./components/common/DropDown/index.jsx\n\n\n\n\n\n\n\n\n\n\n\nvar DropDown_DropDown =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(DropDown, _React$Component);\n\n function DropDown() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, DropDown);\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 = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(DropDown)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"responsiveResolveId\", null);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"dropDownHandlerElement\", null);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"dropDownContentElement\", null);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n active: false,\n offset: 0\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"fixDropDownPosition\", function () {\n var viewRect = _this.props.getContainerNode().getBoundingClientRect();\n\n var handlerRect = _this.dropDownHandlerElement.getBoundingClientRect();\n\n var contentRect = _this.dropDownContentElement.getBoundingClientRect();\n\n var offset = 0;\n var right = handlerRect.right - handlerRect.width / 2 + contentRect.width / 2;\n var left = handlerRect.left + handlerRect.width / 2 - contentRect.width / 2;\n right = viewRect.right - right;\n left = left - viewRect.left;\n\n if (right < 10) {\n offset = right - 10;\n } else if (left < 10) {\n offset = left * -1 + 10;\n }\n\n if (offset !== _this.state.offset) {\n _this.setState({\n offset: offset\n });\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"registerClickEvent\", function (event) {\n var autoHide = _this.props.autoHide;\n var active = _this.state.active;\n\n if (_this.dropDownContentElement.contains(event.target) || _this.dropDownHandlerElement.contains(event.target)) {\n return false;\n }\n\n autoHide && active && _this.hide();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"toggle\", function () {\n _this.setState({\n active: !_this.state.active\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"show\", function () {\n _this.setState({\n active: true\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"hide\", function () {\n _this.setState({\n active: false\n });\n });\n\n return _this;\n }\n\n createClass_default()(DropDown, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (document) {\n document.body.addEventListener('click', this.registerClickEvent);\n this.responsiveResolveId = responsive.resolve(this.fixDropDownPosition);\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(next) {\n if (!this.props.disabled && next.disabled) {\n this.hide();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevState) {\n if (!prevState.active && this.state.active) {\n this.fixDropDownPosition();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (document) {\n document.body.removeEventListener('click', this.registerClickEvent);\n responsive.unresolve(this.responsiveResolveId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$state = this.state,\n active = _this$state.active,\n offset = _this$state.offset;\n var _this$props = this.props,\n caption = _this$props.caption,\n htmlCaption = _this$props.htmlCaption,\n title = _this$props.title,\n disabled = _this$props.disabled,\n showArrow = _this$props.showArrow,\n arrowActive = _this$props.arrowActive,\n className = _this$props.className,\n children = _this$props.children,\n theme = _this$props.theme;\n disabled && (active = false);\n theme === 'light' && (className = ' light-theme ' + className);\n return external_react_default.a.createElement(\"div\", {\n className: 'bf-dropdown ' + (active ? 'active ' : '') + (disabled ? 'disabled ' : '') + className\n }, htmlCaption ? external_react_default.a.createElement(\"button\", {\n type: \"button\",\n className: \"dropdown-handler\",\n \"data-title\": title,\n onClick: this.toggle,\n dangerouslySetInnerHTML: htmlCaption ? {\n __html: htmlCaption\n } : null,\n ref: function ref(instance) {\n return _this2.dropDownHandlerElement = instance;\n }\n }) : external_react_default.a.createElement(\"button\", {\n type: \"button\",\n className: \"dropdown-handler\",\n \"data-title\": title,\n onClick: this.toggle,\n ref: function ref(instance) {\n return _this2.dropDownHandlerElement = instance;\n }\n }, external_react_default.a.createElement(\"span\", null, caption), showArrow !== false ? external_react_default.a.createElement(\"i\", {\n className: \"bfi-drop-down\"\n }) : null), external_react_default.a.createElement(\"div\", {\n className: \"dropdown-content\",\n style: {\n marginLeft: offset\n },\n ref: function ref(instance) {\n return _this2.dropDownContentElement = instance;\n }\n }, external_react_default.a.createElement(\"i\", {\n style: {\n marginLeft: offset * -1\n },\n className: 'dropdown-arrow' + (arrowActive ? ' active' : '')\n }), external_react_default.a.createElement(\"div\", {\n className: \"dropdown-content-inner\"\n }, children)));\n }\n }]);\n\n return DropDown;\n}(external_react_default.a.Component);\n\n\n// CONCATENATED MODULE: ./components/business/ControlGroup/index.jsx\n\n/* harmony default export */ var ControlGroup = (function (props) {\n if (external_react_default.a.Fragment) {\n return external_react_default.a.createElement(external_react_default.a.Fragment, null, props.children);\n } else {\n return external_react_default.a.createElement(\"div\", {\n className: \"control-item-group\"\n }, props.children);\n }\n});\n// CONCATENATED MODULE: ./components/business/LinkEditor/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar LinkEditor_LinkEditor =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(LinkEditor, _React$Component);\n\n function LinkEditor(props) {\n var _this;\n\n classCallCheck_default()(this, LinkEditor);\n\n _this = possibleConstructorReturn_default()(this, getPrototypeOf_default()(LinkEditor).call(this, props));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"dropDownInstance\", null);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handeKeyDown\", function (e) {\n if (e.keyCode === 13) {\n _this.handleConfirm();\n\n e.preventDefault();\n return false;\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleTnputText\", function (e) {\n _this.setState({\n text: e.currentTarget.value\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleInputLink\", function (e) {\n _this.setState({\n href: e.currentTarget.value\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setTarget\", function () {\n _this.setState({\n target: _this.state.target === '_blank' ? '' : '_blank'\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleCancel\", function () {\n _this.dropDownInstance.hide();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleUnlink\", function () {\n _this.dropDownInstance.hide();\n\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionLink(_this.props.editorState, false));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleConfirm\", function () {\n var _this$state = _this.state,\n text = _this$state.text,\n href = _this$state.href,\n target = _this$state.target,\n textSelected = _this$state.textSelected;\n\n var hookReturns = _this.props.hooks('toggle-link', {\n href: href,\n target: target\n })({\n href: href,\n target: target\n });\n\n _this.dropDownInstance.hide();\n\n _this.props.editor.requestFocus();\n\n if (hookReturns === false) {\n return false;\n }\n\n if (hookReturns) {\n typeof hookReturns.href === 'string' && (href = hookReturns.href);\n typeof hookReturns.target === 'string' && (target = hookReturns.target);\n }\n\n if (textSelected) {\n if (href) {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionLink(_this.props.editorState, href, target));\n } else {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionLink(_this.props.editorState, false));\n }\n } else {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].insertText(_this.props.editorState, text || href, null, {\n type: 'LINK',\n data: {\n href: href,\n target: target\n }\n }));\n }\n });\n\n _this.state = {\n text: '',\n href: '',\n target: props.defaultLinkTarget || '',\n textSelected: false\n };\n return _this;\n }\n\n createClass_default()(LinkEditor, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _ContentUtils$getSele = external_braft_utils_[\"ContentUtils\"].getSelectionEntityData(nextProps.editorState, 'LINK'),\n href = _ContentUtils$getSele.href,\n target = _ContentUtils$getSele.target;\n\n var textSelected = !external_braft_utils_[\"ContentUtils\"].isSelectionCollapsed(this.props.editorState) && external_braft_utils_[\"ContentUtils\"].getSelectionBlockType(this.props.editorState) !== 'atomic';\n var selectedText = '';\n\n if (textSelected) {\n selectedText = external_braft_utils_[\"ContentUtils\"].getSelectionText(this.props.editorState);\n }\n\n this.setState({\n textSelected: textSelected,\n text: selectedText,\n href: href || '',\n target: typeof target === 'undefined' ? nextProps.defaultLinkTarget || '' : target || ''\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var allowInsertLinkText = this.props.allowInsertLinkText;\n var _this$state2 = this.state,\n text = _this$state2.text,\n href = _this$state2.href,\n target = _this$state2.target,\n textSelected = _this$state2.textSelected;\n var caption = external_react_default.a.createElement(\"i\", {\n className: \"bfi-link\"\n });\n return external_react_default.a.createElement(ControlGroup, null, external_react_default.a.createElement(DropDown_DropDown, {\n key: 0,\n caption: caption,\n title: this.props.language.controls.link,\n autoHide: true,\n getContainerNode: this.props.getContainerNode,\n showArrow: false,\n ref: function ref(instance) {\n return _this2.dropDownInstance = instance;\n },\n className: 'control-item dropdown link-editor-dropdown'\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-link-editor\"\n }, allowInsertLinkText ? external_react_default.a.createElement(\"div\", {\n className: \"input-group\"\n }, external_react_default.a.createElement(\"input\", {\n type: \"text\",\n value: text,\n spellCheck: false,\n disabled: textSelected,\n placeholder: this.props.language.linkEditor.textInputPlaceHolder,\n onKeyDown: this.handeKeyDown,\n onChange: this.handleTnputText\n })) : null, external_react_default.a.createElement(\"div\", {\n className: \"input-group\"\n }, external_react_default.a.createElement(\"input\", {\n type: \"text\",\n value: href,\n spellCheck: false,\n placeholder: this.props.language.linkEditor.linkInputPlaceHolder,\n onKeyDown: this.handeKeyDown,\n onChange: this.handleInputLink\n })), external_react_default.a.createElement(\"div\", {\n className: \"switch-group\"\n }, external_react_default.a.createElement(Switch, {\n active: target === '_blank',\n onClick: this.setTarget\n }), external_react_default.a.createElement(\"label\", null, this.props.language.linkEditor.openInNewWindow)), external_react_default.a.createElement(\"div\", {\n className: \"buttons\"\n }, external_react_default.a.createElement(\"a\", {\n onClick: this.handleUnlink,\n className: \"primary button-remove-link pull-left\"\n }, external_react_default.a.createElement(\"i\", {\n className: \"bfi-close\"\n }), external_react_default.a.createElement(\"span\", null, this.props.language.linkEditor.removeLink)), external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleConfirm,\n className: \"primary pull-right\"\n }, this.props.language.base.confirm), external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleCancel,\n className: \"default pull-right\"\n }, this.props.language.base.cancel)))), external_react_default.a.createElement(\"button\", {\n key: 1,\n type: \"button\",\n \"data-title\": this.props.language.controls.unlink,\n className: \"control-item button\",\n onClick: this.handleUnlink,\n disabled: !textSelected || !href\n }, external_react_default.a.createElement(\"i\", {\n className: \"bfi-link-off\"\n })));\n }\n }]);\n\n return LinkEditor;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./components/business/Headings/style.scss\nvar Headings_style = __webpack_require__(56);\n\n// CONCATENATED MODULE: ./configs/maps.js\n\nvar maps_getHeadings = function getHeadings(lang) {\n return [{\n key: 'header-one',\n title: lang.controls.header + ' 1',\n text: external_react_default.a.createElement(\"h1\", null, lang.controls.header, \" 1\"),\n type: 'block-type',\n command: 'header-one'\n }, {\n key: 'header-two',\n title: lang.controls.header + ' 2',\n text: external_react_default.a.createElement(\"h2\", null, lang.controls.header, \" 2\"),\n type: 'block-type',\n command: 'header-two'\n }, {\n key: 'header-three',\n title: lang.controls.header + ' 3',\n text: external_react_default.a.createElement(\"h3\", null, lang.controls.header, \" 3\"),\n type: 'block-type',\n command: 'header-three'\n }, {\n key: 'header-four',\n title: lang.controls.header + ' 4',\n text: external_react_default.a.createElement(\"h4\", null, lang.controls.header, \" 4\"),\n type: 'block-type',\n command: 'header-four'\n }, {\n key: 'header-five',\n title: lang.controls.header + ' 5',\n text: external_react_default.a.createElement(\"h5\", null, lang.controls.header, \" 5\"),\n type: 'block-type',\n command: 'header-five'\n }, {\n key: 'header-six',\n title: lang.controls.header + ' 6',\n text: external_react_default.a.createElement(\"h6\", null, lang.controls.header, \" 6\"),\n type: 'block-type',\n command: 'header-six'\n }, {\n key: 'unstyled',\n title: lang.controls.normal,\n text: lang.controls.normal,\n type: 'block-type',\n command: 'unstyled'\n }];\n};\nvar blocks = {\n 'header-one': 'h1',\n 'header-two': 'h2',\n 'header-three': 'h3',\n 'header-four': 'h4',\n 'header-fiv': 'h5',\n 'header-six': 'h6',\n 'unstyled': 'p',\n 'blockquote': 'blockquote'\n};\n// CONCATENATED MODULE: ./components/business/Headings/index.jsx\n\n\n\n\n/* harmony default export */ var Headings = (function (props) {\n var dropDownInstance = null;\n var headings = maps_getHeadings(props.language).filter(function (item) {\n return props.headings.indexOf(item.key) !== -1;\n });\n var currentHeadingIndex = headings.findIndex(function (item) {\n return item.command === props.current;\n });\n var caption = headings[currentHeadingIndex] ? headings[currentHeadingIndex].title : props.language.controls.normal;\n return external_react_default.a.createElement(DropDown_DropDown, {\n caption: caption,\n autoHide: true,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.headings,\n arrowActive: currentHeadingIndex === 0,\n ref: function ref(instance) {\n return dropDownInstance = instance;\n },\n className: 'control-item dropdown headings-dropdown'\n }, external_react_default.a.createElement(\"ul\", {\n className: \"menu\"\n }, headings.map(function (item, index) {\n var isActive = props.current === item.command;\n return external_react_default.a.createElement(\"li\", {\n key: index,\n className: 'menu-item' + (isActive ? ' active' : ''),\n onClick: function onClick() {\n props.onChange(item.command, item.type), dropDownInstance.hide();\n }\n }, item.text);\n })));\n});\n// EXTERNAL MODULE: ./components/business/TextColor/style.scss\nvar TextColor_style = __webpack_require__(57);\n\n// EXTERNAL MODULE: ./components/common/ColorPicker/style.scss\nvar ColorPicker_style = __webpack_require__(58);\n\n// CONCATENATED MODULE: ./components/common/ColorPicker/index.jsx\n\n\n/* harmony default export */ var common_ColorPicker = (function (props) {\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-colors-wrap\"\n }, external_react_default.a.createElement(\"ul\", {\n className: \"bf-colors\"\n }, props.presetColors.map(function (item, index) {\n var className = props.color && item.toLowerCase() === props.color.toLowerCase() ? 'color-item active' : 'color-item';\n return external_react_default.a.createElement(\"li\", {\n key: index,\n title: item,\n className: className,\n style: {\n color: item\n },\n \"data-color\": item.replace('#', ''),\n onClick: function onClick(e) {\n props.onChange(e.currentTarget.dataset.color, true);\n }\n });\n })));\n});\n// CONCATENATED MODULE: ./components/business/TextColor/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TextColor_TextColor =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(TextColor, _React$Component);\n\n function TextColor() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, TextColor);\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 = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(TextColor)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n colorType: 'color'\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"switchColorType\", function (_ref) {\n var currentTarget = _ref.currentTarget;\n\n _this.setState({\n colorType: currentTarget.dataset.type\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"toggleColor\", function (color, closePicker) {\n if (color) {\n var hookReturns = _this.props.hooks(\"toggle-text-\".concat(_this.state.colorType), color)(color);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n color = hookReturns;\n }\n\n if (_this.state.colorType === 'color') {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionColor(_this.props.editorState, color));\n } else {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionBackgroundColor(_this.props.editorState, color));\n }\n }\n\n if (closePicker) {\n _this.dropDownInstance.hide();\n\n _this.props.editor.requestFocus();\n }\n });\n\n return _this;\n }\n\n createClass_default()(TextColor, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var captionStyle = {};\n var currentColor = null;\n var colorType = this.state.colorType;\n var selectionStyles = this.props.editorState.getCurrentInlineStyle().toJS();\n selectionStyles.forEach(function (style) {\n if (style.indexOf('COLOR-') === 0) {\n captionStyle.color = '#' + style.split('-')[1];\n colorType === 'color' && (currentColor = captionStyle.color);\n }\n\n if (style.indexOf('BGCOLOR-') === 0) {\n captionStyle.backgroundColor = '#' + style.split('-')[1];\n colorType === 'background-color' && (currentColor = captionStyle.backgroundColor);\n }\n });\n var caption = external_react_default.a.createElement(\"i\", {\n style: captionStyle,\n className: \"bfi-text-color\"\n }, external_react_default.a.createElement(\"span\", {\n className: \"path1\"\n }), external_react_default.a.createElement(\"span\", {\n className: \"path2\"\n }));\n var ColorPicker = this.props.colorPicker || common_ColorPicker;\n return external_react_default.a.createElement(DropDown_DropDown, {\n caption: caption,\n title: this.props.language.controls.color,\n showArrow: false,\n autoHide: this.props.autoHide,\n theme: this.props.theme,\n getContainerNode: this.props.getContainerNode,\n ref: function ref(instance) {\n return _this2.dropDownInstance = instance;\n },\n className: 'control-item dropdown text-color-dropdown'\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-text-color-picker-wrap\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-color-switch-buttons\",\n style: this.props.enableBackgroundColor ? {} : {\n display: 'none'\n }\n }, external_react_default.a.createElement(\"button\", {\n type: \"button\",\n \"data-type\": \"color\",\n className: colorType === 'color' ? 'active' : '',\n onClick: this.switchColorType\n }, this.props.language.controls.textColor), external_react_default.a.createElement(\"button\", {\n type: \"button\",\n \"data-type\": \"background-color\",\n className: colorType === 'background-color' ? 'active' : '',\n onClick: this.switchColorType\n }, this.props.language.controls.backgroundColor)), external_react_default.a.createElement(ColorPicker, {\n width: 200,\n color: currentColor,\n disableAlpha: true,\n presetColors: this.props.colors,\n onChange: this.toggleColor\n })));\n }\n }]);\n\n return TextColor;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./components/business/FontSize/style.scss\nvar FontSize_style = __webpack_require__(59);\n\n// CONCATENATED MODULE: ./components/business/FontSize/index.jsx\n\n\n\n\n\nvar FontSize_toggleFontSize = function toggleFontSize(event, props) {\n var fontSize = event.currentTarget.dataset.size;\n var hookReturns = props.hooks('toggle-font-size', fontSize)(fontSize);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (!isNaN(fontSize)) {\n fontSize = hookReturns;\n }\n\n props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionFontSize(props.editorState, fontSize));\n props.editor.requestFocus();\n};\n\n/* harmony default export */ var FontSize = (function (props) {\n var caption = null;\n var currentFontSize = null;\n var dropDownInstance = null;\n props.fontSizes.find(function (item) {\n if (external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(props.editorState, 'FONTSIZE-' + item)) {\n caption = item;\n currentFontSize = item;\n return true;\n }\n\n return false;\n });\n return external_react_default.a.createElement(DropDown_DropDown, {\n autoHide: true,\n caption: caption || props.defaultCaption,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.fontSize,\n ref: function ref(instance) {\n return dropDownInstance = instance;\n },\n className: 'control-item dropdown bf-font-size-dropdown'\n }, external_react_default.a.createElement(\"ul\", {\n className: \"bf-font-sizes\"\n }, props.fontSizes.map(function (item, index) {\n return external_react_default.a.createElement(\"li\", {\n key: index,\n className: item === currentFontSize ? 'active' : null,\n \"data-size\": item,\n onClick: function onClick(event) {\n FontSize_toggleFontSize(event, props), dropDownInstance.hide();\n }\n }, item);\n })));\n});\n// EXTERNAL MODULE: ./components/business/LineHeight/style.scss\nvar LineHeight_style = __webpack_require__(60);\n\n// CONCATENATED MODULE: ./components/business/LineHeight/index.jsx\n\n\n\n\n\nvar LineHeight_toggleLineHeight = function toggleLineHeight(event, props) {\n var lineHeight = event.currentTarget.dataset.size;\n var hookReturns = props.hooks('toggle-line-height', lineHeight)(lineHeight);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (!isNaN(hookReturns)) {\n lineHeight = hookReturns;\n }\n\n props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionLineHeight(props.editorState, lineHeight));\n props.editor.requestFocus();\n};\n\n/* harmony default export */ var LineHeight = (function (props) {\n var caption = null;\n var currentLineHeight = null;\n var dropDownInstance = null;\n props.lineHeights.find(function (item) {\n if (external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(props.editorState, 'LINEHEIGHT-' + item)) {\n caption = item;\n currentLineHeight = item;\n return true;\n }\n\n return false;\n });\n return external_react_default.a.createElement(DropDown_DropDown, {\n autoHide: true,\n caption: caption || props.defaultCaption,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.lineHeight,\n ref: function ref(instance) {\n return dropDownInstance = instance;\n },\n className: 'control-item dropdown bf-line-height-dropdown'\n }, external_react_default.a.createElement(\"ul\", {\n className: \"bf-line-heights\"\n }, props.lineHeights.map(function (item, index) {\n return external_react_default.a.createElement(\"li\", {\n key: index,\n className: item === currentLineHeight ? 'active' : null,\n \"data-size\": item,\n onClick: function onClick(event) {\n LineHeight_toggleLineHeight(event, props), dropDownInstance.hide();\n }\n }, item);\n })));\n});\n// EXTERNAL MODULE: ./components/business/FontFamily/style.scss\nvar FontFamily_style = __webpack_require__(61);\n\n// CONCATENATED MODULE: ./components/business/FontFamily/index.jsx\n\n\n\n\n\nvar FontFamily_toggleFontFamily = function toggleFontFamily(event, props) {\n var fontFamilyName = event.currentTarget.dataset.name;\n var hookReturns = props.hooks('toggle-font-family', fontFamilyName)(fontFamilyName, props.fontFamilies);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n fontFamilyName = hookReturns;\n }\n\n props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionFontFamily(props.editorState, fontFamilyName));\n props.editor.requestFocus();\n};\n\n/* harmony default export */ var FontFamily = (function (props) {\n var caption = null;\n var currentIndex = null;\n var dropDownInstance = null;\n props.fontFamilies.find(function (item, index) {\n if (external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(props.editorState, 'FONTFAMILY-' + item.name)) {\n caption = item.name;\n currentIndex = index;\n return true;\n }\n\n return false;\n });\n return external_react_default.a.createElement(DropDown_DropDown, {\n caption: caption || props.defaultCaption,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.fontFamily,\n autoHide: true,\n arrowActive: currentIndex === 0,\n ref: function ref(instance) {\n return dropDownInstance = instance;\n },\n className: 'control-item dropdown font-family-dropdown'\n }, external_react_default.a.createElement(\"ul\", {\n className: \"menu\"\n }, props.fontFamilies.map(function (item, index) {\n return external_react_default.a.createElement(\"li\", {\n key: index,\n className: 'menu-item ' + (index === currentIndex ? 'active' : ''),\n \"data-name\": item.name,\n onClick: function onClick(event) {\n FontFamily_toggleFontFamily(event, props), dropDownInstance.hide();\n }\n }, external_react_default.a.createElement(\"span\", {\n style: {\n fontFamily: item.family\n }\n }, item.name));\n })));\n});\n// CONCATENATED MODULE: ./components/business/TextAlign/index.jsx\n\n\n\n\n\n\n\n\n\n\n\nvar TextAlign_TextAlign =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(TextAlign, _React$Component);\n\n function TextAlign() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, TextAlign);\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 = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(TextAlign)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n currentAlignment: undefined\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setAlignment\", function (event) {\n var alignment = event.currentTarget.dataset.alignment;\n\n var hookReturns = _this.props.hooks('toggle-text-alignment', alignment)(alignment);\n\n if (_this.props.textAligns.indexOf(hookReturns) > -1) {\n alignment = hookReturns;\n }\n\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionAlignment(_this.props.editorState, alignment));\n\n _this.props.editor.requestFocus();\n });\n\n return _this;\n }\n\n createClass_default()(TextAlign, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(next) {\n this.setState({\n currentAlignment: external_braft_utils_[\"ContentUtils\"].getSelectionBlockData(next.editorState, 'textAlign')\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var textAlignmentTitles = [this.props.language.controls.alignLeft, this.props.language.controls.alignCenter, this.props.language.controls.alignRight, this.props.language.controls.alignJustify];\n return external_react_default.a.createElement(ControlGroup, null, this.props.textAligns.map(function (item, index) {\n return external_react_default.a.createElement(\"button\", {\n type: \"button\",\n key: index,\n \"data-title\": textAlignmentTitles[index],\n \"data-alignment\": item,\n className: 'control-item button ' + (item === _this2.state.currentAlignment ? 'active' : null),\n onClick: _this2.setAlignment\n }, external_react_default.a.createElement(\"i\", {\n className: 'bfi-align-' + item\n }));\n }));\n }\n }]);\n\n return TextAlign;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./components/business/EmojiPicker/style.scss\nvar EmojiPicker_style = __webpack_require__(62);\n\n// CONCATENATED MODULE: ./components/business/EmojiPicker/index.jsx\n\n\n\n\n\nvar EmojiPicker_insertEmoji = function insertEmoji(event, props) {\n var emoji = event.currentTarget.dataset.emoji;\n var hookReturns = props.hooks('insert-emoji', emoji)(emoji);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n emoji = hookReturns;\n }\n\n props.editor.setValue(external_braft_utils_[\"ContentUtils\"].insertText(props.editorState, emoji));\n props.editor.requestFocus();\n};\n\n/* harmony default export */ var EmojiPicker = (function (props) {\n return external_react_default.a.createElement(DropDown_DropDown, {\n caption: props.defaultCaption,\n autoHide: true,\n showArrow: false,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.emoji,\n className: 'control-item dropdown bf-emoji-dropdown'\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-emojis-wrap\"\n }, external_react_default.a.createElement(\"ul\", {\n className: \"bf-emojis\"\n }, props.emojis.map(function (item, index) {\n return external_react_default.a.createElement(\"li\", {\n key: index,\n \"data-emoji\": item,\n onClick: function onClick(event) {\n return EmojiPicker_insertEmoji(event, props);\n }\n }, item);\n }))));\n});\n// EXTERNAL MODULE: ./components/business/LetterSpacing/style.scss\nvar LetterSpacing_style = __webpack_require__(63);\n\n// CONCATENATED MODULE: ./components/business/LetterSpacing/index.jsx\n\n\n\n\n\nvar LetterSpacing_toggleLetterSpacing = function toggleLetterSpacing(event, props) {\n var letterSpacing = event.currentTarget.dataset.size;\n var hookReturns = props.hooks('toggle-letter-spacing', letterSpacing)(letterSpacing);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (!isNaN(hookReturns)) {\n letterSpacing = hookReturns;\n }\n\n props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionLetterSpacing(props.editorState, letterSpacing));\n props.editor.requestFocus();\n};\n\n/* harmony default export */ var LetterSpacing = (function (props) {\n var caption = null;\n var currentLetterSpacing = null;\n var dropDownInstance = null;\n props.letterSpacings.find(function (item) {\n if (external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(props.editorState, 'LETTERSPACING-' + item)) {\n caption = item;\n currentLetterSpacing = item;\n return true;\n }\n\n return false;\n });\n return external_react_default.a.createElement(DropDown_DropDown, {\n autoHide: true,\n caption: caption || props.defaultCaption,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.letterSpacing,\n ref: function ref(instance) {\n return dropDownInstance = instance;\n },\n className: 'control-item dropdown bf-letter-spacing-dropdown'\n }, external_react_default.a.createElement(\"ul\", {\n className: \"bf-letter-spacings\"\n }, props.letterSpacings.map(function (item, index) {\n return external_react_default.a.createElement(\"li\", {\n key: index,\n className: item === currentLetterSpacing ? 'active' : null,\n \"data-size\": item,\n onClick: function onClick(event) {\n LetterSpacing_toggleLetterSpacing(event, props), dropDownInstance.hide();\n }\n }, item);\n })));\n});\n// CONCATENATED MODULE: ./components/business/TextIndent/index.jsx\n\n\n\n\n\n\n\n\n\n\n\nvar TextIndent_TextAlign =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(TextAlign, _React$Component);\n\n function TextAlign() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, TextAlign);\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 = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(TextAlign)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n currentIndent: 0\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"increaseIndent\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].increaseSelectionIndent(_this.props.editorState));\n\n _this.props.editor.requestFocus();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"decreaseIndent\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].decreaseSelectionIndent(_this.props.editorState));\n\n _this.props.editor.requestFocus();\n });\n\n return _this;\n }\n\n createClass_default()(TextAlign, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n this.setState({\n currentIndent: external_braft_utils_[\"ContentUtils\"].getSelectionBlockData(nextProps.editorState, 'textIndent') || 0\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var currentIndent = this.state.currentIndent;\n var language = this.props.language;\n return external_react_default.a.createElement(ControlGroup, null, external_react_default.a.createElement(\"button\", {\n key: 0,\n type: \"button\",\n \"data-title\": language.controls.increaseIndent,\n disabled: currentIndent >= 6,\n className: \"control-item button button-indent-increase\".concat(currentIndent > 0 && currentIndent < 6 ? ' active' : ''),\n onClick: this.increaseIndent\n }, external_react_default.a.createElement(\"i\", {\n className: 'bfi-indent-increase'\n })), external_react_default.a.createElement(\"button\", {\n key: 1,\n type: \"button\",\n \"data-title\": language.controls.decreaseIndent,\n disabled: currentIndent <= 0,\n className: \"control-item button button-indent-decrease\",\n onClick: this.decreaseIndent\n }, external_react_default.a.createElement(\"i\", {\n className: 'bfi-indent-decrease'\n })));\n }\n }]);\n\n return TextAlign;\n}(external_react_default.a.Component);\n\n\n// CONCATENATED MODULE: ./components/business/ControlBar/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar commandHookMap = {\n 'inline-style': 'toggle-inline-style',\n 'block-type': 'change-block-type',\n 'editor-method': 'exec-editor-command'\n};\nvar exclusiveInlineStyles = {\n 'superscript': 'subscript',\n 'subscript': 'superscript'\n};\n\nvar mergeControls = function mergeControls(commonProps, builtControls, extensionControls, extendControls) {\n extensionControls = extensionControls.map(function (item) {\n return typeof item === 'function' ? item(commonProps) : item;\n });\n extendControls = extendControls.map(function (item) {\n return typeof item === 'function' ? item(commonProps) : item;\n });\n\n if (extensionControls.length === 0 && extendControls.length === 0) {\n return builtControls;\n }\n\n return builtControls.map(function (item) {\n return extendControls.find(function (subItem) {\n return subItem.replace === (item.key || item);\n }) || extensionControls.find(function (subItem) {\n return subItem.replace === (item.key || item);\n }) || item;\n }).concat(extensionControls.length ? 'separator' : '').concat(extensionControls.filter(function (item) {\n return !item.replace;\n })).concat(extendControls.filter(function (item) {\n return typeof item === 'string' || !item.replace;\n }));\n};\n\nvar ControlBar_ControlBar =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(ControlBar, _React$Component);\n\n function ControlBar() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, ControlBar);\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 = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(ControlBar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"allControls\", []);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"mediaLibiraryModal\", null);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"extendedModals\", {});\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"openBraftFinder\", function () {\n if (!_this.props.braftFinder || !_this.props.braftFinder.ReactComponent) {\n return false;\n }\n\n if (_this.props.hooks('open-braft-finder')() === false) {\n return false;\n }\n\n var mediaProps = _this.props.media;\n var MediaLibrary = _this.props.braftFinder.ReactComponent;\n _this.mediaLibiraryModal = Modal_showModal({\n title: _this.props.language.controls.mediaLibirary,\n language: _this.props.language,\n width: 640,\n showFooter: false,\n component: external_react_default.a.createElement(MediaLibrary, {\n accepts: mediaProps.accepts,\n onCancel: _this.closeBraftFinder,\n onInsert: _this.insertMedias,\n onChange: mediaProps.onChange,\n externals: mediaProps.externals,\n onBeforeSelect: _this.bindBraftFinderHook('select-medias'),\n onBeforeDeselect: _this.bindBraftFinderHook('deselect-medias'),\n onBeforeRemove: _this.bindBraftFinderHook('remove-medias'),\n onBeforeInsert: _this.bindBraftFinderHook('insert-medias'),\n onFileSelect: _this.bindBraftFinderHook('select-files')\n })\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"bindBraftFinderHook\", function (hookName) {\n return function () {\n return _this.props.hooks(hookName, arguments.length <= 0 ? undefined : arguments[0]).apply(void 0, arguments);\n };\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"insertMedias\", function (medias) {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].insertMedias(_this.props.editorState, medias));\n\n _this.props.editor.requestFocus();\n\n _this.props.media.onInsert && _this.props.media.onInsert(medias);\n\n _this.closeBraftFinder();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"closeBraftFinder\", function () {\n _this.props.media.onCancel && _this.props.media.onCancel();\n _this.mediaLibiraryModal && _this.mediaLibiraryModal.close();\n });\n\n return _this;\n }\n\n createClass_default()(ControlBar, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this2 = this;\n\n var language = this.props.language;\n this.allControls.forEach(function (item) {\n if (item.type === 'modal') {\n if (item.modal && item.modal.id && _this2.extendedModals[item.modal.id]) {\n _this2.extendedModals[item.modal.id].update(objectSpread_default()({}, item.modal, {\n language: language\n }));\n }\n }\n });\n }\n }, {\n key: \"getControlItemClassName\",\n value: function getControlItemClassName(data) {\n var className = 'control-item button';\n var type = data.type,\n command = data.command;\n\n if (type === 'inline-style' && external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(this.props.editorState, command)) {\n className += ' active';\n } else if (type === 'block-type' && external_braft_utils_[\"ContentUtils\"].getSelectionBlockType(this.props.editorState) === command) {\n className += ' active';\n } else if (type === 'entity' && external_braft_utils_[\"ContentUtils\"].getSelectionEntityType(this.props.editorState) === command) {\n className += ' active';\n }\n\n return className;\n }\n }, {\n key: \"applyControl\",\n value: function applyControl(command, type) {\n var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var hookReturns = this.props.hooks(commandHookMap[type] || type, command)(command);\n var editorState = this.props.editorState;\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n command = hookReturns;\n }\n\n if (type === 'inline-style') {\n var exclusiveInlineStyle = exclusiveInlineStyles[command];\n\n if (exclusiveInlineStyle && external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(editorState, exclusiveInlineStyle)) {\n editorState = external_braft_utils_[\"ContentUtils\"].toggleSelectionInlineStyle(editorState, exclusiveInlineStyle);\n }\n\n this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionInlineStyle(editorState, command));\n } else if (type === 'block-type') {\n this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionBlockType(editorState, command));\n } else if (type === 'entity') {\n this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionEntity(editorState, {\n type: command,\n mutability: data.mutability || 'MUTABLE',\n data: data.data || {}\n }));\n } else if (type === 'editor-method') {\n this.props.editor[command] && this.props.editor[command]();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n editor = _this$props.editor,\n editorId = _this$props.editorId,\n editorState = _this$props.editorState,\n className = _this$props.className,\n style = _this$props.style,\n controls = _this$props.controls,\n media = _this$props.media,\n extendControls = _this$props.extendControls,\n language = _this$props.language,\n hooks = _this$props.hooks,\n colors = _this$props.colors,\n colorPicker = _this$props.colorPicker,\n colorPickerTheme = _this$props.colorPickerTheme,\n colorPickerAutoHide = _this$props.colorPickerAutoHide,\n headings = _this$props.headings,\n fontSizes = _this$props.fontSizes,\n fontFamilies = _this$props.fontFamilies,\n emojis = _this$props.emojis,\n getContainerNode = _this$props.getContainerNode,\n lineHeights = _this$props.lineHeights,\n letterSpacings = _this$props.letterSpacings,\n textAligns = _this$props.textAligns,\n textBackgroundColor = _this$props.textBackgroundColor,\n allowInsertLinkText = _this$props.allowInsertLinkText,\n defaultLinkTarget = _this$props.defaultLinkTarget;\n var currentBlockType = external_braft_utils_[\"ContentUtils\"].getSelectionBlockType(editorState);\n var commonProps = {\n editor: editor,\n editorId: editorId,\n editorState: editorState,\n language: language,\n getContainerNode: getContainerNode,\n hooks: hooks\n };\n var renderedControls = [];\n var editorControls = configs_controls(language, editor);\n var extensionControls = getExtensionControls(editorId);\n var allControls = mergeControls(commonProps, controls, extensionControls, extendControls);\n this.allControls = allControls;\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-controlbar \".concat(className || ''),\n style: style,\n onMouseDown: this.preventDefault\n }, allControls.map(function (item, index) {\n var itemKey = typeof item === 'string' ? item : item.key;\n\n if (typeof itemKey !== 'string') {\n return null;\n }\n\n if (renderedControls.indexOf(itemKey) > -1) {\n return null;\n }\n\n if (itemKey.toLowerCase() === 'separator') {\n return external_react_default.a.createElement(\"span\", {\n key: index,\n className: \"separator-line\"\n });\n }\n\n var controlItem = editorControls.find(function (subItem) {\n return subItem.key.toLowerCase() === itemKey.toLowerCase();\n });\n\n if (typeof item !== 'string') {\n controlItem = objectSpread_default()({}, controlItem, item);\n }\n\n if (!controlItem) {\n return null;\n }\n\n renderedControls.push(itemKey);\n\n if (controlItem.type === 'headings') {\n return external_react_default.a.createElement(Headings, extends_default()({\n key: index,\n headings: headings,\n current: currentBlockType,\n onChange: function onChange(command) {\n return _this3.applyControl(command, 'block-type');\n }\n }, commonProps));\n } else if (controlItem.type === 'text-color') {\n return external_react_default.a.createElement(TextColor_TextColor, extends_default()({\n key: index,\n colors: colors,\n colorPicker: colorPicker,\n theme: colorPickerTheme,\n autoHide: colorPickerAutoHide,\n enableBackgroundColor: textBackgroundColor\n }, commonProps));\n } else if (controlItem.type === 'font-size') {\n return external_react_default.a.createElement(FontSize, extends_default()({\n key: index,\n fontSizes: fontSizes,\n defaultCaption: controlItem.title\n }, commonProps));\n } else if (controlItem.type === 'line-height') {\n return external_react_default.a.createElement(LineHeight, extends_default()({\n key: index,\n lineHeights: lineHeights,\n defaultCaption: controlItem.title\n }, commonProps));\n } else if (controlItem.type === 'letter-spacing') {\n return external_react_default.a.createElement(LetterSpacing, extends_default()({\n key: index,\n letterSpacings: letterSpacings,\n defaultCaption: controlItem.title\n }, commonProps));\n } else if (controlItem.type === 'text-indent') {\n return external_react_default.a.createElement(TextIndent_TextAlign, extends_default()({\n key: index,\n defaultCaption: controlItem.title\n }, commonProps));\n } else if (controlItem.type === 'font-family') {\n return external_react_default.a.createElement(FontFamily, extends_default()({\n key: index,\n fontFamilies: fontFamilies,\n defaultCaption: controlItem.title\n }, commonProps));\n } else if (controlItem.type === 'emoji') {\n return external_react_default.a.createElement(EmojiPicker, extends_default()({\n key: index,\n emojis: emojis,\n defaultCaption: controlItem.text\n }, commonProps));\n } else if (controlItem.type === 'link') {\n return external_react_default.a.createElement(LinkEditor_LinkEditor, extends_default()({\n key: index,\n defaultLinkTarget: defaultLinkTarget,\n allowInsertLinkText: allowInsertLinkText\n }, commonProps));\n } else if (controlItem.type === 'text-align') {\n return external_react_default.a.createElement(TextAlign_TextAlign, extends_default()({\n key: index,\n textAligns: textAligns\n }, commonProps));\n } else if (controlItem.type === 'media') {\n if (!media.image && !media.video && !media.audio) {\n return null;\n }\n\n return external_react_default.a.createElement(\"button\", {\n type: \"button\",\n key: index,\n \"data-title\": controlItem.title,\n disabled: controlItem.disabled,\n className: \"control-item media button\",\n onClick: _this3.openBraftFinder\n }, controlItem.text);\n } else if (controlItem.type === 'dropdown') {\n return external_react_default.a.createElement(DropDown_DropDown, extends_default()({\n key: index,\n className: \"control-item extend-control-item dropdown \".concat(controlItem.className || ''),\n caption: controlItem.text,\n htmlCaption: controlItem.html,\n showArrow: controlItem.showArrow,\n title: controlItem.title,\n arrowActive: controlItem.arrowActive,\n theme: controlItem.theme,\n autoHide: controlItem.autoHide,\n disabled: controlItem.disabled,\n ref: controlItem.ref\n }, commonProps), controlItem.component);\n } else if (controlItem.type === 'modal') {\n return external_react_default.a.createElement(\"button\", {\n type: \"button\",\n key: index,\n \"data-title\": controlItem.title,\n disabled: controlItem.disabled,\n className: \"control-item extend-control-item button \".concat(controlItem.className || ''),\n dangerouslySetInnerHTML: controlItem.html ? {\n __html: controlItem.html\n } : null,\n onClick: function onClick(event) {\n if (controlItem.modal && controlItem.modal.id) {\n if (_this3.extendedModals[controlItem.modal.id]) {\n _this3.extendedModals[controlItem.modal.id].active = true;\n\n _this3.extendedModals[controlItem.modal.id].update(objectSpread_default()({}, controlItem.modal, {\n language: language\n }));\n } else {\n _this3.extendedModals[controlItem.modal.id] = Modal_showModal(objectSpread_default()({}, controlItem.modal, {\n language: language\n }));\n controlItem.modal.onCreate && controlItem.modal.onCreate(_this3.extendedModals[controlItem.modal.id]);\n }\n }\n\n controlItem.onClick && controlItem.onClick(event);\n }\n }, !controlItem.html ? controlItem.text : null);\n } else if (controlItem.type === 'component') {\n return external_react_default.a.createElement(\"div\", {\n key: index,\n className: \"component-wrapper \".concat(controlItem.className || '')\n }, controlItem.component);\n } else if (controlItem.type === 'button') {\n return external_react_default.a.createElement(\"button\", {\n type: \"button\",\n key: index,\n \"data-title\": controlItem.title,\n disabled: controlItem.disabled,\n className: \"control-item button \".concat(controlItem.className || ''),\n dangerouslySetInnerHTML: controlItem.html ? {\n __html: controlItem.html\n } : null,\n onClick: function onClick(event) {\n return controlItem.onClick && controlItem.onClick(event);\n }\n }, !controlItem.html ? controlItem.text : null);\n } else if (controlItem) {\n var disabled = false;\n\n if (controlItem.command === 'undo') {\n disabled = editorState.getUndoStack().size === 0;\n } else if (controlItem.command === 'redo') {\n disabled = editorState.getRedoStack().size === 0;\n }\n\n return external_react_default.a.createElement(\"button\", {\n type: \"button\",\n key: index,\n disabled: disabled,\n \"data-title\": controlItem.title,\n className: _this3.getControlItemClassName({\n type: controlItem.type,\n command: controlItem.command\n }),\n onClick: function onClick() {\n return _this3.applyControl(controlItem.command, controlItem.type, controlItem.data);\n }\n }, controlItem.text);\n }\n }));\n }\n }, {\n key: \"preventDefault\",\n value: function preventDefault(event) {\n var tagName = event.target.tagName.toLowerCase();\n\n if (tagName === 'input' || tagName === 'label') {// ...\n } else {\n event.preventDefault();\n }\n }\n }]);\n\n return ControlBar;\n}(external_react_default.a.Component);\n\n\n// CONCATENATED MODULE: ./editor/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar buildHooks = function buildHooks(hooks) {\n return function (hookName) {\n var defaultReturns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return hooks[hookName] || function () {\n return defaultReturns;\n };\n };\n};\n\nvar filterColors = function filterColors(colors, colors2) {\n return colors.filter(function (item) {\n return !colors2.find(function (color) {\n return color.toLowerCase() === item.toLowerCase();\n });\n }).filter(function (item, index, array) {\n return array.indexOf(item) === index;\n });\n};\n\nvar editor_isControlEnabled = function isControlEnabled(props, controlName) {\n return toConsumableArray_default()(props.controls).concat(toConsumableArray_default()(props.extendControls)).find(function (item) {\n return item === controlName || item.key === controlName;\n }) && props.excludeControls.indexOf(controlName) === -1;\n};\n\nvar editor_getConvertOptions = function getConvertOptions(props) {\n var editorId = props.editorId || props.id;\n\n var convertOptions = objectSpread_default()({}, configs_props.converts, props.converts, {\n fontFamilies: props.fontFamilies\n });\n\n convertOptions.styleImportFn = compositeStyleImportFn(convertOptions.styleImportFn, editorId);\n convertOptions.styleExportFn = compositeStyleExportFn(convertOptions.styleExportFn, editorId);\n convertOptions.entityImportFn = compositeEntityImportFn(convertOptions.entityImportFn, editorId);\n convertOptions.entityExportFn = compositeEntityExportFn(convertOptions.entityExportFn, editorId);\n convertOptions.blockImportFn = compositeBlockImportFn(convertOptions.blockImportFn, editorId);\n convertOptions.blockExportFn = compositeBlockExportFn(convertOptions.blockExportFn, editorId);\n return convertOptions;\n};\n\nvar editor_BraftEditor =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(BraftEditor, _React$Component);\n\n function BraftEditor(props) {\n var _this;\n\n classCallCheck_default()(this, BraftEditor);\n\n _this = possibleConstructorReturn_default()(this, getPrototypeOf_default()(BraftEditor).call(this, props));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"onChange\", function (editorState, callback) {\n if (!(editorState instanceof external_draft_js_[\"EditorState\"])) {\n editorState = external_draft_js_[\"EditorState\"].set(editorState, {\n decorator: _this.editorDecorators\n });\n }\n\n if (!editorState.convertOptions) {\n editorState.setConvertOptions(editor_getConvertOptions(_this.editorProps));\n }\n\n _this.setState({\n editorState: editorState\n }, function () {\n _this.props.onChange && _this.props.onChange(editorState);\n callback && callback(editorState);\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getDraftInstance\", function () {\n return _this.draftInstance;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getFinderInstance\", function () {\n return _this.braftFinder;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getValue\", function () {\n return _this.state.editorState;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setValue\", function (editorState, callback) {\n return _this.onChange(editorState, callback);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"forceRender\", function () {\n var selectionState = _this.state.editorState.getSelection();\n\n _this.setValue(external_draft_js_[\"EditorState\"].set(_this.state.editorState, {\n decorator: _this.editorDecorators\n }), function () {\n _this.setValue(external_draft_js_[\"EditorState\"].forceSelection(_this.state.editorState, selectionState));\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"onTab\", function (event) {\n if (handlers_keyCommandHandlers('tab', _this.state.editorState, assertThisInitialized_default()(assertThisInitialized_default()(_this))) === 'handled') {\n event.preventDefault();\n }\n\n _this.editorProps.onTab && _this.editorProps.onTab(event);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"onFocus\", function () {\n _this.isFocused = true;\n _this.editorProps.onFocus && _this.editorProps.onFocus(_this.state.editorState);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"onBlur\", function () {\n _this.isFocused = false;\n _this.editorProps.onBlur && _this.editorProps.onBlur(_this.state.editorState);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"requestFocus\", function () {\n setTimeout(function () {\n return _this.draftInstance.focus();\n }, 0);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleKeyCommand\", function (command, editorState) {\n return handlers_keyCommandHandlers(command, editorState, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleReturn\", function (event, editorState) {\n return handlers_returnHandlers(event, editorState, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleBeforeInput\", function (chars, editorState) {\n return beforeInputHandlers(chars, editorState, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleDrop\", function (selectionState, dataTransfer) {\n return handlers_dropHandlers(selectionState, dataTransfer, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleDroppedFiles\", function (selectionState, files) {\n return droppedFilesHandlers(selectionState, files, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handlePastedFiles\", function (files) {\n return pastedFilesHandlers(files, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleCopyContent\", function (event) {\n return handlers_copyHandlers(event, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handlePastedText\", function (text, html, editorState) {\n return handlers_pastedTextHandlers(text, html, editorState, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleCompositionStart\", function (event) {\n return handlers_compositionStartHandler(event, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"undo\", function () {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].undo(_this.state.editorState));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"redo\", function () {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].redo(_this.state.editorState));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeSelectionInlineStyles\", function () {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].removeSelectionInlineStyles(_this.state.editorState));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"insertHorizontalLine\", function () {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].insertHorizontalLine(_this.state.editorState));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"clearEditorContent\", function () {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].clear(_this.state.editorState), function (editorState) {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionIndent(editorState, 0));\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"toggleFullscreen\", function (fullscreen) {\n _this.setState({\n isFullscreen: typeof fullscreen !== 'undefined' ? fullscreen : !_this.state.isFullscreen\n }, function () {\n _this.editorProps.onFullscreen && _this.editorProps.onFullscreen(_this.state.isFullscreen);\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setEditorContainerNode\", function (containerNode) {\n _this.containerNode = containerNode;\n });\n\n _this.editorProps = _this.getEditorProps(props);\n _this.editorDecorators = getDecorators(_this.editorProps.editorId || _this.editorProps.id);\n _this.isFocused = false;\n _this.isLiving = false;\n _this.braftFinder = null;\n _this.valueInitialized = !!(_this.props.defaultValue || _this.props.value);\n var defaultEditorState = (_this.props.defaultValue || _this.props.value) instanceof external_draft_js_[\"EditorState\"] ? _this.props.defaultValue || _this.props.value : external_draft_js_[\"EditorState\"].createEmpty(_this.editorDecorators);\n defaultEditorState.setConvertOptions(editor_getConvertOptions(_this.editorProps));\n var tempColors = [];\n\n if (external_braft_utils_[\"ContentUtils\"].isEditorState(defaultEditorState)) {\n var colors = external_braft_utils_[\"ColorUtils\"].detectColorsFromDraftState(defaultEditorState.toRAW(true));\n defaultEditorState.setConvertOptions(editor_getConvertOptions(_this.editorProps));\n tempColors = filterColors(colors, _this.editorProps.colors);\n }\n\n _this.state = {\n tempColors: tempColors,\n editorState: defaultEditorState,\n isFullscreen: false,\n draftProps: {}\n };\n _this.containerNode = null;\n return _this;\n }\n\n createClass_default()(BraftEditor, [{\n key: \"getEditorProps\",\n value: function getEditorProps(props) {\n var _this2 = this;\n\n props = props || this.props;\n\n var _props = props,\n value = _props.value,\n defaultValue = _props.defaultValue,\n onChange = _props.onChange,\n restProps = objectWithoutProperties_default()(_props, [\"value\", \"defaultValue\", \"onChange\"]); // eslint-disable-line no-unused-vars\n\n\n var propInterceptors = getPropInterceptors(restProps.editorId || restProps.id);\n\n if (propInterceptors.length === 0) {\n return restProps;\n }\n\n var porpsMap = Object(external_immutable_[\"Map\"])(restProps);\n propInterceptors.forEach(function (interceptor) {\n porpsMap = porpsMap.merge(Object(external_immutable_[\"Map\"])(interceptor(porpsMap.toJS(), _this2) || {}));\n });\n return porpsMap.toJS();\n }\n }, {\n key: \"componentWillMount\",\n value: function componentWillMount() {\n if (editor_isControlEnabled(this.editorProps, 'media')) {\n var _this$editorProps = this.editorProps,\n language = _this$editorProps.language,\n media = _this$editorProps.media;\n\n var _defaultProps$media$m = objectSpread_default()({}, configs_props.media, media),\n uploadFn = _defaultProps$media$m.uploadFn,\n validateFn = _defaultProps$media$m.validateFn,\n items = _defaultProps$media$m.items;\n\n this.braftFinder = new external_braft_finder_default.a({\n items: items,\n language: language,\n uploader: uploadFn,\n validator: validateFn\n });\n this.forceUpdate();\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.isLiving = true;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(_, prevState) {\n if (prevState.editorState !== this.state.editorState) {\n this.state.editorState.setConvertOptions(editor_getConvertOptions(this.editorProps));\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(props) {\n var _this3 = this;\n\n this.editorProps = this.getEditorProps(props);\n var editorState = props.value;\n var _this$editorProps2 = this.editorProps,\n media = _this$editorProps2.media,\n language = _this$editorProps2.language;\n var currentProps = this.getEditorProps();\n\n if (!editor_isControlEnabled(currentProps, 'media') && editor_isControlEnabled(this.editorProps, 'media') && !this.braftFinder) {\n var _defaultProps$media$m2 = objectSpread_default()({}, configs_props.media, media),\n uploadFn = _defaultProps$media$m2.uploadFn,\n validateFn = _defaultProps$media$m2.validateFn,\n items = _defaultProps$media$m2.items;\n\n this.braftFinder = new external_braft_finder_default.a({\n items: items,\n language: language,\n uploader: uploadFn,\n validator: validateFn\n });\n this.forceUpdate();\n }\n\n if (media && media.items && this.braftFinder) {\n this.braftFinder.setItems(media.items);\n }\n\n var nextEditorState;\n\n if (!this.valueInitialized && typeof this.props.defaultValue === 'undefined' && external_braft_utils_[\"ContentUtils\"].isEditorState(props.defaultValue)) {\n nextEditorState = props.defaultValue;\n } else if (external_braft_utils_[\"ContentUtils\"].isEditorState(editorState)) {\n nextEditorState = editorState;\n }\n\n if (nextEditorState) {\n if (nextEditorState && nextEditorState !== this.state.editorState) {\n var tempColors = external_braft_utils_[\"ColorUtils\"].detectColorsFromDraftState(nextEditorState.toRAW(true));\n nextEditorState.setConvertOptions(editor_getConvertOptions(this.editorProps));\n this.setState({\n tempColors: filterColors(toConsumableArray_default()(this.state.tempColors).concat(toConsumableArray_default()(tempColors)), currentProps.colors),\n editorState: nextEditorState\n }, function () {\n _this3.props.onChange && _this3.props.onChange(nextEditorState);\n });\n } else {\n this.setState({\n editorState: nextEditorState\n });\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.isLiving = false;\n this.controlBarInstance && this.controlBarInstance.closeBraftFinder();\n }\n }, {\n key: \"lockOrUnlockEditor\",\n value: function lockOrUnlockEditor(editorLocked) {\n this.setState({\n editorLocked: editorLocked\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var _this$editorProps3 = this.editorProps,\n id = _this$editorProps3.id,\n editorId = _this$editorProps3.editorId,\n controls = _this$editorProps3.controls,\n excludeControls = _this$editorProps3.excludeControls,\n extendControls = _this$editorProps3.extendControls,\n readOnly = _this$editorProps3.readOnly,\n disabled = _this$editorProps3.disabled,\n media = _this$editorProps3.media,\n language = _this$editorProps3.language,\n colors = _this$editorProps3.colors,\n colorPicker = _this$editorProps3.colorPicker,\n colorPickerTheme = _this$editorProps3.colorPickerTheme,\n colorPickerAutoHide = _this$editorProps3.colorPickerAutoHide,\n hooks = _this$editorProps3.hooks,\n fontSizes = _this$editorProps3.fontSizes,\n fontFamilies = _this$editorProps3.fontFamilies,\n emojis = _this$editorProps3.emojis,\n placeholder = _this$editorProps3.placeholder,\n fixPlaceholder = _this$editorProps3.fixPlaceholder,\n headings = _this$editorProps3.headings,\n imageControls = _this$editorProps3.imageControls,\n imageResizable = _this$editorProps3.imageResizable,\n lineHeights = _this$editorProps3.lineHeights,\n letterSpacings = _this$editorProps3.letterSpacings,\n textAligns = _this$editorProps3.textAligns,\n textBackgroundColor = _this$editorProps3.textBackgroundColor,\n allowInsertLinkText = _this$editorProps3.allowInsertLinkText,\n defaultLinkTarget = _this$editorProps3.defaultLinkTarget,\n extendAtomics = _this$editorProps3.extendAtomics,\n className = _this$editorProps3.className,\n style = _this$editorProps3.style,\n controlBarClassName = _this$editorProps3.controlBarClassName,\n controlBarStyle = _this$editorProps3.controlBarStyle,\n contentClassName = _this$editorProps3.contentClassName,\n contentStyle = _this$editorProps3.contentStyle,\n stripPastedStyles = _this$editorProps3.stripPastedStyles,\n componentBelowControlBar = _this$editorProps3.componentBelowControlBar;\n var _this$state = this.state,\n isFullscreen = _this$state.isFullscreen,\n editorState = _this$state.editorState;\n editorId = editorId || id;\n hooks = buildHooks(hooks);\n controls = controls.filter(function (item) {\n return excludeControls.indexOf(item) === -1;\n });\n language = (typeof language === 'function' ? language(languages, 'braft-editor') : languages[language]) || languages[configs_props.language];\n var externalMedias = media && media.externals ? objectSpread_default()({}, configs_props.media.externals, media.externals) : configs_props.media.externals;\n var accepts = media && media.accepts ? objectSpread_default()({}, configs_props.media.accepts, media.accepts) : configs_props.media.accepts;\n media = objectSpread_default()({}, configs_props.media, media, {\n externalMedias: externalMedias,\n accepts: accepts\n });\n\n if (!media.uploadFn) {\n media.video = false;\n media.audio = false;\n }\n\n var controlBarProps = {\n editor: this,\n editorState: editorState,\n braftFinder: this.braftFinder,\n ref: function ref(instance) {\n return _this4.controlBarInstance = instance;\n },\n getContainerNode: function getContainerNode() {\n return _this4.containerNode;\n },\n className: controlBarClassName,\n style: controlBarStyle,\n colors: toConsumableArray_default()(colors).concat(toConsumableArray_default()(this.state.tempColors)),\n colorPicker: colorPicker,\n colorPickerTheme: colorPickerTheme,\n colorPickerAutoHide: colorPickerAutoHide,\n hooks: hooks,\n editorId: editorId,\n media: media,\n controls: controls,\n language: language,\n extendControls: extendControls,\n headings: headings,\n fontSizes: fontSizes,\n fontFamilies: fontFamilies,\n emojis: emojis,\n lineHeights: lineHeights,\n letterSpacings: letterSpacings,\n textAligns: textAligns,\n textBackgroundColor: textBackgroundColor,\n allowInsertLinkText: allowInsertLinkText,\n defaultLinkTarget: defaultLinkTarget\n };\n var unitExportFn = editorState.convertOptions.unitExportFn;\n var commonProps = {\n editor: this,\n editorId: editorId,\n hooks: hooks,\n editorState: editorState,\n containerNode: this.containerNode,\n imageControls: imageControls,\n imageResizable: imageResizable,\n language: language,\n extendAtomics: extendAtomics\n };\n var blockRendererFn = getBlockRendererFn(commonProps, this.editorProps.blockRendererFn);\n var blockRenderMap = getBlockRenderMap(commonProps, this.editorProps.blockRenderMap);\n var blockStyleFn = getBlockStyleFn(this.editorProps.blockStyleFn);\n var customStyleMap = getCustomStyleMap(commonProps, this.editorProps.customStyleMap);\n var customStyleFn = getCustomStyleFn(commonProps, {\n fontFamilies: fontFamilies,\n unitExportFn: unitExportFn,\n customStyleFn: this.editorProps.customStyleFn\n });\n var keyBindingFn = keybindings(this.editorProps.keyBindingFn);\n var mixedProps = {};\n\n if (this.state.editorLocked || this.editorProps.disabled || this.editorProps.readOnly || this.editorProps.draftProps.readOnly) {\n mixedProps.readOnly = true;\n }\n\n if (placeholder && fixPlaceholder && editorState.isEmpty() && editorState.getCurrentContent().getFirstBlock().getType() !== 'unstyled') {\n placeholder = '';\n }\n\n var draftProps = objectSpread_default()({\n ref: function ref(instance) {\n _this4.draftInstance = instance;\n },\n editorState: editorState,\n handleKeyCommand: this.handleKeyCommand,\n handleReturn: this.handleReturn,\n handleBeforeInput: this.handleBeforeInput,\n handleDrop: this.handleDrop,\n handleDroppedFiles: this.handleDroppedFiles,\n handlePastedText: this.handlePastedText,\n handlePastedFiles: this.handlePastedFiles,\n onChange: this.onChange,\n onTab: this.onTab,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n blockRenderMap: blockRenderMap,\n blockRendererFn: blockRendererFn,\n blockStyleFn: blockStyleFn,\n customStyleMap: customStyleMap,\n customStyleFn: customStyleFn,\n keyBindingFn: keyBindingFn,\n placeholder: placeholder,\n stripPastedStyles: stripPastedStyles\n }, this.editorProps.draftProps, mixedProps);\n\n return external_react_default.a.createElement(\"div\", {\n style: style,\n ref: this.setEditorContainerNode,\n className: \"bf-container \".concat(className).concat(disabled ? ' disabled' : '').concat(readOnly ? ' read-only' : '').concat(isFullscreen ? ' fullscreen' : '')\n }, external_react_default.a.createElement(ControlBar_ControlBar, controlBarProps), componentBelowControlBar, external_react_default.a.createElement(\"div\", {\n onCompositionStart: this.handleCompositionStart,\n className: \"bf-content \".concat(contentClassName),\n onCopy: this.handleCopyContent,\n style: contentStyle\n }, external_react_default.a.createElement(external_draft_js_[\"Editor\"], draftProps)));\n }\n }]);\n\n return BraftEditor;\n}(external_react_default.a.Component);\n\ndefineProperty_default()(editor_BraftEditor, \"defaultProps\", configs_props);\n\n\n\n// EXTERNAL MODULE: external \"braft-convert\"\nvar external_braft_convert_ = __webpack_require__(14);\n\n// CONCATENATED MODULE: ./index.jsx\n/* concated harmony reexport EditorState */__webpack_require__.d(__webpack_exports__, \"EditorState\", function() { return external_draft_js_[\"EditorState\"]; });\n/* concated harmony reexport getDecorators */__webpack_require__.d(__webpack_exports__, \"getDecorators\", function() { return getDecorators; });\n\n\n\n\n\n\n\nexternal_draft_js_[\"EditorState\"].prototype.setConvertOptions = function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.convertOptions = options;\n};\n\nexternal_draft_js_[\"EditorState\"].prototype.toHTML = function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var convertOptions = this.convertOptions || {};\n return Object(external_braft_convert_[\"convertEditorStateToHTML\"])(this, objectSpread_default()({}, convertOptions, options));\n};\n\nexternal_draft_js_[\"EditorState\"].prototype.toRAW = function (noStringify) {\n return noStringify ? Object(external_braft_convert_[\"convertEditorStateToRaw\"])(this) : JSON.stringify(Object(external_braft_convert_[\"convertEditorStateToRaw\"])(this));\n};\n\nexternal_draft_js_[\"EditorState\"].prototype.toText = function () {\n return this.getCurrentContent().getPlainText();\n};\n\nexternal_draft_js_[\"EditorState\"].prototype.isEmpty = function () {\n return !this.getCurrentContent().hasText();\n};\n\neditor_BraftEditor.createEditorState = external_draft_js_[\"EditorState\"].createFrom = function (content) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options.unitExportFn = options.unitExportFn || editor_BraftEditor.defaultProps.converts.unitExportFn;\n options.styleImportFn = compositeStyleImportFn(options.styleImportFn, options.editorId);\n options.entityImportFn = compositeEntityImportFn(options.entityImportFn, options.editorId);\n options.blockImportFn = compositeBlockImportFn(options.blockImportFn, options.editorId);\n var editorState = null;\n\n if (content instanceof external_draft_js_[\"EditorState\"]) {\n editorState = content;\n } else if (typeof_default()(content) === 'object' && content && content.blocks && content.entityMap) {\n editorState = Object(external_braft_convert_[\"convertRawToEditorState\"])(content, getDecorators(options.editorId));\n } else if (typeof content === 'string') {\n try {\n if (/^(-)?\\d+$/.test(content)) {\n editorState = Object(external_braft_convert_[\"convertHTMLToEditorState\"])(content, getDecorators(options.editorId), options, 'create');\n } else {\n editorState = external_draft_js_[\"EditorState\"].createFrom(JSON.parse(content), options);\n }\n } catch (error) {\n editorState = Object(external_braft_convert_[\"convertHTMLToEditorState\"])(content, getDecorators(options.editorId), options, 'create');\n }\n } else if (typeof content === 'number') {\n editorState = Object(external_braft_convert_[\"convertHTMLToEditorState\"])(content.toLocaleString().replace(/,/g, ''), getDecorators(options.editorId), options, 'create');\n } else {\n editorState = external_draft_js_[\"EditorState\"].createEmpty(getDecorators(options.editorId));\n }\n\n options.styleExportFn = compositeStyleExportFn(options.styleExportFn, options.editorId);\n options.entityExportFn = compositeEntityExportFn(options.entityExportFn, options.editorId);\n options.blockExportFn = compositeBlockExportFn(options.blockExportFn, options.editorId);\n editorState.setConvertOptions(options);\n return editorState;\n};\n\n/* harmony default export */ var index_0 = __webpack_exports__[\"default\"] = (createExtensibleEditor(editor_BraftEditor));\n // 2.1版本开发计划\n// [ ]优化选中多行文字是插入链接报错的问题\n// [ ]新增编辑器内图片删除hook\n// 2.2版本开发计划\n// [ ]表格功能\n// [ ]美化UI,包括图标和界面风格\n// 2.3版本开发计划\n// [ ]初级md快捷输入支持\n// [ ]图片裁切等简单的编辑功能\n// [ ]允许自定义快捷键\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 41 */,\n/* 42 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 43 */,\n/* 44 */,\n/* 45 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=index.js.map","/**\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(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.Immutable = {})));\n}(this, (function (exports) { 'use strict';\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 function MakeRef() {\n return { value: false };\n }\n\n function SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\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 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 (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\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 // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n }\n\n function isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n }\n\n // Note: value is unchanged to not break immutable-devtools.\n var IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\n function isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n }\n\n var IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\n function isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n }\n\n var IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\n function isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n var Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n };\n\n var KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n }(Collection));\n\n var IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n }(Collection));\n\n var SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n }(Collection));\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\n function isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n }\n\n var IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\n function isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n }\n\n function isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n }\n\n var IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\n function isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n }\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 var Iterator = function Iterator(next) {\n this.next = next;\n };\n\n Iterator.prototype.toString = function toString () {\n return '[Iterator]';\n };\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect = Iterator.prototype.toSource = function() {\n return this.toString();\n };\n Iterator.prototype[ITERATOR_SYMBOL] = function() {\n return this;\n };\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n 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 =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n function isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n }\n\n var Seq = /*@__PURE__*/(function (Collection$$1) {\n function Seq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection$$1 ) Seq.__proto__ = Collection$$1;\n Seq.prototype = Object.create( Collection$$1 && Collection$$1.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\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 __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n }(Collection));\n\n var KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === null || value === undefined\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n }(Seq));\n\n var IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n }(Seq));\n\n var SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (isCollection(value) && !isAssociative(value)\n ? value\n : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n }(Seq));\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n Seq.prototype[IS_SEQ_SYMBOL] = true;\n\n // #pragma Root Sequences\n\n var ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n }(IndexedSeq));\n\n var ObjectSeq = /*@__PURE__*/(function (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 if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (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 has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n }(KeyedSeq));\n ObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\n var CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\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 CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\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 return CollectionSeq;\n }(IndexedSeq));\n\n // # pragma Helper functions\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 = Array.isArray(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n }\n\n function maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n }\n\n var IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\n function isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n }\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n function isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\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 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 are Value Objects: they implement `equals()`\n * and `hashCode()`.\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 (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\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 return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n }\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n 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 var defaultValueOf = Object.prototype.valueOf;\n\n function hash(o) {\n switch (typeof o) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return o ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(o);\n case 'string':\n return o.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(o)\n : hashString(o);\n case 'object':\n case 'function':\n if (o === null) {\n return 0x42108422;\n }\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n if (o.valueOf !== defaultValueOf && typeof o.valueOf === 'function') {\n o = o.valueOf(o);\n }\n return hashJSObj(o);\n case 'undefined':\n return 0x42108423;\n default:\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + typeof o + ' cannot be hashed.');\n }\n }\n\n // Compress arbitrarily large numbers into smi hashes.\n function hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n }\n\n function cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = 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] = hashed;\n }\n return hashed;\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 hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n }\n\n function hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\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: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\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(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\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] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\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 var ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq$$1) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq$$1 ) ToKeyedSequence.__proto__ = KeyedSeq$$1;\n ToKeyedSequence.prototype = Object.create( KeyedSeq$$1 && KeyedSeq$$1.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n }(KeyedSeq));\n ToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\n var ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq$$1) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq$$1 ) ToIndexedSequence.__proto__ = IndexedSeq$$1;\n ToIndexedSequence.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1.size - ++i : i++, this$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n }(IndexedSeq));\n\n var ToSetSequence = /*@__PURE__*/(function (SetSeq$$1) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq$$1 ) ToSetSequence.__proto__ = SetSeq$$1;\n ToSetSequence.prototype = Object.create( SetSeq$$1 && SetSeq$$1.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (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\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n }(SetSeq));\n\n var FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq$$1) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq$$1 ) FromEntriesSequence.__proto__ = KeyedSeq$$1;\n FromEntriesSequence.prototype = Object.create( KeyedSeq$$1 && KeyedSeq$$1.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\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 indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (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 indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n }(KeyedSeq));\n\n ToIndexedSequence.prototype.cacheResult = ToKeyedSequence.prototype.cacheResult = ToSetSequence.prototype.cacheResult = FromEntriesSequence.prototype.cacheResult = cacheResultThrough;\n\n function flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function() {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__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 collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n }\n\n function mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__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, collection),\n step\n );\n });\n };\n return mappedSequence;\n }\n\n function reverseFactory(collection, useKeys) {\n var this$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function() {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function(fn, reverse) {\n var this$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1.size - ++i : i++, this$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__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 return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n }\n\n function filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__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, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n }\n\n function countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n }\n\n function groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n }\n\n function sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\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 collection'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(collection.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(collection);\n\n // If collection.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 =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\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 collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1) !== false &&\n iterations !== sliceSize\n );\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 if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__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 || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n }\n\n function takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__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$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n function skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__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$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n function concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n }\n\n function flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__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) && isCollection(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 function flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n }\n\n function interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1) !== false) &&\n fn(v, iterations++, this$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__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 function sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries.sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; }).forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n }\n\n function maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\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 (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n }\n\n function zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.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(\n function (i) { return ((i = Collection(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 = zipAll ? steps.every(function (s) { return s.done; }) : 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 // #pragma Helper Functions\n\n function reify(iter, seq) {\n return iter === seq ? iter : 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 collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n }\n\n function makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? 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 }\n return Seq.prototype.cacheResult.call(this);\n }\n\n function defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n }\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 invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n }\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n function coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n }\n\n function isPlainObj(value) {\n return (\n value &&\n (typeof value.constructor !== 'function' ||\n value.constructor.name === 'Object')\n );\n }\n\n /**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\n function isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObj(value))\n );\n }\n\n /**\n * Converts a value to a string, adding quotes if a string was provided.\n */\n function quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n }\n\n function has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n }\n\n function get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n }\n\n function shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n }\n\n function remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n }\n\n function set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n }\n\n function updateIn(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n }\n\n function updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n ) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n }\n\n function setIn(collection, keyPath, value) {\n return updateIn(collection, keyPath, NOT_SET, function () { return value; });\n }\n\n function setIn$1(keyPath, v) {\n return setIn(this, keyPath, v);\n }\n\n function removeIn(collection, keyPath) {\n return updateIn(collection, keyPath, function () { return NOT_SET; });\n }\n\n function deleteIn(keyPath) {\n return removeIn(this, keyPath);\n }\n\n function update(collection, key, notSetValue, updater) {\n return updateIn(collection, [key], notSetValue, updater);\n }\n\n function update$1(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update(this, key, notSetValue, updater);\n }\n\n function updateIn$1(keyPath, notSetValue, updater) {\n return updateIn(this, keyPath, notSetValue, updater);\n }\n\n function merge() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n }\n\n function mergeWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n }\n\n function mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update(\n collection,\n key,\n NOT_SET,\n function (oldVal) { return (oldVal === NOT_SET ? value : merger(oldVal, 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(mergeIntoCollection);\n }\n });\n }\n\n function merge$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n }\n\n function mergeWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n }\n\n function mergeDeep(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n }\n\n function mergeDeepWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n }\n\n function mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n }\n\n function mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection$$1 = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection$$1(sources[i]).forEach(mergeItem);\n }\n return merged;\n }\n\n function deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) && isDataStructure(newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n }\n\n function mergeDeep$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n }\n\n function mergeDeepWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n }\n\n function mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n }\n\n function mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n }\n\n function withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n }\n\n function asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n }\n\n function asImmutable() {\n return this.__ensureOwner();\n }\n\n function wasAltered() {\n return this.__altered;\n }\n\n var Map = /*@__PURE__*/(function (KeyedCollection$$1) {\n function Map(value) {\n return value === null || value === undefined\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection$$1(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection$$1 ) Map.__proto__ = KeyedCollection$$1;\n Map.prototype = Object.create( KeyedCollection$$1 && KeyedCollection$$1.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (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 set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\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.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, map));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\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 return Map;\n }(KeyedCollection));\n\n Map.isMap = isMap;\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SYMBOL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeAll = MapPrototype.deleteAll;\n MapPrototype.setIn = setIn$1;\n MapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\n MapPrototype.update = update$1;\n MapPrototype.updateIn = updateIn$1;\n MapPrototype.merge = MapPrototype.concat = merge;\n MapPrototype.mergeWith = mergeWith;\n MapPrototype.mergeDeep = mergeDeep$1;\n MapPrototype.mergeDeepWith = mergeDeepWith$1;\n MapPrototype.mergeIn = mergeIn;\n MapPrototype.mergeDeepIn = mergeDeepIn;\n MapPrototype.withMutations = withMutations;\n MapPrototype.wasAltered = wasAltered;\n MapPrototype.asImmutable = asImmutable;\n MapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\n MapPrototype['@@transducer/step'] = function(result, arr) {\n return result.set(arr[0], arr[1]);\n };\n MapPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n };\n\n // #pragma Trie Nodes\n\n var ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n };\n\n ArrayMapNode.prototype.get = function get (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 update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; 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\n ? newEntries.pop()\n : (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 var BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n };\n\n BitmapIndexedNode.prototype.get = function get (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\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n };\n\n BitmapIndexedNode.prototype.update = function update (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(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\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 (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\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\n ? newNode\n ? setAt(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 var HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n };\n\n HashArrayMapNode.prototype.get = function get (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\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function update (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(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\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 = setAt(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 var HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n };\n\n HashCollisionNode.prototype.get = function get (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 update (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 var len = entries.length;\n for (; 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\n ? newEntries.pop()\n : (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 var ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n };\n\n ValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function update (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 // #pragma Iterators\n\n ArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate = function(\n fn,\n reverse\n ) {\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 = HashArrayMapNode.prototype.iterate = function(\n fn,\n reverse\n ) {\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 // eslint-disable-next-line no-unused-vars\n ValueNode.prototype.iterate = function(fn, reverse) {\n return fn(this.entry);\n };\n\n var MapIterator = /*@__PURE__*/(function (Iterator$$1) {\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 if ( Iterator$$1 ) MapIterator.__proto__ = Iterator$$1;\n MapIterator.prototype = Object.create( Iterator$$1 && Iterator$$1.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\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 = (void 0);\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(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\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 return MapIterator;\n }(Iterator));\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$$1) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash$$1;\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();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\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(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n ) {\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(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n }\n\n function isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\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 =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n 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 popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n }\n\n function setAt(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 var IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\n function isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n }\n\n var List = /*@__PURE__*/(function (IndexedCollection$$1) {\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 = IndexedCollection$$1(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 if ( IndexedCollection$$1 ) List.__proto__ = IndexedCollection$$1;\n List.prototype = Object.create( IndexedCollection$$1 && IndexedCollection$$1.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (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 set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\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 push (/*...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 pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...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 shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection$$1(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, list));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (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 __iterator (type, reverse) {\n var index = reverse ? this.size : 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, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n }(IndexedCollection));\n\n List.isList = isList;\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SYMBOL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.merge = ListPrototype.concat;\n ListPrototype.setIn = setIn$1;\n ListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\n ListPrototype.update = update$1;\n ListPrototype.updateIn = updateIn$1;\n ListPrototype.mergeIn = mergeIn;\n ListPrototype.mergeDeepIn = mergeDeepIn;\n ListPrototype.withMutations = withMutations;\n ListPrototype.wasAltered = wasAltered;\n ListPrototype.asImmutable = asImmutable;\n ListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\n ListPrototype['@@transducer/step'] = function(result, arr) {\n return result.push(arr);\n };\n ListPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n };\n\n var VNode = 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 removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : 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 =\n 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 removeAfter (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 =\n 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 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 while (true) {\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],\n level - SHIFT,\n offset + (idx << level)\n );\n }\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();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\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(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\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 if (didAlter) {\n SetRef(didAlter);\n }\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 |= 0;\n }\n if (end !== undefined) {\n 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 =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : 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(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\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(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\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(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\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 getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n }\n\n var OrderedMap = /*@__PURE__*/(function (Map$$1) {\n function OrderedMap(value) {\n return value === null || value === undefined\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map$$1 ) OrderedMap.__proto__ = Map$$1;\n OrderedMap.prototype = Object.create( Map$$1 && Map$$1.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (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 clear () {\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 set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (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 if (this.size === 0) {\n return emptyOrderedMap();\n }\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 return OrderedMap;\n }(Map));\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\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 (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\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) {\n // 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\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .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 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 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 var IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\n function isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n }\n\n var Stack = /*@__PURE__*/(function (IndexedCollection$$1) {\n function Stack(value) {\n return value === null || value === undefined\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection$$1 ) Stack.__proto__ = IndexedCollection$$1;\n Stack.prototype = Object.create( IndexedCollection$$1 && IndexedCollection$$1.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (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 peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\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$1[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 pushAll (iter) {\n iter = IndexedCollection$$1(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\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 pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\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 slice (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$$1.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 __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\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 __iterate (fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1); },\n reverse\n );\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 __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\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 return Stack;\n }(IndexedCollection));\n\n Stack.isStack = isStack;\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SYMBOL] = true;\n StackPrototype.shift = StackPrototype.pop;\n StackPrototype.unshift = StackPrototype.push;\n StackPrototype.unshiftAll = StackPrototype.pushAll;\n StackPrototype.withMutations = withMutations;\n StackPrototype.wasAltered = wasAltered;\n StackPrototype.asImmutable = asImmutable;\n StackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\n StackPrototype['@@transducer/step'] = function(result, arr) {\n return result.unshift(arr);\n };\n StackPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\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 var IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\n function isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n }\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n 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 (\n 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\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 (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n function toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n }\n\n var Set = /*@__PURE__*/(function (SetCollection$$1) {\n function Set(value) {\n return value === null || value === undefined\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection$$1(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection$$1 ) Set.__proto__ = SetCollection$$1;\n Set.prototype = Object.create( SetCollection$$1 && SetCollection$$1.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n var removes = [];\n var adds = [];\n this.forEach(function (value) {\n var mapped = mapper.call(context, value, value, this$1);\n if (mapped !== value) {\n removes.push(value);\n adds.push(mapped);\n }\n });\n return this.withMutations(function (set) {\n removes.forEach(function (value) { return set.remove(value); });\n adds.forEach(function (value) { return set.add(value); });\n });\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\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 SetCollection$$1(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection$$1(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection$$1(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n }(SetCollection));\n\n Set.isSet = isSet;\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SYMBOL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.merge = SetPrototype.concat = SetPrototype.union;\n SetPrototype.withMutations = withMutations;\n SetPrototype.asImmutable = asImmutable;\n SetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\n SetPrototype['@@transducer/step'] = function(result, arr) {\n return result.add(arr);\n };\n SetPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n };\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\n ? set\n : newMap.size === 0\n ? 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 /**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\n var Range = /*@__PURE__*/(function (IndexedSeq$$1) {\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 if ( IndexedSeq$$1 ) Range.__proto__ = IndexedSeq$$1;\n Range.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (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(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (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 lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (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 return Range;\n }(IndexedSeq));\n\n var EMPTY_RANGE;\n\n function getIn(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n }\n\n function getIn$1(searchKeyPath, notSetValue) {\n return getIn(this, searchKeyPath, notSetValue);\n }\n\n function hasIn(collection, keyPath) {\n return getIn(collection, keyPath, NOT_SET) !== NOT_SET;\n }\n\n function hasIn$1(searchKeyPath) {\n return hasIn(this, searchKeyPath);\n }\n\n function toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n }\n\n // Note: all of these methods are deprecated.\n Collection.isIterable = isCollection;\n Collection.isKeyed = isKeyed;\n Collection.isIndexed = isIndexed;\n Collection.isAssociative = isAssociative;\n Collection.isOrdered = isOrdered;\n\n Collection.Iterator = Iterator;\n\n mixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq()\n .map(this.__toStringMapper)\n .join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(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 filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(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 keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection\n .toSeq()\n .map(entryMapper)\n .toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\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 findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq()\n .reverse()\n .findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn$1,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn$1,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq()\n .map(keyMapper)\n .toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq()\n .reverse()\n .first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq()\n .reverse()\n .keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n var CollectionPrototype = Collection.prototype;\n CollectionPrototype[IS_COLLECTION_SYMBOL] = true;\n CollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\n CollectionPrototype.toJSON = CollectionPrototype.toArray;\n CollectionPrototype.__toStringMapper = quoteString;\n CollectionPrototype.inspect = CollectionPrototype.toSource = function() {\n return this.toString();\n };\n CollectionPrototype.chain = CollectionPrototype.flatMap;\n CollectionPrototype.contains = CollectionPrototype.includes;\n\n mixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1); })\n .flip()\n );\n },\n });\n\n var KeyedCollectionPrototype = KeyedCollection.prototype;\n KeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\n KeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\n KeyedCollectionPrototype.toJSON = toObject;\n KeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\n mixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(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 // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n (this.size === Infinity || (this.size !== undefined && index > this.size))\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n });\n\n var IndexedCollectionPrototype = IndexedCollection.prototype;\n IndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\n IndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\n mixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n });\n\n SetCollection.prototype.has = CollectionPrototype.includes;\n SetCollection.prototype.contains = SetCollection.prototype.includes;\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedCollection.prototype);\n mixin(IndexedSeq, IndexedCollection.prototype);\n mixin(SetSeq, SetCollection.prototype);\n\n // #pragma Helper functions\n\n function reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__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 }, reverse);\n return reduction;\n }\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 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 hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\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 OrderedSet = /*@__PURE__*/(function (Set$$1) {\n function OrderedSet(value) {\n return value === null || value === undefined\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set$$1 ) OrderedSet.__proto__ = Set$$1;\n OrderedSet.prototype = Object.create( Set$$1 && Set$$1.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n }(Set));\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\n OrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\n OrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\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 (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n }\n\n var Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n var this$1 = this;\n\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 var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1._indices[k], v === this$1._defaultValues[k] ? undefined : v);\n });\n });\n };\n\n var RecordTypePrototype = (RecordType.prototype = Object.create(\n RecordPrototype\n ));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n };\n\n Record.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n };\n\n Record.prototype.equals = function equals (other) {\n return (\n this === other ||\n (other &&\n this._keys === other._keys &&\n recordSeq(this).equals(recordSeq(other)))\n );\n };\n\n Record.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n };\n\n // @pragma Access\n\n Record.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n };\n\n Record.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n };\n\n // @pragma Modification\n\n Record.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n };\n\n Record.prototype.remove = function remove (k) {\n return this.set(k);\n };\n\n Record.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n return this.__ownerID ? this : makeRecord(this, newValues);\n };\n\n Record.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n };\n\n Record.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n };\n\n Record.prototype.toJS = function toJS$1 () {\n return toJS(this);\n };\n\n Record.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n };\n\n Record.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n };\n\n Record.isRecord = isRecord;\n Record.getDescriptiveName = recordName;\n var RecordPrototype = Record.prototype;\n RecordPrototype[IS_RECORD_SYMBOL] = true;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\n RecordPrototype.getIn = getIn$1;\n RecordPrototype.hasIn = CollectionPrototype.hasIn;\n RecordPrototype.merge = merge;\n RecordPrototype.mergeWith = mergeWith;\n RecordPrototype.mergeIn = mergeIn;\n RecordPrototype.mergeDeep = mergeDeep$1;\n RecordPrototype.mergeDeepWith = mergeDeepWith$1;\n RecordPrototype.mergeDeepIn = mergeDeepIn;\n RecordPrototype.setIn = setIn$1;\n RecordPrototype.update = update$1;\n RecordPrototype.updateIn = updateIn$1;\n RecordPrototype.withMutations = withMutations;\n RecordPrototype.asMutable = asMutable;\n RecordPrototype.asImmutable = asImmutable;\n RecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\n RecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\n RecordPrototype.inspect = RecordPrototype.toSource = function() {\n return this.toString();\n };\n\n function makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n }\n\n function recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n }\n\n function setProp(prototype, name) {\n try {\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 } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n /**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\n var Repeat = /*@__PURE__*/(function (IndexedSeq$$1) {\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 if ( IndexedSeq$$1 ) Repeat.__proto__ = IndexedSeq$$1;\n Repeat.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(\n function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n }(IndexedSeq));\n\n var EMPTY_REPEAT;\n\n function fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n }\n\n function fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n var toSeq = Array.isArray(value)\n ? IndexedSeq\n : isPlainObj(value)\n ? KeyedSeq\n : null;\n if (toSeq) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n toSeq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n }\n\n function defaultConverter(k, v) {\n return isKeyed(v) ? v.toMap() : v.toList();\n }\n\n var version = \"4.0.0-rc.11\";\n\n var Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\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 hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn,\n has: has,\n hasIn: hasIn,\n merge: merge$1,\n mergeDeep: mergeDeep,\n mergeWith: mergeWith$1,\n mergeDeepWith: mergeDeepWith,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn,\n update: update,\n updateIn: updateIn,\n };\n\n // Note: Iterable is deprecated\n var Iterable = Collection;\n\n exports.default = Immutable;\n exports.version = version;\n exports.Collection = Collection;\n exports.Iterable = Iterable;\n exports.Seq = Seq;\n exports.Map = Map;\n exports.OrderedMap = OrderedMap;\n exports.List = List;\n exports.Stack = Stack;\n exports.Set = Set;\n exports.OrderedSet = OrderedSet;\n exports.Record = Record;\n exports.Range = Range;\n exports.Repeat = Repeat;\n exports.is = is;\n exports.fromJS = fromJS;\n exports.hash = hash;\n exports.isImmutable = isImmutable;\n exports.isCollection = isCollection;\n exports.isKeyed = isKeyed;\n exports.isIndexed = isIndexed;\n exports.isAssociative = isAssociative;\n exports.isOrdered = isOrdered;\n exports.isValueObject = isValueObject;\n exports.get = get;\n exports.getIn = getIn;\n exports.has = has;\n exports.hasIn = hasIn;\n exports.merge = merge$1;\n exports.mergeDeep = mergeDeep;\n exports.mergeWith = mergeWith$1;\n exports.mergeDeepWith = mergeDeepWith;\n exports.remove = remove;\n exports.removeIn = removeIn;\n exports.set = set;\n exports.setIn = setIn;\n exports.update = update;\n exports.updateIn = updateIn;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"draft-js\"),require(\"immutable\")):\"function\"==typeof define&&define.amd?define([\"draft-js\",\"immutable\"],e):\"object\"==typeof exports?exports.draftjsUtils=e(require(\"draft-js\"),require(\"immutable\")):t.draftjsUtils=e(t[\"draft-js\"],t.immutable)}(window,function(n,r){return u={},o.m=i=[function(t,e){t.exports=n},function(t,e){t.exports=r},function(t,e,n){t.exports=n(3)},function(t,e,n){\"use strict\";n.r(e);var C=n(0),i=n(1);function m(t){var e=t.getSelection(),n=t.getCurrentContent(),r=e.getStartKey(),o=e.getEndKey(),i=n.getBlockMap();return i.toSeq().skipUntil(function(t,e){return e===r}).takeUntil(function(t,e){return e===o}).concat([[o,i.get(o)]])}function a(t){return m(t).toList()}function f(t){if(t)return a(t).get(0)}function r(t){if(t){var n=f(t),e=t.getCurrentContent().getBlockMap().toSeq().toList(),r=0;if(e.forEach(function(t,e){t.get(\"key\")===n.get(\"key\")&&(r=e-1)}),-1<r)return e.get(r)}}function o(t){return t?t.getCurrentContent().getBlockMap().toList():new i.List}function u(t){var e=a(t);if(!e.some(function(t){return t.type!==e.get(0).type}))return e.get(0).type}function c(t){var e=C.RichUtils.tryToRemoveBlockStyle(t);return e?C.EditorState.push(t,e,\"change-block-type\"):t}function l(t){var e=\"\",n=t.getSelection(),r=n.getAnchorOffset(),o=n.getFocusOffset(),i=a(t);if(0<i.size){if(n.getIsBackward()){var u=r;r=o,o=u}for(var c=0;c<i.size;c+=1){var f=0===c?r:0,l=c===i.size-1?o:i.get(c).getText().length;e+=i.get(c).getText().slice(f,l)}}return e}function s(t){var e=t.getCurrentContent(),n=t.getSelection(),r=C.Modifier.removeRange(e,n,\"forward\"),o=r.getSelectionAfter(),i=r.getBlockForKey(o.getStartKey());return r=C.Modifier.insertText(r,o,\"\\n\",i.getInlineStyleAt(o.getStartOffset()),null),C.EditorState.push(t,r,\"insert-fragment\")}function g(t){var e=C.Modifier.splitBlock(t.getCurrentContent(),t.getSelection());return c(C.EditorState.push(t,e,\"split-block\"))}function d(t){var e=t.getCurrentContent().getBlockMap().toList(),n=t.getSelection().merge({anchorKey:e.first().get(\"key\"),anchorOffset:0,focusKey:e.last().get(\"key\"),focusOffset:e.last().getLength()}),r=C.Modifier.removeRange(t.getCurrentContent(),n,\"forward\");return C.EditorState.push(t,r,\"remove-range\")}function S(t,e){var n=C.Modifier.setBlockData(t.getCurrentContent(),t.getSelection(),e);return C.EditorState.push(t,n,\"change-block-data\")}function p(t){var r=new i.Map({}),e=a(t);if(e&&0<e.size)for(var n=function(t){var n=e.get(t).getData();if(!n||0===n.size)return r=r.clear(),\"break\";if(0===t)r=n;else if(r.forEach(function(t,e){n.get(e)&&n.get(e)===t||(r=r.delete(e))}),0===r.size)return r=r.clear(),\"break\"},o=0;o<e.size;o+=1){if(\"break\"===n(o))break}return r}var y=Object(i.Map)({code:{element:\"pre\"}}),v=C.DefaultDraftBlockRenderMap.merge(y);function b(t){if(t){var e=t.getType();return\"unordered-list-item\"===e||\"ordered-list-item\"===e}return!1}function h(t,e,n){var r,o=t.getSelection();r=o.getIsBackward()?o.getFocusKey():o.getAnchorKey();var i=t.getCurrentContent(),u=i.getBlockForKey(r),c=u.getType();if(\"unordered-list-item\"!==c&&\"ordered-list-item\"!==c)return t;var f=i.getBlockBefore(r);if(!f)return t;if(f.getType()!==c)return t;var l=u.getDepth();if(1===e&&l===n)return t;var a,s,g,d,S,p,y,v=Math.min(f.getDepth()+1,n),b=(s=e,g=v,d=(a=t).getSelection(),S=a.getCurrentContent(),p=S.getBlockMap(),y=m(a).map(function(t){var e=t.getDepth()+s;return e=Math.max(0,Math.min(e,g)),t.set(\"depth\",e)}),p=p.merge(y),S.merge({blockMap:p,selectionBefore:d,selectionAfter:d}));return C.EditorState.push(t,b,\"adjust-depth\")}function O(t,e){var n;return 13===(n=e).which&&(n.getModifierState(\"Shift\")||n.getModifierState(\"Alt\")||n.getModifierState(\"Control\"))?t.getSelection().isCollapsed()?C.RichUtils.insertSoftNewline(t):s(t):function(t){var e=t.getSelection();if(e.isCollapsed()){var n=t.getCurrentContent(),r=e.getStartKey(),o=n.getBlockForKey(r);if(!b(o)&&\"unstyled\"!==o.getType()&&o.getLength()===e.getStartOffset())return g(t);if(b(o)&&0===o.getLength()){var i=o.getDepth();if(0===i)return c(t);if(0<i)return h(t,-1,i)}}}(t)}function k(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function E(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function I(t){return(I=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function R(t){var e=t.getSelection();if(e.isCollapsed()){var n={},r=t.getCurrentInlineStyle().toList().toJS();if(r)return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(t){n[t]=0<=r.indexOf(t)}),n}var u=e.getStartOffset(),c=e.getEndOffset(),f=a(t);if(0<f.size){var o=function(){for(var n={BOLD:!0,ITALIC:!0,UNDERLINE:!0,STRIKETHROUGH:!0,CODE:!0,SUPERSCRIPT:!0,SUBSCRIPT:!0},r=0;r<f.size;r+=1){var t=0===r?u:0,e=r===f.size-1?c:f.get(r).getText().length;t===e&&0===t?(t=1,e=2):t===e&&--t;for(var o=function(t){var e=f.get(r).getInlineStyleAt(t);[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(t){n[t]=n[t]&&e.get(t)===t})},i=t;i<e;i+=1)o(i)}return{v:n}}();if(\"object\"===I(o))return o.v}return{}}function B(t){var e,n=t.getSelection(),r=n.getStartOffset(),o=n.getEndOffset();r===o&&0===r?o=1:r===o&&--r;for(var i=f(t),u=r;u<o;u+=1){var c=i.getEntityAt(u);if(!c){e=void 0;break}if(u===r)e=c;else if(e!==c){e=void 0;break}}return e}function T(t,e){var n,r=f(t);return r.findEntityRanges(function(t){return t.get(\"entity\")===e},function(t,e){n={start:t,end:e,text:r.get(\"text\").slice(t,e)}}),n}function P(t,e,n){x[t][\"\".concat(t.toLowerCase(),\"-\").concat(n)]=E({},\"\".concat(e),n)}function j(){return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?k(Object(n),!0).forEach(function(t){E(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):k(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},x.color,{},x.bgcolor,{},x.fontSize,{},x.fontFamily,{CODE:x.CODE,SUPERSCRIPT:x.SUPERSCRIPT,SUBSCRIPT:x.SUBSCRIPT})}var x={color:{},bgcolor:{},fontSize:{},fontFamily:{},CODE:{fontFamily:\"monospace\",wordWrap:\"break-word\",background:\"#f1f1f1\",borderRadius:3,padding:\"1px 3px\"},SUPERSCRIPT:{fontSize:11,position:\"relative\",top:-8,display:\"inline-flex\"},SUBSCRIPT:{fontSize:11,position:\"relative\",bottom:-8,display:\"inline-flex\"}};function M(t,e,n){var r=t.getSelection(),o=Object.keys(x[e]).reduce(function(t,e){return C.Modifier.removeInlineStyle(t,r,e)},t.getCurrentContent()),i=C.EditorState.push(t,o,\"changeinline-style\"),u=t.getCurrentInlineStyle();if(r.isCollapsed()&&(i=u.reduce(function(t,e){return C.RichUtils.toggleInlineStyle(t,e)},i)),\"SUPERSCRIPT\"===e||\"SUBSCRIPT\"==e)u.has(n)||(i=C.RichUtils.toggleInlineStyle(i,n));else{var c=\"bgcolor\"===e?\"backgroundColor\":e;u.has(\"\".concat(c,\"-\").concat(n))||(i=C.RichUtils.toggleInlineStyle(i,\"\".concat(e.toLowerCase(),\"-\").concat(n)),P(e,c,n))}return i}function L(t){t&&t.getCurrentContent().getBlockMap().map(function(t){return t.get(\"characterList\")}).toList().flatten().forEach(function(t){t&&0===t.indexOf(\"color-\")?P(\"color\",\"color\",t.substr(6)):t&&0===t.indexOf(\"bgcolor-\")?P(\"bgcolor\",\"backgroundColor\",t.substr(8)):t&&0===t.indexOf(\"fontsize-\")?P(\"fontSize\",\"fontSize\",+t.substr(9)):t&&0===t.indexOf(\"fontfamily-\")&&P(\"fontFamily\",\"fontFamily\",t.substr(11))})}function U(t,e,n){var r=t.getInlineStyleAt(n).toList().filter(function(t){return t.startsWith(e.toLowerCase())});if(r&&0<r.size)return r.get(0)}function w(r,l){if(r&&l&&0<l.length){var t=function(){var t=r.getSelection(),i={};if(t.isCollapsed())return l.forEach(function(t){i[t]=function(t,e){var n=t.getCurrentInlineStyle().toList().filter(function(t){return t.startsWith(e.toLowerCase())});if(n&&0<n.size)return n.get(0)}(r,t)}),{v:i};var u=t.getStartOffset(),c=t.getEndOffset(),f=a(r);if(0<f.size){for(var e=function(n){var t=0===n?u:0,e=n===f.size-1?c:f.get(n).getText().length;t===e&&0===t?(t=1,e=2):t===e&&--t;for(var r=function(e){e===t?l.forEach(function(t){i[t]=U(f.get(n),t,e)}):l.forEach(function(t){i[t]&&i[t]!==U(f.get(n),t,e)&&(i[t]=void 0)})},o=t;o<e;o+=1)r(o)},n=0;n<f.size;n+=1)e(n);return{v:i}}}();if(\"object\"===I(t))return t.v}return{}}function D(e){var t=e.getCurrentInlineStyle(),n=e.getCurrentContent();return t.forEach(function(t){n=C.Modifier.removeInlineStyle(n,e.getSelection(),t)}),C.EditorState.push(e,n,\"change-inline-style\")}n.d(e,\"isListBlock\",function(){return b}),n.d(e,\"changeDepth\",function(){return h}),n.d(e,\"handleNewLine\",function(){return O}),n.d(e,\"getEntityRange\",function(){return T}),n.d(e,\"getCustomStyleMap\",function(){return j}),n.d(e,\"toggleCustomInlineStyle\",function(){return M}),n.d(e,\"getSelectionEntity\",function(){return B}),n.d(e,\"extractInlineStyle\",function(){return L}),n.d(e,\"removeAllInlineStyles\",function(){return D}),n.d(e,\"getSelectionInlineStyle\",function(){return R}),n.d(e,\"getSelectionCustomInlineStyle\",function(){return w}),n.d(e,\"getSelectedBlocksMap\",function(){return m}),n.d(e,\"getSelectedBlocksList\",function(){return a}),n.d(e,\"getSelectedBlock\",function(){return f}),n.d(e,\"getBlockBeforeSelectedBlock\",function(){return r}),n.d(e,\"getAllBlocks\",function(){return o}),n.d(e,\"getSelectedBlocksType\",function(){return u}),n.d(e,\"removeSelectedBlocksStyle\",function(){return c}),n.d(e,\"getSelectionText\",function(){return l}),n.d(e,\"addLineBreakRemovingSelection\",function(){return s}),n.d(e,\"insertNewUnstyledBlock\",function(){return g}),n.d(e,\"clearEditorContent\",function(){return d}),n.d(e,\"setBlockData\",function(){return S}),n.d(e,\"getSelectedBlocksMetadata\",function(){return p}),n.d(e,\"blockRenderMap\",function(){return v})}],o.c=u,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=2);function o(t){if(u[t])return u[t].exports;var e=u[t]={i:t,l:!1,exports:{}};return i[t].call(e.exports,e,e.exports,o),e.l=!0,e.exports}var i,u});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.redo = exports.undo = exports.handleKeyCommand = exports.clear = exports.setMediaPosition = exports.removeMedia = exports.setMediaData = exports.insertMedias = exports.insertHorizontalLine = exports.insertAtomicBlock = exports.insertHTML = exports.insertText = exports.toggleSelectionLetterSpacing = exports.toggleSelectionFontFamily = exports.toggleSelectionLineHeight = exports.toggleSelectionFontSize = exports.toggleSelectionBackgroundColor = exports.toggleSelectionColor = exports.decreaseSelectionIndent = exports.increaseSelectionIndent = exports.toggleSelectionIndent = exports.toggleSelectionAlignment = exports.removeSelectionInlineStyles = exports.toggleSelectionInlineStyle = exports.selectionHasInlineStyle = exports.getSelectionInlineStyle = exports.toggleSelectionLink = exports.toggleSelectionEntity = exports.getSelectionEntityData = exports.getSelectionEntityType = exports.toggleSelectionBlockType = exports.getSelectionText = exports.getSelectionBlockType = exports.getSelectionBlockData = exports.setSelectionBlockData = exports.getSelectedBlocks = exports.updateEachCharacterOfSelection = exports.getSelectionBlock = exports.removeBlock = exports.selectNextBlock = exports.selectBlock = exports.selectionContainsStrictBlock = exports.selectionContainsBlockType = exports.isSelectionCollapsed = exports.createEditorState = exports.createEmptyEditorState = exports.isEditorState = exports.registerStrictBlockType = undefined;\n\nvar _draftJs = require('draft-js');\n\nvar _draftjsUtils = require('draftjs-utils');\n\nvar _braftConvert = require('braft-convert');\n\nvar _immutable = require('immutable');\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar strictBlockTypes = ['atomic'];\n\nvar registerStrictBlockType = exports.registerStrictBlockType = function registerStrictBlockType(blockType) {\n strictBlockTypes.indexOf(blockType) === -1 && strictBlockTypes.push(blockType);\n};\n\nvar isEditorState = exports.isEditorState = function isEditorState(editorState) {\n return editorState instanceof _draftJs.EditorState;\n};\n\nvar createEmptyEditorState = exports.createEmptyEditorState = function createEmptyEditorState(editorDecorators) {\n return _draftJs.EditorState.createEmpty(editorDecorators);\n};\n\nvar createEditorState = exports.createEditorState = function createEditorState(contentState, editorDecorators) {\n return _draftJs.EditorState.createWithContent(contentState, editorDecorators);\n};\n\nvar isSelectionCollapsed = exports.isSelectionCollapsed = function isSelectionCollapsed(editorState) {\n return editorState.getSelection().isCollapsed();\n};\n\nvar selectionContainsBlockType = exports.selectionContainsBlockType = function selectionContainsBlockType(editorState, blockType) {\n return getSelectedBlocks(editorState).find(function (block) {\n return block.getType() === blockType;\n });\n};\n\nvar selectionContainsStrictBlock = exports.selectionContainsStrictBlock = function selectionContainsStrictBlock(editorState) {\n return getSelectedBlocks(editorState).find(function (block) {\n return ~strictBlockTypes.indexOf(block.getType());\n });\n};\n\nvar selectBlock = exports.selectBlock = function selectBlock(editorState, block) {\n\n var blockKey = block.getKey();\n\n return _draftJs.EditorState.forceSelection(editorState, new _draftJs.SelectionState({\n anchorKey: blockKey,\n anchorOffset: 0,\n focusKey: blockKey,\n focusOffset: block.getLength()\n }));\n};\n\nvar selectNextBlock = exports.selectNextBlock = function selectNextBlock(editorState, block) {\n var nextBlock = editorState.getCurrentContent().getBlockAfter(block.getKey());\n return nextBlock ? selectBlock(editorState, nextBlock) : editorState;\n};\n\nvar removeBlock = exports.removeBlock = function removeBlock(editorState, block) {\n var lastSelection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n\n var nextContentState = void 0,\n nextEditorState = void 0;\n var blockKey = block.getKey();\n\n nextContentState = _draftJs.Modifier.removeRange(editorState.getCurrentContent(), new _draftJs.SelectionState({\n anchorKey: blockKey,\n anchorOffset: 0,\n focusKey: blockKey,\n focusOffset: block.getLength()\n }), 'backward');\n\n nextContentState = _draftJs.Modifier.setBlockType(nextContentState, nextContentState.getSelectionAfter(), 'unstyled');\n nextEditorState = _draftJs.EditorState.push(editorState, nextContentState, 'remove-range');\n return _draftJs.EditorState.forceSelection(nextEditorState, lastSelection || nextContentState.getSelectionAfter());\n};\n\nvar getSelectionBlock = exports.getSelectionBlock = function getSelectionBlock(editorState) {\n return editorState.getCurrentContent().getBlockForKey(editorState.getSelection().getAnchorKey());\n};\n\nvar updateEachCharacterOfSelection = exports.updateEachCharacterOfSelection = function updateEachCharacterOfSelection(editorState, callback) {\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n var contentBlocks = contentState.getBlockMap();\n var selectedBlocks = getSelectedBlocks(editorState);\n\n if (selectedBlocks.length === 0) {\n return editorState;\n }\n\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n\n var nextContentBlocks = contentBlocks.map(function (block) {\n\n if (selectedBlocks.indexOf(block) === -1) {\n return block;\n }\n\n var blockKey = block.getKey();\n var charactersList = block.getCharacterList();\n var nextCharactersList = null;\n\n if (blockKey === startKey && blockKey === endKey) {\n nextCharactersList = charactersList.map(function (character, index) {\n if (index >= startOffset && index < endOffset) {\n return callback(character);\n }\n return character;\n });\n } else if (blockKey === startKey) {\n nextCharactersList = charactersList.map(function (character, index) {\n if (index >= startOffset) {\n return callback(character);\n }\n return character;\n });\n } else if (blockKey === endKey) {\n nextCharactersList = charactersList.map(function (character, index) {\n if (index < endOffset) {\n return callback(character);\n }\n return character;\n });\n } else {\n nextCharactersList = charactersList.map(function (character) {\n return callback(character);\n });\n }\n\n return block.merge({\n 'characterList': nextCharactersList\n });\n });\n\n return _draftJs.EditorState.push(editorState, contentState.merge({\n blockMap: nextContentBlocks,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n }), 'update-selection-character-list');\n};\n\nvar getSelectedBlocks = exports.getSelectedBlocks = function getSelectedBlocks(editorState) {\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n\n var startKey = selectionState.getStartKey();\n var endKey = selectionState.getEndKey();\n var isSameBlock = startKey === endKey;\n var startingBlock = contentState.getBlockForKey(startKey);\n var selectedBlocks = [startingBlock];\n\n if (!isSameBlock) {\n var blockKey = startKey;\n\n while (blockKey !== endKey) {\n var nextBlock = contentState.getBlockAfter(blockKey);\n selectedBlocks.push(nextBlock);\n blockKey = nextBlock.getKey();\n }\n }\n\n return selectedBlocks;\n};\n\nvar setSelectionBlockData = exports.setSelectionBlockData = function setSelectionBlockData(editorState, blockData, override) {\n\n var newBlockData = override ? blockData : Object.assign({}, getSelectionBlockData(editorState).toJS(), blockData);\n\n Object.keys(newBlockData).forEach(function (key) {\n if (newBlockData.hasOwnProperty(key) && newBlockData[key] === undefined) {\n delete newBlockData[key];\n }\n });\n\n return (0, _draftjsUtils.setBlockData)(editorState, newBlockData);\n};\n\nvar getSelectionBlockData = exports.getSelectionBlockData = function getSelectionBlockData(editorState, name) {\n var blockData = getSelectionBlock(editorState).getData();\n return name ? blockData.get(name) : blockData;\n};\n\nvar getSelectionBlockType = exports.getSelectionBlockType = function getSelectionBlockType(editorState) {\n return getSelectionBlock(editorState).getType();\n};\n\nvar getSelectionText = exports.getSelectionText = function getSelectionText(editorState) {\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n\n if (selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return '';\n }\n\n var anchorKey = selectionState.getAnchorKey();\n var currentContentBlock = contentState.getBlockForKey(anchorKey);\n var start = selectionState.getStartOffset();\n var end = selectionState.getEndOffset();\n\n return currentContentBlock.getText().slice(start, end);\n};\n\nvar toggleSelectionBlockType = exports.toggleSelectionBlockType = function toggleSelectionBlockType(editorState, blockType) {\n\n if (selectionContainsStrictBlock(editorState)) {\n return editorState;\n }\n\n return _draftJs.RichUtils.toggleBlockType(editorState, blockType);\n};\n\nvar getSelectionEntityType = exports.getSelectionEntityType = function getSelectionEntityType(editorState) {\n\n var entityKey = (0, _draftjsUtils.getSelectionEntity)(editorState);\n\n if (entityKey) {\n var entity = editorState.getCurrentContent().getEntity(entityKey);\n return entity ? entity.get('type') : null;\n }\n\n return null;\n};\n\nvar getSelectionEntityData = exports.getSelectionEntityData = function getSelectionEntityData(editorState, type) {\n\n var entityKey = (0, _draftjsUtils.getSelectionEntity)(editorState);\n\n if (entityKey) {\n var entity = editorState.getCurrentContent().getEntity(entityKey);\n if (entity && entity.get('type') === type) {\n return entity.getData();\n } else {\n return {};\n }\n } else {\n return {};\n }\n};\n\nvar toggleSelectionEntity = exports.toggleSelectionEntity = function toggleSelectionEntity(editorState, entity) {\n\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n\n if (selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return editorState;\n }\n\n if (!entity || !entity.type || getSelectionEntityType(editorState) === entity.type) {\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.applyEntity(contentState, selectionState, null), 'apply-entity');\n }\n\n try {\n\n var nextContentState = contentState.createEntity(entity.type, entity.mutability, entity.data);\n var entityKey = nextContentState.getLastCreatedEntityKey();\n\n var nextEditorState = _draftJs.EditorState.set(editorState, {\n currentContent: nextContentState\n });\n\n return _draftJs.EditorState.push(nextEditorState, _draftJs.Modifier.applyEntity(nextContentState, selectionState, entityKey), 'apply-entity');\n } catch (error) {\n console.warn(error);\n return editorState;\n }\n};\n\nvar toggleSelectionLink = exports.toggleSelectionLink = function toggleSelectionLink(editorState, href, target) {\n\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n\n var entityData = { href: href, target: target };\n\n if (selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return editorState;\n }\n\n if (href === false) {\n return _draftJs.RichUtils.toggleLink(editorState, selectionState, null);\n }\n\n if (href === null) {\n delete entityData.href;\n }\n\n try {\n\n var nextContentState = contentState.createEntity('LINK', 'MUTABLE', entityData);\n var entityKey = nextContentState.getLastCreatedEntityKey();\n\n var nextEditorState = _draftJs.EditorState.set(editorState, {\n currentContent: nextContentState\n });\n\n nextEditorState = _draftJs.RichUtils.toggleLink(nextEditorState, selectionState, entityKey);\n nextEditorState = _draftJs.EditorState.forceSelection(nextEditorState, selectionState.merge({\n anchorOffset: selectionState.getEndOffset(),\n focusOffset: selectionState.getEndOffset()\n }));\n\n nextEditorState = _draftJs.EditorState.push(nextEditorState, _draftJs.Modifier.insertText(nextEditorState.getCurrentContent(), nextEditorState.getSelection(), ''), 'insert-text');\n\n return nextEditorState;\n } catch (error) {\n console.warn(error);\n return editorState;\n }\n};\n\nvar getSelectionInlineStyle = exports.getSelectionInlineStyle = function getSelectionInlineStyle(editorState) {\n return editorState.getCurrentInlineStyle();\n};\n\nvar selectionHasInlineStyle = exports.selectionHasInlineStyle = function selectionHasInlineStyle(editorState, style) {\n return getSelectionInlineStyle(editorState).has(style.toUpperCase());\n};\n\nvar toggleSelectionInlineStyle = exports.toggleSelectionInlineStyle = function toggleSelectionInlineStyle(editorState, style) {\n var prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n\n var nextEditorState = editorState;\n style = prefix + style.toUpperCase();\n\n if (prefix) {\n\n nextEditorState = updateEachCharacterOfSelection(nextEditorState, function (characterMetadata) {\n\n return characterMetadata.toJS().style.reduce(function (characterMetadata, characterStyle) {\n if (characterStyle.indexOf(prefix) === 0 && style !== characterStyle) {\n return _draftJs.CharacterMetadata.removeStyle(characterMetadata, characterStyle);\n } else {\n return characterMetadata;\n }\n }, characterMetadata);\n });\n }\n\n return _draftJs.RichUtils.toggleInlineStyle(nextEditorState, style);\n};\n\nvar removeSelectionInlineStyles = exports.removeSelectionInlineStyles = function removeSelectionInlineStyles(editorState) {\n\n return updateEachCharacterOfSelection(editorState, function (characterMetadata) {\n return characterMetadata.merge({\n style: _immutable2.default.OrderedSet([])\n });\n });\n};\n\nvar toggleSelectionAlignment = exports.toggleSelectionAlignment = function toggleSelectionAlignment(editorState, alignment) {\n return setSelectionBlockData(editorState, {\n textAlign: getSelectionBlockData(editorState, 'textAlign') !== alignment ? alignment : undefined\n });\n};\n\nvar toggleSelectionIndent = exports.toggleSelectionIndent = function toggleSelectionIndent(editorState, textIndent) {\n var maxIndent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 6;\n\n return textIndent < 0 || textIndent > maxIndent || isNaN(textIndent) ? editorState : setSelectionBlockData(editorState, {\n textIndent: textIndent || undefined\n });\n};\n\nvar increaseSelectionIndent = exports.increaseSelectionIndent = function increaseSelectionIndent(editorState) {\n var maxIndent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n\n var currentIndent = getSelectionBlockData(editorState, 'textIndent') || 0;\n return toggleSelectionIndent(editorState, currentIndent + 1, maxIndent);\n};\n\nvar decreaseSelectionIndent = exports.decreaseSelectionIndent = function decreaseSelectionIndent(editorState) {\n var currentIndent = getSelectionBlockData(editorState, 'textIndent') || 0;\n return toggleSelectionIndent(editorState, currentIndent - 1);\n};\n\nvar toggleSelectionColor = exports.toggleSelectionColor = function toggleSelectionColor(editorState, color) {\n return toggleSelectionInlineStyle(editorState, color.replace('#', ''), 'COLOR-');\n};\n\nvar toggleSelectionBackgroundColor = exports.toggleSelectionBackgroundColor = function toggleSelectionBackgroundColor(editorState, color) {\n return toggleSelectionInlineStyle(editorState, color.replace('#', ''), 'BGCOLOR-');\n};\n\nvar toggleSelectionFontSize = exports.toggleSelectionFontSize = function toggleSelectionFontSize(editorState, fontSize) {\n return toggleSelectionInlineStyle(editorState, fontSize, 'FONTSIZE-');\n};\n\nvar toggleSelectionLineHeight = exports.toggleSelectionLineHeight = function toggleSelectionLineHeight(editorState, lineHeight) {\n return toggleSelectionInlineStyle(editorState, lineHeight, 'LINEHEIGHT-');\n};\n\nvar toggleSelectionFontFamily = exports.toggleSelectionFontFamily = function toggleSelectionFontFamily(editorState, fontFamily) {\n return toggleSelectionInlineStyle(editorState, fontFamily, 'FONTFAMILY-');\n};\n\nvar toggleSelectionLetterSpacing = exports.toggleSelectionLetterSpacing = function toggleSelectionLetterSpacing(editorState, letterSpacing) {\n return toggleSelectionInlineStyle(editorState, letterSpacing, 'LETTERSPACING-');\n};\n\nvar insertText = exports.insertText = function insertText(editorState, text, inlineStyle, entity) {\n\n var selectionState = editorState.getSelection();\n var currentSelectedBlockType = getSelectionBlockType(editorState);\n\n if (currentSelectedBlockType === 'atomic') {\n return editorState;\n }\n\n var entityKey = void 0;\n var contentState = editorState.getCurrentContent();\n\n if (entity && entity.type) {\n contentState = contentState.createEntity(entity.type, entity.mutability || 'MUTABLE', entity.data || entityData);\n entityKey = contentState.getLastCreatedEntityKey();\n }\n\n if (!selectionState.isCollapsed()) {\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.replaceText(contentState, selectionState, text, inlineStyle, entityKey), 'replace-text');\n } else {\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.insertText(contentState, selectionState, text, inlineStyle, entityKey), 'insert-text');\n }\n};\n\nvar insertHTML = exports.insertHTML = function insertHTML(editorState, htmlString, source) {\n\n if (!htmlString) {\n return editorState;\n }\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n var options = editorState.convertOptions || {};\n\n try {\n var _convertFromRaw = (0, _draftJs.convertFromRaw)((0, _braftConvert.convertHTMLToRaw)(htmlString, options, source)),\n blockMap = _convertFromRaw.blockMap;\n\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.replaceWithFragment(contentState, selectionState, blockMap), 'insert-fragment');\n } catch (error) {\n console.warn(error);\n return editorState;\n }\n};\n\nvar insertAtomicBlock = exports.insertAtomicBlock = function insertAtomicBlock(editorState, type) {\n var immutable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n\n if (selectionContainsStrictBlock(editorState)) {\n return insertAtomicBlock(selectNextBlock(editorState, getSelectionBlock(editorState)), type, immutable, data);\n }\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n\n if (!selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return editorState;\n }\n\n var contentStateWithEntity = contentState.createEntity(type, immutable ? 'IMMUTABLE' : 'MUTABLE', data);\n var entityKey = contentStateWithEntity.getLastCreatedEntityKey();\n var newEditorState = _draftJs.AtomicBlockUtils.insertAtomicBlock(editorState, entityKey, ' ');\n\n return newEditorState;\n};\n\nvar insertHorizontalLine = exports.insertHorizontalLine = function insertHorizontalLine(editorState) {\n return insertAtomicBlock(editorState, 'HR');\n};\n\nvar insertMedias = exports.insertMedias = function insertMedias(editorState) {\n var medias = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n\n if (!medias.length) {\n return editorState;\n }\n\n return medias.reduce(function (editorState, media) {\n var url = media.url,\n link = media.link,\n link_target = media.link_target,\n name = media.name,\n type = media.type,\n width = media.width,\n height = media.height,\n meta = media.meta;\n\n return insertAtomicBlock(editorState, type, true, { url: url, link: link, link_target: link_target, name: name, type: type, width: width, height: height, meta: meta });\n }, editorState);\n};\n\nvar setMediaData = exports.setMediaData = function setMediaData(editorState, entityKey, data) {\n return _draftJs.EditorState.push(editorState, editorState.getCurrentContent().mergeEntityData(entityKey, data), 'change-block-data');\n};\n\nvar removeMedia = exports.removeMedia = function removeMedia(editorState, mediaBlock) {\n return removeBlock(editorState, mediaBlock);\n};\n\nvar setMediaPosition = exports.setMediaPosition = function setMediaPosition(editorState, mediaBlock, position) {\n\n var newPosition = {};\n var float = position.float,\n alignment = position.alignment;\n\n\n if (typeof float !== 'undefined') {\n newPosition.float = mediaBlock.getData().get('float') === float ? null : float;\n }\n\n if (typeof alignment !== 'undefined') {\n newPosition.alignment = mediaBlock.getData().get('alignment') === alignment ? null : alignment;\n }\n\n return setSelectionBlockData(selectBlock(editorState, mediaBlock), newPosition);\n};\n\nvar clear = exports.clear = function clear(editorState) {\n\n var contentState = editorState.getCurrentContent();\n\n var firstBlock = contentState.getFirstBlock();\n var lastBlock = contentState.getLastBlock();\n\n var allSelected = new _draftJs.SelectionState({\n anchorKey: firstBlock.getKey(),\n anchorOffset: 0,\n focusKey: lastBlock.getKey(),\n focusOffset: lastBlock.getLength(),\n hasFocus: true\n });\n\n return _draftJs.RichUtils.toggleBlockType(_draftJs.EditorState.push(editorState, _draftJs.Modifier.removeRange(contentState, allSelected, 'backward'), 'remove-range'), 'unstyled');\n};\n\nvar handleKeyCommand = exports.handleKeyCommand = function handleKeyCommand(editorState, command) {\n return _draftJs.RichUtils.handleKeyCommand(editorState, command);\n};\n\nvar undo = exports.undo = function undo(editorState) {\n return _draftJs.EditorState.undo(editorState);\n};\n\nvar redo = exports.redo = function redo(editorState) {\n return _draftJs.EditorState.redo(editorState);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar braftUniqueIndex = 0;\n\nvar UniqueIndex = exports.UniqueIndex = function UniqueIndex() {\n return braftUniqueIndex += 1;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _namedColors = {\n \"aliceblue\": \"#f0f8ff\",\n \"antiquewhite\": \"#faebd7\",\n \"aqua\": \"#00ffff\",\n \"aquamarine\": \"#7fffd4\",\n \"azure\": \"#f0ffff\",\n \"beige\": \"#f5f5dc\",\n \"bisque\": \"#ffe4c4\",\n \"black\": \"#000000\",\n \"blanchedalmond\": \"#ffebcd\",\n \"blue\": \"#0000ff\",\n \"blueviolet\": \"#8a2be2\",\n \"brown\": \"#a52a2a\",\n \"burlywood\": \"#deb887\",\n \"cadetblue\": \"#5f9ea0\",\n \"chartreuse\": \"#7fff00\",\n \"chocolate\": \"#d2691e\",\n \"coral\": \"#ff7f50\",\n \"cornflowerblue\": \"#6495ed\",\n \"cornsilk\": \"#fff8dc\",\n \"crimson\": \"#dc143c\",\n \"cyan\": \"#00ffff\",\n \"darkblue\": \"#00008b\",\n \"darkcyan\": \"#008b8b\",\n \"darkgoldenrod\": \"#b8860b\",\n \"darkgray\": \"#a9a9a9\",\n \"darkgreen\": \"#006400\",\n \"darkkhaki\": \"#bdb76b\",\n \"darkmagenta\": \"#8b008b\",\n \"darkolivegreen\": \"#556b2f\",\n \"darkorange\": \"#ff8c00\",\n \"darkorchid\": \"#9932cc\",\n \"darkred\": \"#8b0000\",\n \"darksalmon\": \"#e9967a\",\n \"darkseagreen\": \"#8fbc8f\",\n \"darkslateblue\": \"#483d8b\",\n \"darkslategray\": \"#2f4f4f\",\n \"darkturquoise\": \"#00ced1\",\n \"darkviolet\": \"#9400d3\",\n \"deeppink\": \"#ff1493\",\n \"deepskyblue\": \"#00bfff\",\n \"dimgray\": \"#696969\",\n \"dodgerblue\": \"#1e90ff\",\n \"firebrick\": \"#b22222\",\n \"floralwhite\": \"#fffaf0\",\n \"forestgreen\": \"#228b22\",\n \"fuchsia\": \"#ff00ff\",\n \"gainsboro\": \"#dcdcdc\",\n \"ghostwhite\": \"#f8f8ff\",\n \"gold\": \"#ffd700\",\n \"goldenrod\": \"#daa520\",\n \"gray\": \"#808080\",\n \"green\": \"#008000\",\n \"greenyellow\": \"#adff2f\",\n \"honeydew\": \"#f0fff0\",\n \"hotpink\": \"#ff69b4\",\n \"indianred \": \"#cd5c5c\",\n \"indigo\": \"#4b0082\",\n \"ivory\": \"#fffff0\",\n \"khaki\": \"#f0e68c\",\n \"lavender\": \"#e6e6fa\",\n \"lavenderblush\": \"#fff0f5\",\n \"lawngreen\": \"#7cfc00\",\n \"lemonchiffon\": \"#fffacd\",\n \"lightblue\": \"#add8e6\",\n \"lightcoral\": \"#f08080\",\n \"lightcyan\": \"#e0ffff\",\n \"lightgoldenrodyellow\": \"#fafad2\",\n \"lightgrey\": \"#d3d3d3\",\n \"lightgreen\": \"#90ee90\",\n \"lightpink\": \"#ffb6c1\",\n \"lightsalmon\": \"#ffa07a\",\n \"lightseagreen\": \"#20b2aa\",\n \"lightskyblue\": \"#87cefa\",\n \"lightslategray\": \"#778899\",\n \"lightsteelblue\": \"#b0c4de\",\n \"lightyellow\": \"#ffffe0\",\n \"lime\": \"#00ff00\",\n \"limegreen\": \"#32cd32\",\n \"linen\": \"#faf0e6\",\n \"magenta\": \"#ff00ff\",\n \"maroon\": \"#800000\",\n \"mediumaquamarine\": \"#66cdaa\",\n \"mediumblue\": \"#0000cd\",\n \"mediumorchid\": \"#ba55d3\",\n \"mediumpurple\": \"#9370d8\",\n \"mediumseagreen\": \"#3cb371\",\n \"mediumslateblue\": \"#7b68ee\",\n \"mediumspringgreen\": \"#00fa9a\",\n \"mediumturquoise\": \"#48d1cc\",\n \"mediumvioletred\": \"#c71585\",\n \"midnightblue\": \"#191970\",\n \"mintcream\": \"#f5fffa\",\n \"mistyrose\": \"#ffe4e1\",\n \"moccasin\": \"#ffe4b5\",\n \"navajowhite\": \"#ffdead\",\n \"navy\": \"#000080\",\n \"oldlace\": \"#fdf5e6\",\n \"olive\": \"#808000\",\n \"olivedrab\": \"#6b8e23\",\n \"orange\": \"#ffa500\",\n \"orangered\": \"#ff4500\",\n \"orchid\": \"#da70d6\",\n \"palegoldenrod\": \"#eee8aa\",\n \"palegreen\": \"#98fb98\",\n \"paleturquoise\": \"#afeeee\",\n \"palevioletred\": \"#d87093\",\n \"papayawhip\": \"#ffefd5\",\n \"peachpuff\": \"#ffdab9\",\n \"peru\": \"#cd853f\",\n \"pink\": \"#ffc0cb\",\n \"plum\": \"#dda0dd\",\n \"powderblue\": \"#b0e0e6\",\n \"purple\": \"#800080\",\n \"rebeccapurple\": \"#663399\",\n \"red\": \"#ff0000\",\n \"rosybrown\": \"#bc8f8f\",\n \"royalblue\": \"#4169e1\",\n \"saddlebrown\": \"#8b4513\",\n \"salmon\": \"#fa8072\",\n \"sandybrown\": \"#f4a460\",\n \"seagreen\": \"#2e8b57\",\n \"seashell\": \"#fff5ee\",\n \"sienna\": \"#a0522d\",\n \"silver\": \"#c0c0c0\",\n \"skyblue\": \"#87ceeb\",\n \"slateblue\": \"#6a5acd\",\n \"slategray\": \"#708090\",\n \"snow\": \"#fffafa\",\n \"springgreen\": \"#00ff7f\",\n \"steelblue\": \"#4682b4\",\n \"tan\": \"#d2b48c\",\n \"teal\": \"#008080\",\n \"thistle\": \"#d8bfd8\",\n \"tomato\": \"#ff6347\",\n \"turquoise\": \"#40e0d0\",\n \"violet\": \"#ee82ee\",\n \"wheat\": \"#f5deb3\",\n \"white\": \"#ffffff\",\n \"whitesmoke\": \"#f5f5f5\",\n \"yellow\": \"#ffff00\",\n \"yellowgreen\": \"#9acd32\"\n};\n\nvar _getHexColor = function _getHexColor(color) {\n\n color = color.replace('color:', '').replace(';', '').replace(' ', '');\n\n if (/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(color)) {\n return color;\n } else if (namedColors[color]) {\n return namedColors[color];\n } else if (color.indexOf('rgb') === 0) {\n\n var rgbArray = color.split(',');\n var convertedColor = rgbArray.length < 3 ? null : '#' + [rgbArray[0], rgbArray[1], rgbArray[2]].map(function (x) {\n var hex = parseInt(x.replace(/\\D/g, ''), 10).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n\n return (/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(convertedColor) ? convertedColor : null\n );\n } else {\n return null;\n }\n};\n\nvar namedColors = exports.namedColors = _namedColors;\nvar getHexColor = exports.getHexColor = _getHexColor;\n\nvar detectColorsFromHTMLString = exports.detectColorsFromHTMLString = function detectColorsFromHTMLString(html) {\n return typeof html !== 'string' ? [] : (html.match(/color:[^;]{3,24};/g) || []).map(getHexColor).filter(function (color) {\n return color;\n });\n};\n\nvar detectColorsFromDraftState = exports.detectColorsFromDraftState = function detectColorsFromDraftState(draftState) {\n\n var result = [];\n\n if (!draftState || !draftState.blocks || !draftState.blocks.length) {\n return result;\n }\n\n draftState.blocks.forEach(function (block) {\n if (block && block.inlineStyleRanges && block.inlineStyleRanges.length) {\n block.inlineStyleRanges.forEach(function (inlineStyle) {\n if (inlineStyle.style && inlineStyle.style.indexOf('COLOR-') >= 0) {\n result.push('#' + inlineStyle.style.split('COLOR-')[1]);\n }\n });\n }\n });\n\n return result.filter(function (color) {\n return color;\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorUtils = exports.BaseUtils = exports.ContentUtils = undefined;\n\nvar _content = require('./content');\n\nvar _ContentUtils = _interopRequireWildcard(_content);\n\nvar _base = require('./base');\n\nvar _BaseUtils = _interopRequireWildcard(_base);\n\nvar _color = require('./color');\n\nvar _ColorUtils = _interopRequireWildcard(_color);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar ContentUtils = exports.ContentUtils = _ContentUtils;\nvar BaseUtils = exports.BaseUtils = _BaseUtils;\nvar ColorUtils = exports.ColorUtils = _ColorUtils;","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"braft-utils\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"braft-utils\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"react\"), require(\"braft-utils\")) : factory(root[\"react\"], root[\"braft-utils\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__6__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 33);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 1:\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__1__;\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\n\n/***/ }),\n\n/***/ 33:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultEmoticons\", function() { return defaultEmoticons; });\n/* harmony import */ var _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);\n/* harmony import */ var _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var braft_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6);\n/* harmony import */ var braft_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(braft_utils__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _styles_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48);\n/* harmony import */ var _styles_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_styles_scss__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n // https://www.iconfinder.com/iconsets/emoji-18\n\nvar defaultEmoticons = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25].map(function (item) {\n return \"\".concat(item, \".png\");\n});\n\nvar insertEmoticon = function insertEmoticon(editor, editorState, src) {\n editor.setValue(braft_utils__WEBPACK_IMPORTED_MODULE_2__[\"ContentUtils\"].insertText(editorState, ' ', null, {\n type: 'EMOTICON',\n mutability: 'IMMUTABLE',\n data: {\n src: src\n }\n }));\n};\n\nvar controlRef = null;\n\nvar bindControlRef = function bindControlRef(ref) {\n return controlRef = ref;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n options = _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0___default()({\n emoticons: [],\n closeOnSelect: false,\n closeOnBlur: false\n }, options);\n var _options = options,\n emoticons = _options.emoticons,\n closeOnSelect = _options.closeOnSelect,\n closeOnBlur = _options.closeOnBlur,\n includeEditors = _options.includeEditors,\n excludeEditors = _options.excludeEditors;\n return {\n type: 'entity',\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n name: 'EMOTICON',\n control: function control(props) {\n return {\n key: 'EMOTICON',\n replace: 'emoji',\n type: 'dropdown',\n text: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"i\", {\n className: \"bfi-emoji\"\n }),\n showArrow: false,\n ref: bindControlRef,\n autoHide: closeOnBlur,\n component: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"braft-emoticon-picker\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"braft-emoticons-list\"\n }, emoticons.map(function (item, index) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"img\", {\n onClick: function onClick() {\n insertEmoticon(props.editor, props.editorState, item);\n closeOnSelect && controlRef && controlRef.hide();\n },\n key: index,\n src: item\n });\n })))\n };\n },\n mutability: 'IMMUTABLE',\n component: function component(props) {\n var entity = props.contentState.getEntity(props.entityKey);\n\n var _entity$getData = entity.getData(),\n src = _entity$getData.src;\n\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"span\", {\n className: \"braft-emoticon-in-editor\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"img\", {\n src: src\n }), props.children);\n },\n importer: function importer(nodeName, node) {\n if (nodeName.toLowerCase() === 'span' && node.classList && node.classList.contains('braft-emoticon-wrap')) {\n var imgNode = node.querySelector('img');\n var src = imgNode.getAttribute('src'); // 移除img节点以避免生成atomic block\n\n node.removeChild(imgNode);\n return {\n mutability: 'IMMUTABLE',\n data: {\n src: src\n }\n };\n }\n },\n exporter: function exporter(entityObject, initialText) {\n var src = entityObject.data.src;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"span\", {\n className: \"braft-emoticon-wrap\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"img\", {\n src: src\n }), initialText);\n }\n };\n});\n\n/***/ }),\n\n/***/ 48:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 5:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(2);\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__6__;\n\n/***/ })\n\n/******/ });\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 34);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 2:\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\n\n/***/ }),\n\n/***/ 34:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);\n/* harmony import */ var _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar getSelectedTextLength = function getSelectedTextLength(editorState) {\n var currentSelection = editorState.getSelection();\n var isCollapsed = currentSelection.isCollapsed();\n var length = 0;\n\n if (!isCollapsed) {\n var currentContent = editorState.getCurrentContent();\n var startKey = currentSelection.getStartKey();\n var endKey = currentSelection.getEndKey();\n var startBlock = currentContent.getBlockForKey(startKey);\n var isStartAndEndBlockAreTheSame = startKey === endKey;\n var startBlockTextLength = startBlock.getLength();\n var startSelectedTextLength = startBlockTextLength - currentSelection.getStartOffset();\n var endSelectedTextLength = currentSelection.getEndOffset();\n var keyAfterEnd = currentContent.getKeyAfter(endKey);\n\n if (isStartAndEndBlockAreTheSame) {\n length += currentSelection.getEndOffset() - currentSelection.getStartOffset();\n } else {\n var currentKey = startKey;\n\n while (currentKey && currentKey !== keyAfterEnd) {\n if (currentKey === startKey) {\n length += startSelectedTextLength + 1;\n } else if (currentKey === endKey) {\n length += endSelectedTextLength;\n } else {\n length += currentContent.getBlockForKey(currentKey).getLength() + 1;\n }\n\n currentKey = currentContent.getKeyAfter(currentKey);\n }\n }\n }\n\n return length;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n options = _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0___default()({\n defaultValue: Infinity\n }, options);\n var _options = options,\n includeEditors = _options.includeEditors,\n excludeEditors = _options.excludeEditors,\n defaultValue = _options.defaultValue;\n return {\n type: 'prop-interception',\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n interceptor: function interceptor(editorProps) {\n var maxLength = editorProps.maxLength || defaultValue;\n\n editorProps.handleBeforeInput = function (_, editorState) {\n if (maxLength === Infinity) {\n return 'not-handled';\n }\n\n var currentContentLength = editorState.toText().length;\n var selectedTextLength = getSelectedTextLength(editorState);\n\n if (currentContentLength - selectedTextLength > maxLength - 1) {\n editorProps.onReachMaxLength && editorProps.onReachMaxLength(maxLength);\n return 'handled';\n }\n };\n\n editorProps.handlePastedText = function (pastedText, _, editorState) {\n if (maxLength === Infinity) {\n return 'not-handled';\n }\n\n var currentContentLength = editorState.toText().length;\n var selectedTextLength = getSelectedTextLength(editorState);\n\n if (currentContentLength + pastedText.length - selectedTextLength > maxLength) {\n editorProps.onReachMaxLength && editorProps.onReachMaxLength(maxLength);\n return 'handled';\n }\n };\n\n return editorProps;\n }\n };\n});\n\n/***/ }),\n\n/***/ 5:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(2);\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;\n\n/***/ })\n\n/******/ });\n});","import React, { useState } from \"react\";\nimport BraftEditor, { ControlType } from \"braft-editor\";\nimport \"braft-editor/dist/index.css\";\n\n// 引入表情包扩展模块样式文件\nimport 'braft-extensions/dist/emoticon.css'\n// 引入表情包扩展模块和默认表情包列表\nimport Emoticon, { defaultEmoticons } from 'braft-extensions/dist/emoticon';\nimport MaxLength from 'braft-extensions/dist/max-length'\n\nconst lengthOptions = {\n defaultValue: 100, // 指定默认限制数,如不指定则为Infinity(无限)\n // includeEditors: ['editor-id-1'], // 指定该模块对哪些BraftEditor生效,不传此属性则对所有BraftEditor有效\n // excludeEditors: ['editor-id-2'], // 指定该模块对哪些BraftEditor无效\n}\nBraftEditor.use(MaxLength(lengthOptions))\n\n// 转换默认表情包列表,让webpack可以正确加载到默认表情包中的图片,请确保已对png格式的文件配置了loader\n// 如果你使用的webpack版本不支持动态require,或者使用的其他打包工具,请勿使用此写法\nconst emoticons = defaultEmoticons.map((item: string) => require(`braft-extensions/dist/assets/${item}`))\n\n// 也可以使用自己的表情包资源,不受打包工具限制\n// const emoticons = ['http://path/to/emoticon-1.png', 'http://path/to/emoticon-2.png', 'http://path/to/emoticon-3.png', 'http://path/to/emoticon-4.png', ...]\n\nconst emotionOptions = {\n // includeEditors: ['editor-id-1'], // 指定该模块对哪些BraftEditor生效,不传此属性则对所有BraftEditor有效\n // excludeEditors: ['editor-id-2'], // 指定该模块对哪些BraftEditor无效\n emoticons: emoticons, // 指定可用表情图片列表,默认为空\n closeOnBlur: true, // 指定是否在点击表情选择器之外的地方时关闭表情选择器,默认false\n closeOnSelect: false // 指定是否在选择表情后关闭表情选择器,默认false\n}\n\nBraftEditor.use(Emoticon(emotionOptions))\n\nexport const BarftEditorPage = () => {\n const controls: ControlType[] = [\n \"bold\",\n \"italic\",\n \"underline\",\n \"separator\",\n \"link\",\n \"emoji\",\n \"separator\",\n \"media\"\n ];\n\n const [editorState, setEditorState] = useState(\n BraftEditor.createEditorState(\"<p>Hello <b>World!</b></p>\")\n );\n\n return (\n <div className=\"editor-wrapper\">\n <BraftEditor\n value={editorState}\n onChange={setEditorState}\n controls={controls}\n contentStyle={{\n height: 210,\n boxShadow: \"inset 0 1px 3px rgba(0,0,0,.1)\"\n }}\n />\n </div>\n );\n};\n\nexport default BarftEditorPage;","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Editor, EditorState, DraftEditorCommand, RichUtils, Modifier, ContentState, convertToRaw, ContentBlock, CompositeDecorator, Entity, SelectionState, AtomicBlockUtils } from \"draft-js\";\nimport styles from \"./RichTextEditor.less\";\n\ninterface RichTextEditorProps {}\ninterface RichTextEditorState {\n editorState: EditorState;\n}\n\n// 自定义组件,用于超链接\nconst Link = (props: any) => {\n // 这里通过contentState来获取entity�,之后通过getData获取entity中包含的数据\n const { url } = props.contentState.getEntity(props.entityKey).getData();\n return (\n <a href={url}>\n {props.children}\n </a>\n )\n}\n// decorator,用于超链接\nconst decorator = new CompositeDecorator([\n {\n strategy (contentBlock, callback, contentState) {\n\n // 这个方法接收2个函数作为参数,如果第一个参数的函数执行时�返回true,就会执行第二个参数函数,同时会�将匹配的�字符的起始位置和结束位置传递给第二个参数。\n contentBlock.findEntityRanges(\n (character) => {\n const entityKey = character.getEntity();\n return (\n entityKey !== null &&\n contentState.getEntity(entityKey).getType() === 'LINK'\n );\n }, (...arr) => {\n callback(...arr)\n }\n );\n },\n component: Link\n },\n {\n strategy (contentBlock, callback, contentState) {\n contentBlock.findEntityRanges(\n (character) => {\n const entityKey = character.getEntity();\n return (\n entityKey !== null &&\n contentState.getEntity(entityKey).getType() === 'EMOJI'\n );\n }, (...arr) => {\n callback(...arr);\n }\n )\n },\n // component: (props: any) => (<span style={{ color: 'red' }}>[Emoji]</span>)\n component: (props: any) => (\n <i style={{\n display:'inline-block',\n height:'18px',\n width:'18px',\n backgroundImage:`url(https://i.pinimg.com/originals/03/7e/79/037e79b2fb52127537be79110891ae3f.png)`,\n backgroundSize:'100% 100%',\n color:'transparent'\n }}>{`e`}</i>)\n }\n]);\n\nclass RichTextEditor extends React.Component<\n RichTextEditorProps,\n RichTextEditorState\n> {\n constructor(props: RichTextEditorProps) {\n super(props);\n this.state = {\n editorState: EditorState.createEmpty(decorator)\n };\n this.onChange = (editorState: EditorState) =>\n this.setState({ editorState });\n this.handleKeyCommand = this.handleKeyCommand.bind(this);\n this.defaultBlockStyleFn = this.defaultBlockStyleFn.bind(this);\n }\n\n onChange: (editorState: EditorState) => void;\n handleKeyCommand(command: DraftEditorCommand, editorState: EditorState) {\n const newState = RichUtils.handleKeyCommand(editorState, command);\n console.log('command: ', command);\n console.log('newState: ', newState);\n if (newState) {\n this.onChange(newState);\n return \"handled\";\n }\n\n switch (command) {\n case 'backspace': \n const contentState = editorState.getCurrentContent();\n const selectionState = editorState.getSelection();\n const [startOffset, endOffset] = [selectionState.getStartOffset(), selectionState.getEndOffset()];\n if (startOffset === endOffset) {\n // 未选中状态\n console.log(selectionState.getAnchorKey());\n }\n // 选中状态\n\n break;\n case 'backspace-word': \n case 'backspace-to-start-of-line':\n break;\n }\n \n return \"not-handled\";\n }\n\n _onBoldClick() {\n this.onChange(RichUtils.toggleInlineStyle(this.state.editorState, 'BOLD'));\n }\n\n _onLinkClick() {\n const { editorState } = this.state;\n const contentState = editorState.getCurrentContent();\n const selectionState = editorState.getSelection();\n const contentStateWithEntity = contentState.createEntity('LINK', 'MUTABLE', {\n url: 'http://www.zombo.com',\n });\n const entityKey = contentStateWithEntity.getLastCreatedEntityKey();\n const contentStateWithLink = Modifier.applyEntity(\n contentStateWithEntity,\n selectionState,\n entityKey,\n );\n const newEditorState = EditorState.push(editorState, contentStateWithLink, 'apply-entity');\n this.onChange(newEditorState);\n }\n\n _onEmojiClick(e: React.MouseEvent, emojiCode: string) {\n const { editorState } = this.state;\n const contentState = editorState.getCurrentContent();\n const selectionState = editorState.getSelection();\n const EMOJIEntity: ContentState = contentState.createEntity('EMOJI', 'IMMUTABLE', { emojiCode });\n const entityKey = EMOJIEntity.getLastCreatedEntityKey();\n const ncsWithEntity = Modifier.insertText(contentState, selectionState, 'e', undefined, entityKey);\n const newEditorState = EditorState.push(editorState, ncsWithEntity, 'insert-characters');\n // const newEditorState = AtomicBlockUtils.insertAtomicBlock(\n // editorState,\n // entityKey,\n // ' '\n // );\n this.onChange(newEditorState);\n }\n\n _onCheckRange() {\n console.log(this.state.editorState.getCurrentContent());\n console.log(convertToRaw(this.state.editorState.getCurrentContent()));\n }\n\n defaultBlockStyleFn(contentBlock: ContentBlock) {\n const type = contentBlock.getType();\n return \"\";\n }\n\n defaultBlockRenderFn(contentBlock: ContentBlock) {\n const type = contentBlock.getType();\n return contentBlock;\n }\n\n render() {\n const { editorState } = this.state;\n return (\n <div className={styles.wrapper}>\n <div className={styles.btnListWrapper}>\n <button onClick={this._onBoldClick.bind(this)}>Bold</button>\n <button onClick={this._onCheckRange.bind(this)}>Check</button>\n <button onClick={this._onLinkClick.bind(this)}>Link</button>\n <button onClick={(e: React.MouseEvent) => this._onEmojiClick(e, '0011')}>Emoji</button>\n </div>\n <div className={styles.editorWrapper}>\n <Editor\n editorState={editorState}\n blockStyleFn={this.defaultBlockStyleFn}\n blockRendererFn={this.defaultBlockRenderFn}\n handleKeyCommand={this.handleKeyCommand}\n onChange={this.onChange}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default RichTextEditor;\n","'use strict';\n\n/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n}\n\n/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nmodule.exports = isPlainObject;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// Should be no imports here!\nvar _a; // SOme things that should be evaluated before all else...\n\n\nvar hasSymbol = typeof Symbol !== \"undefined\";\nvar hasMap = typeof Map !== \"undefined\";\nvar hasSet = typeof Set !== \"undefined\";\n/**\r\n * The sentinel value returned by producers to replace the draft with undefined.\r\n */\n\nvar NOTHING = hasSymbol ? Symbol(\"immer-nothing\") : (_a = {}, _a[\"immer-nothing\"] = true, _a);\n/**\r\n * To let Immer treat your class instances as plain immutable objects\r\n * (albeit with a custom prototype), you must define either an instance property\r\n * or a static property on each of your custom classes.\r\n *\r\n * Otherwise, your class instance will never be drafted, which means it won't be\r\n * safe to mutate in a produce callback.\r\n */\n\nvar DRAFTABLE = hasSymbol ? Symbol(\"immer-draftable\") : \"__$immer_draftable\";\nvar DRAFT_STATE = hasSymbol ? Symbol(\"immer-state\") : \"__$immer_state\";\nvar iteratorSymbol = hasSymbol ? Symbol.iterator : \"@@iterator\";\n\n/* istanbul ignore next */\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } }\n };\n\n return extendStatics(d, b);\n}; // Ugly hack to resolve #502 and inherit built in Map / Set\n\n\nfunction __extends(d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = ( // @ts-ignore\n __.prototype = b.prototype, new __());\n}\n\nvar Archtype;\n\n(function (Archtype) {\n Archtype[Archtype[\"Object\"] = 0] = \"Object\";\n Archtype[Archtype[\"Array\"] = 1] = \"Array\";\n Archtype[Archtype[\"Map\"] = 2] = \"Map\";\n Archtype[Archtype[\"Set\"] = 3] = \"Set\";\n})(Archtype || (Archtype = {}));\n\nvar ProxyType;\n\n(function (ProxyType) {\n ProxyType[ProxyType[\"ProxyObject\"] = 0] = \"ProxyObject\";\n ProxyType[ProxyType[\"ProxyArray\"] = 1] = \"ProxyArray\";\n ProxyType[ProxyType[\"ES5Object\"] = 2] = \"ES5Object\";\n ProxyType[ProxyType[\"ES5Array\"] = 3] = \"ES5Array\";\n ProxyType[ProxyType[\"Map\"] = 4] = \"Map\";\n ProxyType[ProxyType[\"Set\"] = 5] = \"Set\";\n})(ProxyType || (ProxyType = {}));\n\n/** Returns true if the given value is an Immer draft */\n\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\n/** Returns true if the given value can be drafted by Immer */\n\nfunction isDraftable(value) {\n if (!value) { return false; }\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor[DRAFTABLE] || isMap(value) || isSet(value);\n}\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\") { return false; }\n var proto = Object.getPrototypeOf(value);\n return !proto || proto === Object.prototype;\n}\nfunction original(value) {\n if (value && value[DRAFT_STATE]) {\n return value[DRAFT_STATE].base;\n } // otherwise return undefined\n\n}\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : typeof Object.getOwnPropertySymbols !== \"undefined\" ? function (obj) {\n return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));\n} :\n/* istanbul ignore next */\nObject.getOwnPropertyNames;\nfunction each(obj, iter) {\n if (getArchtype(obj) === Archtype.Object) {\n ownKeys(obj).forEach(function (key) {\n return iter(key, obj[key], obj);\n });\n } else {\n obj.forEach(function (entry, index) {\n return iter(index, entry, obj);\n });\n }\n}\nfunction isEnumerable(base, prop) {\n var desc = Object.getOwnPropertyDescriptor(base, prop);\n return desc && desc.enumerable ? true : false;\n}\nfunction getArchtype(thing) {\n /* istanbul ignore next */\n if (!thing) { die(); }\n\n if (thing[DRAFT_STATE]) {\n switch (thing[DRAFT_STATE].type) {\n case ProxyType.ES5Object:\n case ProxyType.ProxyObject:\n return Archtype.Object;\n\n case ProxyType.ES5Array:\n case ProxyType.ProxyArray:\n return Archtype.Array;\n\n case ProxyType.Map:\n return Archtype.Map;\n\n case ProxyType.Set:\n return Archtype.Set;\n }\n }\n\n return Array.isArray(thing) ? Archtype.Array : isMap(thing) ? Archtype.Map : isSet(thing) ? Archtype.Set : Archtype.Object;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === Archtype.Map ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n // @ts-ignore\n return getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n switch (getArchtype(thing)) {\n case Archtype.Map:\n thing.set(propOrOldValue, value);\n break;\n\n case Archtype.Set:\n thing.delete(propOrOldValue);\n thing.add(value);\n break;\n\n default:\n thing[propOrOldValue] = value;\n }\n}\nfunction is(x, y) {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return hasMap && target instanceof Map;\n}\nfunction isSet(target) {\n return hasSet && target instanceof Set;\n}\nfunction latest(state) {\n return state.copy || state.base;\n}\nfunction shallowCopy(base, invokeGetters) {\n if (invokeGetters === void 0) {\n invokeGetters = false;\n }\n\n if (Array.isArray(base)) { return base.slice(); }\n var clone = Object.create(Object.getPrototypeOf(base));\n ownKeys(base).forEach(function (key) {\n if (key === DRAFT_STATE) {\n return; // Never copy over draft state.\n }\n\n var desc = Object.getOwnPropertyDescriptor(base, key);\n var value = desc.value;\n\n if (desc.get) {\n if (!invokeGetters) {\n throw new Error(\"Immer drafts cannot have computed properties\");\n }\n\n value = desc.get.call(base);\n }\n\n if (desc.enumerable) {\n clone[key] = value;\n } else {\n Object.defineProperty(clone, key, {\n value: value,\n writable: true,\n configurable: true\n });\n }\n });\n return clone;\n}\nfunction freeze(obj, deep) {\n if (!isDraftable(obj) || isDraft(obj) || Object.isFrozen(obj)) { return; }\n var type = getArchtype(obj);\n\n if (type === Archtype.Set) {\n obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n } else if (type === Archtype.Map) {\n obj.set = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n\n Object.freeze(obj);\n if (deep) { each(obj, function (_, value) {\n return freeze(value, true);\n }); }\n}\n\nfunction dontMutateFrozenCollections() {\n throw new Error(\"This object has been frozen and should not be mutated\");\n}\n\nfunction createHiddenProperty(target, prop, value) {\n Object.defineProperty(target, prop, {\n value: value,\n enumerable: false,\n writable: true\n });\n}\n/* istanbul ignore next */\n\nfunction die() {\n throw new Error(\"Illegal state, please file a bug\");\n}\n\n/** Each scope represents a `produce` call. */\n\nvar ImmerScope =\n/** @class */\nfunction () {\n function ImmerScope(parent, immer) {\n this.drafts = [];\n this.parent = parent;\n this.immer = immer; // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n\n this.canAutoFreeze = true;\n }\n\n ImmerScope.prototype.usePatches = function (patchListener) {\n if (patchListener) {\n this.patches = [];\n this.inversePatches = [];\n this.patchListener = patchListener;\n }\n };\n\n ImmerScope.prototype.revoke = function () {\n this.leave();\n this.drafts.forEach(revoke); // @ts-ignore\n\n this.drafts = null;\n };\n\n ImmerScope.prototype.leave = function () {\n if (this === ImmerScope.current) {\n ImmerScope.current = this.parent;\n }\n };\n\n ImmerScope.enter = function (immer) {\n var scope = new ImmerScope(ImmerScope.current, immer);\n ImmerScope.current = scope;\n return scope;\n };\n\n return ImmerScope;\n}();\n\nfunction revoke(draft) {\n var state = draft[DRAFT_STATE];\n if (state.type === ProxyType.ProxyObject || state.type === ProxyType.ProxyArray) { state.revoke(); }else { state.revoked = true; }\n}\n\nfunction processResult(immer, result, scope) {\n var baseDraft = scope.drafts[0];\n var isReplaced = result !== undefined && result !== baseDraft;\n immer.willFinalize(scope, result, isReplaced);\n\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified) {\n scope.revoke();\n throw new Error(\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\"); // prettier-ignore\n }\n\n if (isDraftable(result)) {\n // Finalize the result in case it contains (or is) a subset of the draft.\n result = finalize(immer, result, scope);\n maybeFreeze(immer, result);\n }\n\n if (scope.patches) {\n scope.patches.push({\n op: \"replace\",\n path: [],\n value: result\n });\n scope.inversePatches.push({\n op: \"replace\",\n path: [],\n value: baseDraft[DRAFT_STATE].base\n });\n }\n } else {\n // Finalize the base draft.\n result = finalize(immer, baseDraft, scope, []);\n }\n\n scope.revoke();\n\n if (scope.patches) {\n scope.patchListener(scope.patches, scope.inversePatches);\n }\n\n return result !== NOTHING ? result : undefined;\n}\n\nfunction finalize(immer, draft, scope, path) {\n var state = draft[DRAFT_STATE];\n\n if (!state) {\n if (Object.isFrozen(draft)) { return draft; }\n return finalizeTree(immer, draft, scope);\n } // Never finalize drafts owned by another scope.\n\n\n if (state.scope !== scope) {\n return draft;\n }\n\n if (!state.modified) {\n maybeFreeze(immer, state.base, true);\n return state.base;\n }\n\n if (!state.finalized) {\n state.finalized = true;\n finalizeTree(immer, state.draft, scope, path); // We cannot really delete anything inside of a Set. We can only replace the whole Set.\n\n if (immer.onDelete && state.type !== ProxyType.Set) {\n // The `assigned` object is unreliable with ES5 drafts.\n if (immer.useProxies) {\n var assigned = state.assigned;\n each(assigned, function (prop, exists) {\n if (!exists) { immer.onDelete(state, prop); }\n });\n } else {\n var base = state.base,\n copy_1 = state.copy;\n each(base, function (prop) {\n if (!has(copy_1, prop)) { immer.onDelete(state, prop); }\n });\n }\n }\n\n if (immer.onCopy) {\n immer.onCopy(state);\n } // At this point, all descendants of `state.copy` have been finalized,\n // so we can be sure that `scope.canAutoFreeze` is accurate.\n\n\n if (immer.autoFreeze && scope.canAutoFreeze) {\n freeze(state.copy, false);\n }\n\n if (path && scope.patches) {\n generatePatches(state, path, scope.patches, scope.inversePatches);\n }\n }\n\n return state.copy;\n}\n\nfunction finalizeTree(immer, root, scope, rootPath) {\n var state = root[DRAFT_STATE];\n\n if (state) {\n if (state.type === ProxyType.ES5Object || state.type === ProxyType.ES5Array) {\n // Create the final copy, with added keys and without deleted keys.\n state.copy = shallowCopy(state.draft, true);\n }\n\n root = state.copy;\n }\n\n each(root, function (key, value) {\n return finalizeProperty(immer, scope, root, state, root, key, value, rootPath);\n });\n return root;\n}\n\nfunction finalizeProperty(immer, scope, root, rootState, parentValue, prop, childValue, rootPath) {\n if (childValue === parentValue) {\n throw Error(\"Immer forbids circular references\");\n } // In the `finalizeTree` method, only the `root` object may be a draft.\n\n\n var isDraftProp = !!rootState && parentValue === root;\n var isSetMember = isSet(parentValue);\n\n if (isDraft(childValue)) {\n var path = rootPath && isDraftProp && !isSetMember && // Set objects are atomic since they have no keys.\n !has(rootState.assigned, prop) // Skip deep patches for assigned keys.\n ? rootPath.concat(prop) : undefined; // Drafts owned by `scope` are finalized here.\n\n childValue = finalize(immer, childValue, scope, path);\n set(parentValue, prop, childValue); // Drafts from another scope must prevent auto-freezing.\n\n if (isDraft(childValue)) {\n scope.canAutoFreeze = false;\n }\n } // Unchanged draft properties are ignored.\n else if (isDraftProp && is(childValue, get(rootState.base, prop))) {\n return;\n } // Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n // TODO: the recursion over here looks weird, shouldn't non-draft stuff have it's own recursion?\n // especially the passing on of root and rootState doesn't make sense...\n else if (isDraftable(childValue) && !Object.isFrozen(childValue)) {\n each(childValue, function (key, grandChild) {\n return finalizeProperty(immer, scope, root, rootState, childValue, key, grandChild, rootPath);\n });\n maybeFreeze(immer, childValue);\n }\n\n if (isDraftProp && immer.onAssign && !isSetMember) {\n immer.onAssign(rootState, prop, childValue);\n }\n}\n\nfunction maybeFreeze(immer, value, deep) {\n if (deep === void 0) {\n deep = false;\n }\n\n if (immer.autoFreeze && !isDraft(value)) {\n freeze(value, deep);\n }\n}\n\n/**\r\n * Returns a new draft of the `base` object.\r\n *\r\n * The second argument is the parent draft-state (used internally).\r\n */\n\nfunction createProxy(base, parent) {\n var isArray = Array.isArray(base);\n var state = {\n type: isArray ? ProxyType.ProxyArray : ProxyType.ProxyObject,\n // Track which produce call this is associated with.\n scope: parent ? parent.scope : ImmerScope.current,\n // True for both shallow and deep changes.\n modified: false,\n // Used during finalization.\n finalized: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned: {},\n // The parent draft state.\n parent: parent,\n // The base state.\n base: base,\n // The base proxy.\n draft: null,\n // Any property proxies.\n drafts: {},\n // The base copy with any updated values.\n copy: null,\n // Called by the `produce` function.\n revoke: null,\n isManual: false\n }; // the traps must target something, a bit like the 'real' base.\n // but also, we need to be able to determine from the target what the relevant state is\n // (to avoid creating traps per instance to capture the state in closure,\n // and to avoid creating weird hidden properties as well)\n // So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n // Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\n var target = state;\n var traps = objectTraps;\n\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n } // TODO: optimization: might be faster, cheaper if we created a non-revocable proxy\n // and administrate revoking ourselves\n\n\n var _a = Proxy.revocable(target, traps),\n revoke = _a.revoke,\n proxy = _a.proxy;\n\n state.draft = proxy;\n state.revoke = revoke;\n return proxy;\n}\n/**\r\n * Object drafts\r\n */\n\nvar objectTraps = {\n get: function (state, prop) {\n if (prop === DRAFT_STATE) { return state; }\n var drafts = state.drafts; // Check for existing draft in unmodified state.\n\n if (!state.modified && has(drafts, prop)) {\n return drafts[prop];\n }\n\n var value = latest(state)[prop];\n\n if (state.finalized || !isDraftable(value)) {\n return value;\n } // Check for existing draft in modified state.\n\n\n if (state.modified) {\n // Assigned values are never drafted. This catches any drafts we created, too.\n if (value !== peek(state.base, prop)) { return value; } // Store drafts on the copy (when one exists).\n // @ts-ignore\n\n drafts = state.copy;\n }\n\n return drafts[prop] = state.scope.immer.createProxy(value, state);\n },\n has: function (state, prop) {\n return prop in latest(state);\n },\n ownKeys: function (state) {\n return Reflect.ownKeys(latest(state));\n },\n set: function (state, prop\n /* strictly not, but helps TS */\n , value) {\n if (!state.modified) {\n var baseValue = peek(state.base, prop); // Optimize based on value's truthiness. Truthy values are guaranteed to\n // never be undefined, so we can avoid the `in` operator. Lastly, truthy\n // values may be drafts, but falsy values are never drafts.\n\n var isUnchanged = value ? is(baseValue, value) || value === state.drafts[prop] : is(baseValue, value) && prop in state.base;\n if (isUnchanged) { return true; }\n prepareCopy(state);\n markChanged(state);\n }\n\n state.assigned[prop] = true; // @ts-ignore\n\n state.copy[prop] = value;\n return true;\n },\n deleteProperty: function (state, prop) {\n // The `undefined` check is a fast path for pre-existing keys.\n if (peek(state.base, prop) !== undefined || prop in state.base) {\n state.assigned[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else if (state.assigned[prop]) {\n // if an originally not assigned property was deleted\n delete state.assigned[prop];\n } // @ts-ignore\n\n\n if (state.copy) { delete state.copy[prop]; }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor: function (state, prop) {\n var owner = latest(state);\n var desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n\n if (desc) {\n desc.writable = true;\n desc.configurable = state.type !== ProxyType.ProxyArray || prop !== \"length\";\n }\n\n return desc;\n },\n defineProperty: function () {\n throw new Error(\"Object.defineProperty() cannot be used on an Immer draft\"); // prettier-ignore\n },\n getPrototypeOf: function (state) {\n return Object.getPrototypeOf(state.base);\n },\n setPrototypeOf: function () {\n throw new Error(\"Object.setPrototypeOf() cannot be used on an Immer draft\"); // prettier-ignore\n }\n};\n/**\r\n * Array drafts\r\n */\n\nvar arrayTraps = {};\neach(objectTraps, function (key, fn) {\n // @ts-ignore\n arrayTraps[key] = function () {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\n\narrayTraps.deleteProperty = function (state, prop) {\n if (isNaN(parseInt(prop))) {\n throw new Error(\"Immer only supports deleting array indices\"); // prettier-ignore\n }\n\n return objectTraps.deleteProperty.call(this, state[0], prop);\n};\n\narrayTraps.set = function (state, prop, value) {\n if (prop !== \"length\" && isNaN(parseInt(prop))) {\n throw new Error(\"Immer only supports setting array indices and the 'length' property\"); // prettier-ignore\n }\n\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\n/**\r\n * Map drafts\r\n */\n// Access a property without creating an Immer draft.\n\n\nfunction peek(draft, prop) {\n var state = draft[DRAFT_STATE];\n var desc = Reflect.getOwnPropertyDescriptor(state ? latest(state) : draft, prop);\n return desc && desc.value;\n}\n\nfunction markChanged(state) {\n if (!state.modified) {\n state.modified = true;\n\n if (state.type === ProxyType.ProxyObject || state.type === ProxyType.ProxyArray) {\n var copy_1 = state.copy = shallowCopy(state.base);\n each(state.drafts, function (key, value) {\n // @ts-ignore\n copy_1[key] = value;\n });\n state.drafts = undefined;\n }\n\n if (state.parent) {\n markChanged(state.parent);\n }\n }\n}\n\nfunction prepareCopy(state) {\n if (!state.copy) {\n state.copy = shallowCopy(state.base);\n }\n}\n\nfunction willFinalizeES5(scope, result, isReplaced) {\n scope.drafts.forEach(function (draft) {\n draft[DRAFT_STATE].finalizing = true;\n });\n\n if (!isReplaced) {\n if (scope.patches) {\n markChangesRecursively(scope.drafts[0]);\n } // This is faster when we don't care about which attributes changed.\n\n\n markChangesSweep(scope.drafts);\n } // When a child draft is returned, look for changes.\n else if (isDraft(result) && result[DRAFT_STATE].scope === scope) {\n markChangesSweep(scope.drafts);\n }\n}\nfunction createES5Proxy(base, parent) {\n var isArray = Array.isArray(base);\n var draft = clonePotentialDraft(base);\n each(draft, function (prop) {\n proxyProperty(draft, prop, isArray || isEnumerable(base, prop));\n });\n var state = {\n type: isArray ? ProxyType.ES5Array : ProxyType.ES5Object,\n scope: parent ? parent.scope : ImmerScope.current,\n modified: false,\n finalizing: false,\n finalized: false,\n assigned: {},\n parent: parent,\n base: base,\n draft: draft,\n copy: null,\n revoked: false,\n isManual: false\n };\n createHiddenProperty(draft, DRAFT_STATE, state);\n return draft;\n} // Access a property without creating an Immer draft.\n\nfunction peek$1(draft, prop) {\n var state = draft[DRAFT_STATE];\n\n if (state && !state.finalizing) {\n state.finalizing = true;\n var value = draft[prop];\n state.finalizing = false;\n return value;\n }\n\n return draft[prop];\n}\n\nfunction get$1(state, prop) {\n assertUnrevoked(state);\n var value = peek$1(latest(state), prop);\n if (state.finalizing) { return value; } // Create a draft if the value is unmodified.\n\n if (value === peek$1(state.base, prop) && isDraftable(value)) {\n prepareCopy$1(state); // @ts-ignore\n\n return state.copy[prop] = state.scope.immer.createProxy(value, state);\n }\n\n return value;\n}\n\nfunction set$1(state, prop, value) {\n assertUnrevoked(state);\n state.assigned[prop] = true;\n\n if (!state.modified) {\n if (is(value, peek$1(latest(state), prop))) { return; }\n markChangedES5(state);\n prepareCopy$1(state);\n } // @ts-ignore\n\n\n state.copy[prop] = value;\n}\n\nfunction markChangedES5(state) {\n if (!state.modified) {\n state.modified = true;\n if (state.parent) { markChangedES5(state.parent); }\n }\n}\n\nfunction prepareCopy$1(state) {\n if (!state.copy) { state.copy = clonePotentialDraft(state.base); }\n}\n\nfunction clonePotentialDraft(base) {\n var state = base && base[DRAFT_STATE];\n\n if (state) {\n state.finalizing = true;\n var draft = shallowCopy(state.draft, true);\n state.finalizing = false;\n return draft;\n }\n\n return shallowCopy(base);\n} // property descriptors are recycled to make sure we don't create a get and set closure per property,\n// but share them all instead\n\n\nvar descriptors = {};\n\nfunction proxyProperty(draft, prop, enumerable) {\n var desc = descriptors[prop];\n\n if (desc) {\n desc.enumerable = enumerable;\n } else {\n descriptors[prop] = desc = {\n configurable: true,\n enumerable: enumerable,\n get: function () {\n return get$1(this[DRAFT_STATE], prop);\n },\n set: function (value) {\n set$1(this[DRAFT_STATE], prop, value);\n }\n };\n }\n\n Object.defineProperty(draft, prop, desc);\n}\n\nfunction assertUnrevoked(state) {\n if (state.revoked === true) { throw new Error(\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + JSON.stringify(latest(state))); }\n} // This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\nfunction markChangesSweep(drafts) {\n // The natural order of drafts in the `scope` array is based on when they\n // were accessed. By processing drafts in reverse natural order, we have a\n // better chance of processing leaf nodes first. When a leaf node is known to\n // have changed, we can avoid any traversal of its ancestor nodes.\n for (var i = drafts.length - 1; i >= 0; i--) {\n var state = drafts[i][DRAFT_STATE];\n\n if (!state.modified) {\n switch (state.type) {\n case ProxyType.ES5Array:\n if (hasArrayChanges(state)) { markChangedES5(state); }\n break;\n\n case ProxyType.ES5Object:\n if (hasObjectChanges(state)) { markChangedES5(state); }\n break;\n }\n }\n }\n}\n\nfunction markChangesRecursively(object) {\n if (!object || typeof object !== \"object\") { return; }\n var state = object[DRAFT_STATE];\n if (!state) { return; }\n var base = state.base,\n draft = state.draft,\n assigned = state.assigned,\n type = state.type;\n\n if (type === ProxyType.ES5Object) {\n // Look for added keys.\n // TODO: looks quite duplicate to hasObjectChanges,\n // probably there is a faster way to detect changes, as sweep + recurse seems to do some\n // unnecessary work.\n // also: probably we can store the information we detect here, to speed up tree finalization!\n each(draft, function (key) {\n if (key === DRAFT_STATE) { return; } // The `undefined` check is a fast path for pre-existing keys.\n\n if (base[key] === undefined && !has(base, key)) {\n assigned[key] = true;\n markChangedES5(state);\n } else if (!assigned[key]) {\n // Only untouched properties trigger recursion.\n markChangesRecursively(draft[key]);\n }\n }); // Look for removed keys.\n\n each(base, function (key) {\n // The `undefined` check is a fast path for pre-existing keys.\n if (draft[key] === undefined && !has(draft, key)) {\n assigned[key] = false;\n markChangedES5(state);\n }\n });\n } else if (type === ProxyType.ES5Array && hasArrayChanges(state)) {\n markChangedES5(state);\n assigned.length = true;\n\n if (draft.length < base.length) {\n for (var i = draft.length; i < base.length; i++) { assigned[i] = false; }\n } else {\n for (var i = base.length; i < draft.length; i++) { assigned[i] = true; }\n }\n\n for (var i = 0; i < draft.length; i++) {\n // Only untouched indices trigger recursion.\n if (assigned[i] === undefined) { markChangesRecursively(draft[i]); }\n }\n }\n}\n\nfunction hasObjectChanges(state) {\n var base = state.base,\n draft = state.draft; // Search for added keys and changed keys. Start at the back, because\n // non-numeric keys are ordered by time of definition on the object.\n\n var keys = Object.keys(draft);\n\n for (var i = keys.length - 1; i >= 0; i--) {\n var key = keys[i];\n var baseValue = base[key]; // The `undefined` check is a fast path for pre-existing keys.\n\n if (baseValue === undefined && !has(base, key)) {\n return true;\n } // Once a base key is deleted, future changes go undetected, because its\n // descriptor is erased. This branch detects any missed changes.\n else {\n var value = draft[key];\n var state_1 = value && value[DRAFT_STATE];\n\n if (state_1 ? state_1.base !== baseValue : !is(value, baseValue)) {\n return true;\n }\n }\n } // At this point, no keys were added or changed.\n // Compare key count to determine if keys were deleted.\n\n\n return keys.length !== Object.keys(base).length;\n}\n\nfunction hasArrayChanges(state) {\n var draft = state.draft;\n if (draft.length !== state.base.length) { return true; } // See #116\n // If we first shorten the length, our array interceptors will be removed.\n // If after that new items are added, result in the same original length,\n // those last items will have no intercepting property.\n // So if there is no own descriptor on the last position, we know that items were removed and added\n // N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n // the last one\n\n var descriptor = Object.getOwnPropertyDescriptor(draft, draft.length - 1); // descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\n if (descriptor && !descriptor.get) { return true; } // For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\n return false;\n}\n\nvar DraftMap = function (_super) {\n if (!_super) {\n /* istanbul ignore next */\n throw new Error(\"Map is not polyfilled\");\n }\n\n __extends(DraftMap, _super); // Create class manually, cause #502\n\n\n function DraftMap(target, parent) {\n this[DRAFT_STATE] = {\n type: ProxyType.Map,\n parent: parent,\n scope: parent ? parent.scope : ImmerScope.current,\n modified: false,\n finalized: false,\n copy: undefined,\n assigned: undefined,\n base: target,\n draft: this,\n isManual: false,\n revoked: false\n };\n return this;\n }\n\n var p = DraftMap.prototype; // TODO: smaller build size if we create a util for Object.defineProperty\n\n Object.defineProperty(p, \"size\", {\n get: function () {\n return latest(this[DRAFT_STATE]).size;\n },\n enumerable: true,\n configurable: true\n });\n\n p.has = function (key) {\n return latest(this[DRAFT_STATE]).has(key);\n };\n\n p.set = function (key, value) {\n var state = this[DRAFT_STATE];\n assertUnrevoked(state);\n\n if (latest(state).get(key) !== value) {\n prepareCopy$2(state);\n state.scope.immer.markChanged(state);\n state.assigned.set(key, true);\n state.copy.set(key, value);\n state.assigned.set(key, true);\n }\n\n return this;\n };\n\n p.delete = function (key) {\n if (!this.has(key)) {\n return false;\n }\n\n var state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareCopy$2(state);\n state.scope.immer.markChanged(state);\n state.assigned.set(key, false);\n state.copy.delete(key);\n return true;\n };\n\n p.clear = function () {\n var state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareCopy$2(state);\n state.scope.immer.markChanged(state);\n state.assigned = new Map();\n return state.copy.clear();\n };\n\n p.forEach = function (cb, thisArg) {\n var _this = this;\n\n var state = this[DRAFT_STATE];\n latest(state).forEach(function (_value, key, _map) {\n cb.call(thisArg, _this.get(key), key, _this);\n });\n };\n\n p.get = function (key) {\n var state = this[DRAFT_STATE];\n assertUnrevoked(state);\n var value = latest(state).get(key);\n\n if (state.finalized || !isDraftable(value)) {\n return value;\n }\n\n if (value !== state.base.get(key)) {\n return value; // either already drafted or reassigned\n } // despite what it looks, this creates a draft only once, see above condition\n\n\n var draft = state.scope.immer.createProxy(value, state);\n prepareCopy$2(state);\n state.copy.set(key, draft);\n return draft;\n };\n\n p.keys = function () {\n return latest(this[DRAFT_STATE]).keys();\n };\n\n p.values = function () {\n var _a;\n\n var _this = this;\n\n var iterator = this.keys();\n return _a = {}, _a[iteratorSymbol] = function () {\n return _this.values();\n }, _a.next = function () {\n var r = iterator.next();\n /* istanbul ignore next */\n\n if (r.done) { return r; }\n\n var value = _this.get(r.value);\n\n return {\n done: false,\n value: value\n };\n }, _a;\n };\n\n p.entries = function () {\n var _a;\n\n var _this = this;\n\n var iterator = this.keys();\n return _a = {}, _a[iteratorSymbol] = function () {\n return _this.entries();\n }, _a.next = function () {\n var r = iterator.next();\n /* istanbul ignore next */\n\n if (r.done) { return r; }\n\n var value = _this.get(r.value);\n\n return {\n done: false,\n value: [r.value, value]\n };\n }, _a;\n };\n\n p[iteratorSymbol] = function () {\n return this.entries();\n };\n\n return DraftMap;\n}(Map);\n\nfunction proxyMap(target, parent) {\n // @ts-ignore\n return new DraftMap(target, parent);\n}\n\nfunction prepareCopy$2(state) {\n if (!state.copy) {\n state.assigned = new Map();\n state.copy = new Map(state.base);\n }\n}\n\nvar DraftSet = function (_super) {\n if (!_super) {\n /* istanbul ignore next */\n throw new Error(\"Set is not polyfilled\");\n }\n\n __extends(DraftSet, _super); // Create class manually, cause #502\n\n\n function DraftSet(target, parent) {\n this[DRAFT_STATE] = {\n type: ProxyType.Set,\n parent: parent,\n scope: parent ? parent.scope : ImmerScope.current,\n modified: false,\n finalized: false,\n copy: undefined,\n base: target,\n draft: this,\n drafts: new Map(),\n revoked: false,\n isManual: false\n };\n return this;\n }\n\n var p = DraftSet.prototype;\n Object.defineProperty(p, \"size\", {\n get: function () {\n return latest(this[DRAFT_STATE]).size;\n },\n enumerable: true,\n configurable: true\n });\n\n p.has = function (value) {\n var state = this[DRAFT_STATE];\n assertUnrevoked(state); // bit of trickery here, to be able to recognize both the value, and the draft of its value\n\n if (!state.copy) {\n return state.base.has(value);\n }\n\n if (state.copy.has(value)) { return true; }\n if (state.drafts.has(value) && state.copy.has(state.drafts.get(value))) { return true; }\n return false;\n };\n\n p.add = function (value) {\n var state = this[DRAFT_STATE];\n assertUnrevoked(state);\n\n if (state.copy) {\n state.copy.add(value);\n } else if (!state.base.has(value)) {\n prepareCopy$3(state);\n state.scope.immer.markChanged(state);\n state.copy.add(value);\n }\n\n return this;\n };\n\n p.delete = function (value) {\n if (!this.has(value)) {\n return false;\n }\n\n var state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareCopy$3(state);\n state.scope.immer.markChanged(state);\n return state.copy.delete(value) || (state.drafts.has(value) ? state.copy.delete(state.drafts.get(value)) :\n /* istanbul ignore next */\n false);\n };\n\n p.clear = function () {\n var state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareCopy$3(state);\n state.scope.immer.markChanged(state);\n return state.copy.clear();\n };\n\n p.values = function () {\n var state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareCopy$3(state);\n return state.copy.values();\n };\n\n p.entries = function entries() {\n var state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareCopy$3(state);\n return state.copy.entries();\n };\n\n p.keys = function () {\n return this.values();\n };\n\n p[iteratorSymbol] = function () {\n return this.values();\n };\n\n p.forEach = function forEach(cb, thisArg) {\n var iterator = this.values();\n var result = iterator.next();\n\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n };\n\n return DraftSet;\n}(Set);\n\nfunction proxySet(target, parent) {\n // @ts-ignore\n return new DraftSet(target, parent);\n}\n\nfunction prepareCopy$3(state) {\n if (!state.copy) {\n // create drafts for all entries to preserve insertion order\n state.copy = new Set();\n state.base.forEach(function (value) {\n if (isDraftable(value)) {\n var draft = state.scope.immer.createProxy(value, state);\n state.drafts.set(value, draft);\n state.copy.add(draft);\n } else {\n state.copy.add(value);\n }\n });\n }\n}\n\nfunction generatePatches(state, basePath, patches, inversePatches) {\n switch (state.type) {\n case ProxyType.ProxyObject:\n case ProxyType.ES5Object:\n case ProxyType.Map:\n return generatePatchesFromAssigned(state, basePath, patches, inversePatches);\n\n case ProxyType.ES5Array:\n case ProxyType.ProxyArray:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n\n case ProxyType.Set:\n return generateSetPatches(state, basePath, patches, inversePatches);\n }\n}\n\nfunction generateArrayPatches(state, basePath, patches, inversePatches) {\n var _a, _b;\n\n var base = state.base,\n assigned = state.assigned,\n copy = state.copy;\n /* istanbul ignore next */\n\n if (!copy) { die(); } // Reduce complexity by ensuring `base` is never longer.\n\n if (copy.length < base.length) {\n _a = [copy, base], base = _a[0], copy = _a[1];\n _b = [inversePatches, patches], patches = _b[0], inversePatches = _b[1];\n }\n\n var delta = copy.length - base.length; // Find the first replaced index.\n\n var start = 0;\n\n while (base[start] === copy[start] && start < base.length) {\n ++start;\n } // Find the last replaced index. Search from the end to optimize splice patches.\n\n\n var end = base.length;\n\n while (end > start && base[end - 1] === copy[end + delta - 1]) {\n --end;\n } // Process replaced indices.\n\n\n for (var i = start; i < end; ++i) {\n if (assigned[i] && copy[i] !== base[i]) {\n var path = basePath.concat([i]);\n patches.push({\n op: \"replace\",\n path: path,\n value: copy[i]\n });\n inversePatches.push({\n op: \"replace\",\n path: path,\n value: base[i]\n });\n }\n }\n\n var replaceCount = patches.length; // Process added indices.\n\n for (var i = end + delta - 1; i >= end; --i) {\n var path = basePath.concat([i]);\n patches[replaceCount + i - end] = {\n op: \"add\",\n path: path,\n value: copy[i]\n };\n inversePatches.push({\n op: \"remove\",\n path: path\n });\n }\n} // This is used for both Map objects and normal objects.\n\n\nfunction generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n var base = state.base,\n copy = state.copy;\n each(state.assigned, function (key, assignedValue) {\n var origValue = get(base, key);\n var value = get(copy, key);\n var op = !assignedValue ? \"remove\" : has(base, key) ? \"replace\" : \"add\";\n if (origValue === value && op === \"replace\") { return; }\n var path = basePath.concat(key);\n patches.push(op === \"remove\" ? {\n op: op,\n path: path\n } : {\n op: op,\n path: path,\n value: value\n });\n inversePatches.push(op === \"add\" ? {\n op: \"remove\",\n path: path\n } : op === \"remove\" ? {\n op: \"add\",\n path: path,\n value: origValue\n } : {\n op: \"replace\",\n path: path,\n value: origValue\n });\n });\n}\n\nfunction generateSetPatches(state, basePath, patches, inversePatches) {\n var base = state.base,\n copy = state.copy;\n var i = 0;\n base.forEach(function (value) {\n if (!copy.has(value)) {\n var path = basePath.concat([i]);\n patches.push({\n op: \"remove\",\n path: path,\n value: value\n });\n inversePatches.unshift({\n op: \"add\",\n path: path,\n value: value\n });\n }\n\n i++;\n });\n i = 0;\n copy.forEach(function (value) {\n if (!base.has(value)) {\n var path = basePath.concat([i]);\n patches.push({\n op: \"add\",\n path: path,\n value: value\n });\n inversePatches.unshift({\n op: \"remove\",\n path: path,\n value: value\n });\n }\n\n i++;\n });\n}\n\nfunction applyPatches(draft, patches) {\n patches.forEach(function (patch) {\n var path = patch.path,\n op = patch.op;\n /* istanbul ignore next */\n\n if (!path.length) { die(); }\n var base = draft;\n\n for (var i = 0; i < path.length - 1; i++) {\n base = get(base, path[i]);\n if (!base || typeof base !== \"object\") { throw new Error(\"Cannot apply patch, path doesn't resolve: \" + path.join(\"/\")); } // prettier-ignore\n }\n\n var type = getArchtype(base);\n var value = deepClonePatchValue(patch.value); // used to clone patch to ensure original patch is not modified, see #411\n\n var key = path[path.length - 1];\n\n switch (op) {\n case \"replace\":\n switch (type) {\n case Archtype.Map:\n return base.set(key, value);\n\n /* istanbul ignore next */\n\n case Archtype.Set:\n throw new Error('Sets cannot have \"replace\" patches.');\n\n default:\n // if value is an object, then it's assigned by reference\n // in the following add or remove ops, the value field inside the patch will also be modifyed\n // so we use value from the cloned patch\n // @ts-ignore\n return base[key] = value;\n }\n\n case \"add\":\n switch (type) {\n case Archtype.Array:\n return base.splice(key, 0, value);\n\n case Archtype.Map:\n return base.set(key, value);\n\n case Archtype.Set:\n return base.add(value);\n\n default:\n return base[key] = value;\n }\n\n case \"remove\":\n switch (type) {\n case Archtype.Array:\n return base.splice(key, 1);\n\n case Archtype.Map:\n return base.delete(key);\n\n case Archtype.Set:\n return base.delete(patch.value);\n\n default:\n return delete base[key];\n }\n\n default:\n throw new Error(\"Unsupported patch operation: \" + op);\n }\n });\n return draft;\n}\n\nfunction deepClonePatchValue(obj) {\n if (!obj || typeof obj !== \"object\") { return obj; }\n if (Array.isArray(obj)) { return obj.map(deepClonePatchValue); }\n if (isMap(obj)) { return new Map(Array.from(obj.entries()).map(function (_a) {\n var k = _a[0],\n v = _a[1];\n return [k, deepClonePatchValue(v)];\n })); } // Not needed: if (isSet(obj)) return new Set(Array.from(obj.values()).map(deepClone))\n\n var cloned = Object.create(Object.getPrototypeOf(obj));\n\n for (var key in obj) { cloned[key] = deepClonePatchValue(obj[key]); }\n\n return cloned;\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\n/* istanbul ignore next */\n\nfunction verifyMinified() {}\n\nvar configDefaults = {\n useProxies: typeof Proxy !== \"undefined\" && typeof Proxy.revocable !== \"undefined\" && typeof Reflect !== \"undefined\",\n autoFreeze: typeof process !== \"undefined\" ? process.env.NODE_ENV !== \"production\" :\n /* istanbul ignore next */\n verifyMinified.name === \"verifyMinified\",\n onAssign: null,\n onDelete: null,\n onCopy: null\n};\n\nvar Immer =\n/** @class */\nfunction () {\n function Immer(config) {\n var _this = this;\n\n this.useProxies = false;\n this.autoFreeze = false;\n each(configDefaults, function (key, value) {\n var _a, _b; // @ts-ignore\n\n\n _this[key] = (_b = (_a = config) === null || _a === void 0 ? void 0 : _a[key], _b !== null && _b !== void 0 ? _b : value);\n });\n this.setUseProxies(this.useProxies);\n this.produce = this.produce.bind(this);\n this.produceWithPatches = this.produceWithPatches.bind(this);\n }\n /**\r\n * The `produce` function takes a value and a \"recipe function\" (whose\r\n * return value often depends on the base state). The recipe function is\r\n * free to mutate its first argument however it wants. All mutations are\r\n * only ever applied to a __copy__ of the base state.\r\n *\r\n * Pass only a function to create a \"curried producer\" which relieves you\r\n * from passing the recipe function every time.\r\n *\r\n * Only plain objects and arrays are made mutable. All other objects are\r\n * considered uncopyable.\r\n *\r\n * Note: This function is __bound__ to its `Immer` instance.\r\n *\r\n * @param {any} base - the initial state\r\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\r\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\r\n * @returns {any} a new state, or the initial state if nothing was modified\r\n */\n\n\n Immer.prototype.produce = function (base, recipe, patchListener) {\n var _this = this; // curried invocation\n\n\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n var defaultBase_1 = recipe;\n recipe = base;\n var self_1 = this;\n return function curriedProduce(base) {\n var arguments$1 = arguments;\n\n var _this = this;\n\n if (base === void 0) {\n base = defaultBase_1;\n }\n\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments$1[_i];\n }\n\n return self_1.produce(base, function (draft) {\n return recipe.call.apply(recipe, __spreadArrays([_this, draft], args));\n }); // prettier-ignore\n };\n } // prettier-ignore\n\n\n {\n if (typeof recipe !== \"function\") {\n throw new Error(\"The first or second argument to `produce` must be a function\");\n }\n\n if (patchListener !== undefined && typeof patchListener !== \"function\") {\n throw new Error(\"The third argument to `produce` must be a function or undefined\");\n }\n }\n var result; // Only plain objects, arrays, and \"immerable classes\" are drafted.\n\n if (isDraftable(base)) {\n var scope_1 = ImmerScope.enter(this);\n var proxy = this.createProxy(base, undefined);\n var hasError = true;\n\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n // finally instead of catch + rethrow better preserves original stack\n if (hasError) { scope_1.revoke(); }else { scope_1.leave(); }\n }\n\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then(function (result) {\n scope_1.usePatches(patchListener);\n return processResult(_this, result, scope_1);\n }, function (error) {\n scope_1.revoke();\n throw error;\n });\n }\n\n scope_1.usePatches(patchListener);\n return processResult(this, result, scope_1);\n } else {\n result = recipe(base);\n if (result === NOTHING) { return undefined; }\n if (result === undefined) { result = base; }\n maybeFreeze(this, result, true);\n return result;\n }\n };\n\n Immer.prototype.produceWithPatches = function (arg1, arg2, arg3) {\n var _this = this;\n\n if (typeof arg1 === \"function\") {\n return function (state) {\n var arguments$1 = arguments;\n\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments$1[_i];\n }\n\n return _this.produceWithPatches(state, function (draft) {\n return arg1.apply(void 0, __spreadArrays([draft], args));\n });\n };\n } // non-curried form\n\n /* istanbul ignore next */\n\n\n if (arg3) { die(); }\n var patches, inversePatches;\n var nextState = this.produce(arg1, arg2, function (p, ip) {\n patches = p;\n inversePatches = ip;\n });\n return [nextState, patches, inversePatches];\n };\n\n Immer.prototype.createDraft = function (base) {\n if (!isDraftable(base)) {\n throw new Error(\"First argument to `createDraft` must be a plain object, an array, or an immerable object\"); // prettier-ignore\n }\n\n var scope = ImmerScope.enter(this);\n var proxy = this.createProxy(base, undefined);\n proxy[DRAFT_STATE].isManual = true;\n scope.leave();\n return proxy;\n };\n\n Immer.prototype.finishDraft = function (draft, patchListener) {\n var state = draft && draft[DRAFT_STATE];\n\n if (!state || !state.isManual) {\n throw new Error(\"First argument to `finishDraft` must be a draft returned by `createDraft`\"); // prettier-ignore\n }\n\n if (state.finalized) {\n throw new Error(\"The given draft is already finalized\"); // prettier-ignore\n }\n\n var scope = state.scope;\n scope.usePatches(patchListener);\n return processResult(this, undefined, scope);\n };\n /**\r\n * Pass true to automatically freeze all copies created by Immer.\r\n *\r\n * By default, auto-freezing is disabled in production.\r\n */\n\n\n Immer.prototype.setAutoFreeze = function (value) {\n this.autoFreeze = value;\n };\n /**\r\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\r\n * always faster than using ES5 proxies.\r\n *\r\n * By default, feature detection is used, so calling this is rarely necessary.\r\n */\n\n\n Immer.prototype.setUseProxies = function (value) {\n this.useProxies = value;\n };\n\n Immer.prototype.applyPatches = function (base, patches) {\n // If a patch replaces the entire state, take that replacement as base\n // before applying patches\n var i;\n\n for (i = patches.length - 1; i >= 0; i--) {\n var patch = patches[i];\n\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n\n if (isDraft(base)) {\n // N.B: never hits if some patch a replacement, patches are never drafts\n return applyPatches(base, patches);\n } // Otherwise, produce a copy of the base state.\n\n\n return this.produce(base, function (draft) {\n return applyPatches(draft, patches.slice(i + 1));\n });\n };\n\n Immer.prototype.createProxy = function (value, parent) {\n // precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n var draft = isMap(value) ? proxyMap(value, parent) : isSet(value) ? proxySet(value, parent) : this.useProxies ? createProxy(value, parent) : createES5Proxy(value, parent);\n var scope = parent ? parent.scope : ImmerScope.current;\n scope.drafts.push(draft);\n return draft;\n };\n\n Immer.prototype.willFinalize = function (scope, thing, isReplaced) {\n if (!this.useProxies) { willFinalizeES5(scope, thing, isReplaced); }\n };\n\n Immer.prototype.markChanged = function (state) {\n if (this.useProxies) {\n markChanged(state);\n } else {\n markChangedES5(state);\n }\n };\n\n return Immer;\n}();\n\nvar immer = new Immer();\n/**\r\n * The `produce` function takes a value and a \"recipe function\" (whose\r\n * return value often depends on the base state). The recipe function is\r\n * free to mutate its first argument however it wants. All mutations are\r\n * only ever applied to a __copy__ of the base state.\r\n *\r\n * Pass only a function to create a \"curried producer\" which relieves you\r\n * from passing the recipe function every time.\r\n *\r\n * Only plain objects and arrays are made mutable. All other objects are\r\n * considered uncopyable.\r\n *\r\n * Note: This function is __bound__ to its `Immer` instance.\r\n *\r\n * @param {any} base - the initial state\r\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\r\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\r\n * @returns {any} a new state, or the initial state if nothing was modified\r\n */\n\nvar produce = immer.produce;\n/**\r\n * Like `produce`, but `produceWithPatches` always returns a tuple\r\n * [nextState, patches, inversePatches] (instead of just the next state)\r\n */\n\nvar produceWithPatches = immer.produceWithPatches.bind(immer);\n/**\r\n * Pass true to automatically freeze all copies created by Immer.\r\n *\r\n * By default, auto-freezing is disabled in production.\r\n */\n\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\n/**\r\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\r\n * always faster than using ES5 proxies.\r\n *\r\n * By default, feature detection is used, so calling this is rarely necessary.\r\n */\n\nvar setUseProxies = immer.setUseProxies.bind(immer);\n/**\r\n * Apply an array of Immer patches to the first argument.\r\n *\r\n * This function is a producer, which means copy-on-write is in effect.\r\n */\n\nvar applyPatches$1 = immer.applyPatches.bind(immer);\n/**\r\n * Create an Immer draft from the given base state, which may be a draft itself.\r\n * The draft can be modified until you finalize it with the `finishDraft` function.\r\n */\n\nvar createDraft = immer.createDraft.bind(immer);\n/**\r\n * Finalize an Immer draft from a `createDraft` call, returning the base state\r\n * (if no changes were made) or a modified copy. The draft must *not* be\r\n * mutated afterwards.\r\n *\r\n * Pass a function as the 2nd argument to generate Immer patches based on the\r\n * changes that were made.\r\n */\n\nvar finishDraft = immer.finishDraft.bind(immer);\n/**\r\n * This function is actually a no-op, but can be used to cast an immutable type\r\n * to an draft type and make TypeScript happy\r\n *\r\n * @param value\r\n */\n\nfunction castDraft(value) {\n return value;\n}\n/**\r\n * This function is actually a no-op, but can be used to cast a mutable type\r\n * to an immutable type and make TypeScript happy\r\n * @param value\r\n */\n\nfunction castImmutable(value) {\n return value;\n}\n\nexports.Immer = Immer;\nexports.applyPatches = applyPatches$1;\nexports.castDraft = castDraft;\nexports.castImmutable = castImmutable;\nexports.createDraft = createDraft;\nexports.default = produce;\nexports.finishDraft = finishDraft;\nexports.immerable = DRAFTABLE;\nexports.isDraft = isDraft;\nexports.isDraftable = isDraftable;\nexports.nothing = NOTHING;\nexports.original = original;\nexports.produce = produce;\nexports.produceWithPatches = produceWithPatches;\nexports.setAutoFreeze = setAutoFreeze;\nexports.setUseProxies = setUseProxies;\n//# sourceMappingURL=immer.js.map\n","/*! https://mths.be/esrever v0.2.0 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar regexSymbolWithCombiningMarks = /([\\0-\\u02FF\\u0370-\\u1AAF\\u1B00-\\u1DBF\\u1E00-\\u20CF\\u2100-\\uD7FF\\uE000-\\uFE1F\\uFE30-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])([\\u0300-\\u036F\\u1AB0-\\u1AFF\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]+)/g;\n\tvar regexSurrogatePair = /([\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/g;\n\n\tvar reverse = function(string) {\n\t\t// Step 1: deal with combining marks and astral symbols (surrogate pairs)\n\t\tstring = string\n\t\t\t// Swap symbols with their combining marks so the combining marks go first\n\t\t\t.replace(regexSymbolWithCombiningMarks, function($0, $1, $2) {\n\t\t\t\t// Reverse the combining marks so they will end up in the same order\n\t\t\t\t// later on (after another round of reversing)\n\t\t\t\treturn reverse($2) + $1;\n\t\t\t})\n\t\t\t// Swap high and low surrogates so the low surrogates go first\n\t\t\t.replace(regexSurrogatePair, '$2$1');\n\t\t// Step 2: reverse the code units in the string\n\t\tvar result = '';\n\t\tvar index = string.length;\n\t\twhile (index--) {\n\t\t\tresult += string.charAt(index);\n\t\t}\n\t\treturn result;\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar esrever = {\n\t\t'version': '0.2.0',\n\t\t'reverse': reverse\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn esrever;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = esrever;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in esrever) {\n\t\t\t\tesrever.hasOwnProperty(key) && (freeExports[key] = esrever[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.esrever = esrever;\n\t}\n\n}(this));\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar isPlainObject = _interopDefault(require('is-plain-object'));\nvar immer = require('immer');\nvar esrever = require('esrever');\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar DIRTY_PATHS = new WeakMap();\nvar FLUSHING = new WeakMap();\nvar NORMALIZING = new WeakMap();\nvar PATH_REFS = new WeakMap();\nvar POINT_REFS = new WeakMap();\nvar RANGE_REFS = new WeakMap();\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * Create a new Slate `Editor` object.\r\n */\n\nvar createEditor = () => {\n var editor = {\n children: [],\n operations: [],\n selection: null,\n marks: null,\n isInline: () => false,\n isVoid: () => false,\n onChange: () => {},\n apply: op => {\n for (var ref of Editor.pathRefs(editor)) {\n PathRef.transform(ref, op);\n }\n\n for (var _ref of Editor.pointRefs(editor)) {\n PointRef.transform(_ref, op);\n }\n\n for (var _ref2 of Editor.rangeRefs(editor)) {\n RangeRef.transform(_ref2, op);\n }\n\n var set = new Set();\n var dirtyPaths = [];\n\n var add = path => {\n if (path) {\n var key = path.join(',');\n\n if (!set.has(key)) {\n set.add(key);\n dirtyPaths.push(path);\n }\n }\n };\n\n var oldDirtyPaths = DIRTY_PATHS.get(editor) || [];\n var newDirtyPaths = getDirtyPaths(op);\n\n for (var path of oldDirtyPaths) {\n var newPath = Path.transform(path, op);\n add(newPath);\n }\n\n for (var _path of newDirtyPaths) {\n add(_path);\n }\n\n DIRTY_PATHS.set(editor, dirtyPaths);\n Editor.transform(editor, op);\n editor.operations.push(op);\n Editor.normalize(editor); // Clear any formats applied to the cursor if the selection changes.\n\n if (op.type === 'set_selection') {\n editor.marks = null;\n }\n\n if (!FLUSHING.get(editor)) {\n FLUSHING.set(editor, true);\n Promise.resolve().then(() => {\n FLUSHING.set(editor, false);\n editor.onChange();\n editor.operations = [];\n });\n }\n },\n addMark: (key, value) => {\n var {\n selection\n } = editor;\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.setNodes(editor, {\n [key]: value\n }, {\n match: Text.isText,\n split: true\n });\n } else {\n var marks = _objectSpread({}, Editor.marks(editor) || {}, {\n [key]: value\n });\n\n editor.marks = marks;\n editor.onChange();\n }\n }\n },\n deleteBackward: unit => {\n var {\n selection\n } = editor;\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit,\n reverse: true\n });\n }\n },\n deleteForward: unit => {\n var {\n selection\n } = editor;\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit\n });\n }\n },\n deleteFragment: () => {\n var {\n selection\n } = editor;\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.delete(editor);\n }\n },\n insertBreak: () => {\n Transforms.splitNodes(editor, {\n always: true\n });\n },\n insertFragment: fragment => {\n Transforms.insertFragment(editor, fragment);\n },\n insertNode: node => {\n Transforms.insertNodes(editor, node);\n },\n insertText: text => {\n var {\n selection,\n marks\n } = editor;\n\n if (selection) {\n // If the cursor is at the end of an inline, move it outside of\n // the inline before inserting\n if (Range.isCollapsed(selection)) {\n var inline = Editor.above(editor, {\n match: n => Editor.isInline(editor, n),\n mode: 'highest'\n });\n\n if (inline) {\n var [, inlinePath] = inline;\n\n if (Editor.isEnd(editor, selection.anchor, inlinePath)) {\n var point = Editor.after(editor, inlinePath);\n Transforms.setSelection(editor, {\n anchor: point,\n focus: point\n });\n }\n }\n }\n\n if (marks) {\n var node = _objectSpread({\n text\n }, marks);\n\n Transforms.insertNodes(editor, node);\n } else {\n Transforms.insertText(editor, text);\n }\n\n editor.marks = null;\n }\n },\n normalizeNode: entry => {\n var [node, path] = entry; // There are no core normalizations for text nodes.\n\n if (Text.isText(node)) {\n return;\n } // Ensure that block and inline nodes have at least one text child.\n\n\n if (Element.isElement(node) && node.children.length === 0) {\n var child = {\n text: ''\n };\n Transforms.insertNodes(editor, child, {\n at: path.concat(0),\n voids: true\n });\n return;\n } // Determine whether the node should have block or inline children.\n\n\n var shouldHaveInlines = Editor.isEditor(node) ? false : Element.isElement(node) && (editor.isInline(node) || node.children.length === 0 || Text.isText(node.children[0]) || editor.isInline(node.children[0])); // Since we'll be applying operations while iterating, keep track of an\n // index that accounts for any added/removed nodes.\n\n var n = 0;\n\n for (var i = 0; i < node.children.length; i++, n++) {\n var _child = node.children[i];\n var prev = node.children[i - 1];\n var isLast = i === node.children.length - 1;\n var isInlineOrText = Text.isText(_child) || Element.isElement(_child) && editor.isInline(_child); // Only allow block nodes in the top-level children and parent blocks\n // that only contain block nodes. Similarly, only allow inline nodes in\n // other inline nodes, or parent blocks that only contain inlines and\n // text.\n\n if (isInlineOrText !== shouldHaveInlines) {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n n--;\n } else if (Element.isElement(_child)) {\n // Ensure that inline nodes are surrounded by text nodes.\n if (editor.isInline(_child)) {\n if (prev == null || !Text.isText(prev)) {\n var newChild = {\n text: ''\n };\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n),\n voids: true\n });\n n++;\n } else if (isLast) {\n var _newChild = {\n text: ''\n };\n Transforms.insertNodes(editor, _newChild, {\n at: path.concat(n + 1),\n voids: true\n });\n n++;\n }\n }\n } else {\n // Merge adjacent text nodes that are empty or match.\n if (prev != null && Text.isText(prev)) {\n if (Text.equals(_child, prev, {\n loose: true\n })) {\n Transforms.mergeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n n--;\n } else if (prev.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n - 1),\n voids: true\n });\n n--;\n } else if (isLast && _child.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\n n--;\n }\n }\n }\n }\n },\n removeMark: key => {\n var {\n selection\n } = editor;\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.unsetNodes(editor, key, {\n match: Text.isText,\n split: true\n });\n } else {\n var marks = _objectSpread({}, Editor.marks(editor) || {});\n\n delete marks[key];\n editor.marks = marks;\n editor.onChange();\n }\n }\n }\n };\n return editor;\n};\n/**\r\n * Get the \"dirty\" paths generated from an operation.\r\n */\n\nvar getDirtyPaths = op => {\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node':\n {\n var {\n path\n } = op;\n return Path.levels(path);\n }\n\n case 'insert_node':\n {\n var {\n node,\n path: _path2\n } = op;\n var levels = Path.levels(_path2);\n var descendants = Text.isText(node) ? [] : Array.from(Node.nodes(node), (_ref3) => {\n var [, p] = _ref3;\n return _path2.concat(p);\n });\n return [...levels, ...descendants];\n }\n\n case 'merge_node':\n {\n var {\n path: _path3\n } = op;\n var ancestors = Path.ancestors(_path3);\n var previousPath = Path.previous(_path3);\n return [...ancestors, previousPath];\n }\n\n case 'move_node':\n {\n var {\n path: _path4,\n newPath\n } = op;\n\n if (Path.equals(_path4, newPath)) {\n return [];\n }\n\n var oldAncestors = [];\n var newAncestors = [];\n\n for (var ancestor of Path.ancestors(_path4)) {\n var p = Path.transform(ancestor, op);\n oldAncestors.push(p);\n }\n\n for (var _ancestor of Path.ancestors(newPath)) {\n var _p = Path.transform(_ancestor, op);\n\n newAncestors.push(_p);\n }\n\n return [...oldAncestors, ...newAncestors];\n }\n\n case 'remove_node':\n {\n var {\n path: _path5\n } = op;\n\n var _ancestors = Path.ancestors(_path5);\n\n return [..._ancestors];\n }\n\n case 'split_node':\n {\n var {\n path: _path6\n } = op;\n\n var _levels = Path.levels(_path6);\n\n var nextPath = Path.next(_path6);\n return [..._levels, nextPath];\n }\n\n default:\n {\n return [];\n }\n }\n};\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n/**\r\n * Constants for string distance checking.\r\n */\nvar SPACE = /\\s/;\nvar PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\nvar CHAMELEON = /['\\u2018\\u2019]/;\nvar SURROGATE_START = 0xd800;\nvar SURROGATE_END = 0xdfff;\nvar ZERO_WIDTH_JOINER = 0x200d;\n/**\r\n * Get the distance to the end of the first character in a string of text.\r\n */\n\nvar getCharacterDistance = text => {\n var offset = 0; // prev types:\n // SURR: surrogate pair\n // MOD: modifier (technically also surrogate pair)\n // ZWJ: zero width joiner\n // VAR: variation selector\n // BMP: sequenceable character from basic multilingual plane\n\n var prev = null;\n var charCode = text.charCodeAt(0);\n\n while (charCode) {\n if (isSurrogate(charCode)) {\n var modifier = isModifier(charCode, text, offset); // Early returns are the heart of this function, where we decide if previous and current\n // codepoints should form a single character (in terms of how many of them should selection\n // jump over).\n\n if (prev === 'SURR' || prev === 'BMP') {\n break;\n }\n\n offset += 2;\n prev = modifier ? 'MOD' : 'SURR';\n charCode = text.charCodeAt(offset); // Absolutely fine to `continue` without any checks because if `charCode` is NaN (which\n // is the case when out of `text` range), next `while` loop won\"t execute and we\"re done.\n\n continue;\n }\n\n if (charCode === ZERO_WIDTH_JOINER) {\n offset += 1;\n prev = 'ZWJ';\n charCode = text.charCodeAt(offset);\n continue;\n }\n\n if (isBMPEmoji(charCode)) {\n if (prev && prev !== 'ZWJ' && prev !== 'VAR') {\n break;\n }\n\n offset += 1;\n prev = 'BMP';\n charCode = text.charCodeAt(offset);\n continue;\n }\n\n if (isVariationSelector(charCode)) {\n if (prev && prev !== 'ZWJ') {\n break;\n }\n\n offset += 1;\n prev = 'VAR';\n charCode = text.charCodeAt(offset);\n continue;\n } // Modifier 'groups up' with what ever character is before that (even whitespace), need to\n // look ahead.\n\n\n if (prev === 'MOD') {\n offset += 1;\n break;\n } // If while loop ever gets here, we're done (e.g latin chars).\n\n\n break;\n }\n\n return offset || 1;\n};\n/**\r\n * Get the distance to the end of the first word in a string of text.\r\n */\n\nvar getWordDistance = text => {\n var length = 0;\n var i = 0;\n var started = false;\n var char;\n\n while (char = text.charAt(i)) {\n var l = getCharacterDistance(char);\n char = text.slice(i, i + l);\n var rest = text.slice(i + l);\n\n if (isWordCharacter(char, rest)) {\n started = true;\n length += l;\n } else if (!started) {\n length += l;\n } else {\n break;\n }\n\n i += l;\n }\n\n return length;\n};\n/**\r\n * Check if a character is a word character. The `remaining` argument is used\r\n * because sometimes you must read subsequent characters to truly determine it.\r\n */\n\nvar isWordCharacter = (char, remaining) => {\n if (SPACE.test(char)) {\n return false;\n } // Chameleons count as word characters as long as they're in a word, so\n // recurse to see if the next one is a word character or not.\n\n\n if (CHAMELEON.test(char)) {\n var next = remaining.charAt(0);\n var length = getCharacterDistance(next);\n next = remaining.slice(0, length);\n var rest = remaining.slice(length);\n\n if (isWordCharacter(next, rest)) {\n return true;\n }\n }\n\n if (PUNCTUATION.test(char)) {\n return false;\n }\n\n return true;\n};\n/**\r\n * Determines if `code` is a surrogate\r\n */\n\n\nvar isSurrogate = code => SURROGATE_START <= code && code <= SURROGATE_END;\n/**\r\n * Does `code` form Modifier with next one.\r\n *\r\n * https://emojipedia.org/modifiers/\r\n */\n\n\nvar isModifier = (code, text, offset) => {\n if (code === 0xd83c) {\n var next = text.charCodeAt(offset + 1);\n return next <= 0xdfff && next >= 0xdffb;\n }\n\n return false;\n};\n/**\r\n * Is `code` a Variation Selector.\r\n *\r\n * https://codepoints.net/variation_selectors\r\n */\n\n\nvar isVariationSelector = code => {\n return code <= 0xfe0f && code >= 0xfe00;\n};\n/**\r\n * Is `code` one of the BMP codes used in emoji sequences.\r\n *\r\n * https://emojipedia.org/emoji-zwj-sequences/\r\n */\n\n\nvar isBMPEmoji = code => {\n // This requires tiny bit of maintanance, better ideas?\n // Fortunately it only happens if new Unicode Standard\n // is released. Fails gracefully if upkeep lags behind,\n // same way Slate previously behaved with all emojis.\n return code === 0x2764 || // heart (❤)\n code === 0x2642 || // male (♂)\n code === 0x2640 || // female (♀)\n code === 0x2620 || // scull (☠)\n code === 0x2695 || // medical (⚕)\n code === 0x2708 || // plane (✈️)\n code === 0x25ef // large circle (◯)\n ;\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Editor = {\n /**\r\n * Get the ancestor above a location in the document.\r\n */\n above(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n voids = false,\n mode = 'lowest',\n at = editor.selection,\n match\n } = options;\n\n if (!at) {\n return;\n }\n\n var path = Editor.path(editor, at);\n var reverse = mode === 'lowest';\n\n for (var [n, p] of Editor.levels(editor, {\n at: path,\n voids,\n match,\n reverse\n })) {\n if (!Text.isText(n) && !Path.equals(path, p)) {\n return [n, p];\n }\n }\n },\n\n /**\r\n * Add a custom property to the leaf text nodes in the current selection.\r\n *\r\n * If the selection is currently collapsed, the marks will be added to the\r\n * `editor.marks` property instead, and applied when text is inserted next.\r\n */\n addMark(editor, key, value) {\n editor.addMark(key, value);\n },\n\n /**\r\n * Get the point after a location.\r\n */\n after(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var anchor = Editor.point(editor, at, {\n edge: 'end'\n });\n var focus = Editor.end(editor, []);\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d = 0;\n var target;\n\n for (var p of Editor.positions(editor, _objectSpread$1({}, options, {\n at: range\n }))) {\n if (d > distance) {\n break;\n }\n\n if (d !== 0) {\n target = p;\n }\n\n d++;\n }\n\n return target;\n },\n\n /**\r\n * Get the point before a location.\r\n */\n before(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var anchor = Editor.start(editor, []);\n var focus = Editor.point(editor, at, {\n edge: 'start'\n });\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d = 0;\n var target;\n\n for (var p of Editor.positions(editor, _objectSpread$1({}, options, {\n at: range,\n reverse: true\n }))) {\n if (d > distance) {\n break;\n }\n\n if (d !== 0) {\n target = p;\n }\n\n d++;\n }\n\n return target;\n },\n\n /**\r\n * Delete content in the editor backward from the current selection.\r\n */\n deleteBackward(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n unit = 'character'\n } = options;\n editor.deleteBackward(unit);\n },\n\n /**\r\n * Delete content in the editor forward from the current selection.\r\n */\n deleteForward(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n unit = 'character'\n } = options;\n editor.deleteForward(unit);\n },\n\n /**\r\n * Delete the content in the current selection.\r\n */\n deleteFragment(editor) {\n editor.deleteFragment();\n },\n\n /**\r\n * Get the start and end points of a location.\r\n */\n edges(editor, at) {\n return [Editor.start(editor, at), Editor.end(editor, at)];\n },\n\n /**\r\n * Get the end point of a location.\r\n */\n end(editor, at) {\n return Editor.point(editor, at, {\n edge: 'end'\n });\n },\n\n /**\r\n * Get the first node at a location.\r\n */\n first(editor, at) {\n var path = Editor.path(editor, at, {\n edge: 'start'\n });\n return Editor.node(editor, path);\n },\n\n /**\r\n * Get the fragment at a location.\r\n */\n fragment(editor, at) {\n var range = Editor.range(editor, at);\n var fragment = Node.fragment(editor, range);\n return fragment;\n },\n\n /**\r\n * Check if a node has block children.\r\n */\n hasBlocks(editor, element) {\n return element.children.some(n => Editor.isBlock(editor, n));\n },\n\n /**\r\n * Check if a node has inline and text children.\r\n */\n hasInlines(editor, element) {\n return element.children.some(n => Text.isText(n) || Editor.isInline(editor, n));\n },\n\n /**\r\n * Check if a node has text children.\r\n */\n hasTexts(editor, element) {\n return element.children.every(n => Text.isText(n));\n },\n\n /**\r\n * Insert a block break at the current selection.\r\n *\r\n * If the selection is currently expanded, it will be deleted first.\r\n */\n insertBreak(editor) {\n editor.insertBreak();\n },\n\n /**\r\n * Insert a fragment at the current selection.\r\n *\r\n * If the selection is currently expanded, it will be deleted first.\r\n */\n insertFragment(editor, fragment) {\n editor.insertFragment(fragment);\n },\n\n /**\r\n * Insert a node at the current selection.\r\n *\r\n * If the selection is currently expanded, it will be deleted first.\r\n */\n insertNode(editor, node) {\n editor.insertNode(node);\n },\n\n /**\r\n * Insert text at the current selection.\r\n *\r\n * If the selection is currently expanded, it will be deleted first.\r\n */\n insertText(editor, text) {\n editor.insertText(text);\n },\n\n /**\r\n * Check if a value is a block `Element` object.\r\n */\n isBlock(editor, value) {\n return Element.isElement(value) && !editor.isInline(value);\n },\n\n /**\r\n * Check if a value is an `Editor` object.\r\n */\n isEditor(value) {\n return isPlainObject(value) && typeof value.addMark === 'function' && typeof value.apply === 'function' && typeof value.deleteBackward === 'function' && typeof value.deleteForward === 'function' && typeof value.deleteFragment === 'function' && typeof value.insertBreak === 'function' && typeof value.insertFragment === 'function' && typeof value.insertNode === 'function' && typeof value.insertText === 'function' && typeof value.isInline === 'function' && typeof value.isVoid === 'function' && typeof value.normalizeNode === 'function' && typeof value.onChange === 'function' && typeof value.removeMark === 'function' && (value.marks === null || isPlainObject(value.marks)) && (value.selection === null || Range.isRange(value.selection)) && Node.isNodeList(value.children) && Operation.isOperationList(value.operations);\n },\n\n /**\r\n * Check if a point is the end point of a location.\r\n */\n isEnd(editor, point, at) {\n var end = Editor.end(editor, at);\n return Point.equals(point, end);\n },\n\n /**\r\n * Check if a point is an edge of a location.\r\n */\n isEdge(editor, point, at) {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at);\n },\n\n /**\r\n * Check if an element is empty, accounting for void nodes.\r\n */\n isEmpty(editor, element) {\n var {\n children\n } = element;\n var [first] = children;\n return children.length === 0 || children.length === 1 && Text.isText(first) && first.text === '' && !editor.isVoid(element);\n },\n\n /**\r\n * Check if a value is an inline `Element` object.\r\n */\n isInline(editor, value) {\n return Element.isElement(value) && editor.isInline(value);\n },\n\n /**\r\n * Check if the editor is currently normalizing after each operation.\r\n */\n isNormalizing(editor) {\n var isNormalizing = NORMALIZING.get(editor);\n return isNormalizing === undefined ? true : isNormalizing;\n },\n\n /**\r\n * Check if a point is the start point of a location.\r\n */\n isStart(editor, point, at) {\n // PERF: If the offset isn't `0` we know it's not the start.\n if (point.offset !== 0) {\n return false;\n }\n\n var start = Editor.start(editor, at);\n return Point.equals(point, start);\n },\n\n /**\r\n * Check if a value is a void `Element` object.\r\n */\n isVoid(editor, value) {\n return Element.isElement(value) && editor.isVoid(value);\n },\n\n /**\r\n * Get the last node at a location.\r\n */\n last(editor, at) {\n var path = Editor.path(editor, at, {\n edge: 'end'\n });\n return Editor.node(editor, path);\n },\n\n /**\r\n * Get the leaf text node at a location.\r\n */\n leaf(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node.leaf(editor, path);\n return [node, path];\n },\n\n /**\r\n * Iterate through all of the levels at a location.\r\n */\n *levels(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n at = editor.selection,\n reverse = false,\n voids = false\n } = options;\n var {\n match\n } = options;\n\n if (match == null) {\n match = () => true;\n }\n\n if (!at) {\n return;\n }\n\n var levels = [];\n var path = Editor.path(editor, at);\n\n for (var [n, p] of Node.levels(editor, path)) {\n if (!match(n)) {\n continue;\n }\n\n levels.push([n, p]);\n\n if (!voids && Editor.isVoid(editor, n)) {\n break;\n }\n }\n\n if (reverse) {\n levels.reverse();\n }\n\n yield* levels;\n },\n\n /**\r\n * Get the marks that would be added to text at the current selection.\r\n */\n marks(editor) {\n var {\n marks,\n selection\n } = editor;\n\n if (!selection) {\n return null;\n }\n\n if (marks) {\n return marks;\n }\n\n if (Range.isExpanded(selection)) {\n var [match] = Editor.nodes(editor, {\n match: Text.isText\n });\n\n if (match) {\n var [_node] = match;\n\n var _rest = _objectWithoutProperties(_node, [\"text\"]);\n\n return _rest;\n } else {\n return {};\n }\n }\n\n var {\n anchor\n } = selection;\n var {\n path\n } = anchor;\n var [node] = Editor.leaf(editor, path);\n\n if (anchor.offset === 0) {\n var prev = Editor.previous(editor, {\n at: path,\n match: Text.isText\n });\n var block = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n)\n });\n\n if (prev && block) {\n var [prevNode, prevPath] = prev;\n var [, blockPath] = block;\n\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode;\n }\n }\n }\n\n var rest = _objectWithoutProperties(node, [\"text\"]);\n\n return rest;\n },\n\n /**\r\n * Get the matching node in the branch of the document after a location.\r\n */\n next(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n\n if (!at) {\n return;\n }\n\n var [, from] = Editor.last(editor, at);\n var [, to] = Editor.last(editor, []);\n var span = [from, to];\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the next node from the root node!\");\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n\n match = n => parent.children.includes(n);\n } else {\n match = () => true;\n }\n }\n\n var [, next] = Editor.nodes(editor, {\n at: span,\n match,\n mode,\n voids\n });\n return next;\n },\n\n /**\r\n * Get the node at a location.\r\n */\n node(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node.get(editor, path);\n return [node, path];\n },\n\n /**\r\n * Iterate through all of the nodes in the Editor.\r\n */\n *nodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n at = editor.selection,\n mode = 'all',\n universal = false,\n reverse = false,\n voids = false\n } = options;\n var {\n match\n } = options;\n\n if (!match) {\n match = () => true;\n }\n\n if (!at) {\n return;\n }\n\n var from;\n var to;\n\n if (Span.isSpan(at)) {\n from = at[0];\n to = at[1];\n } else {\n var first = Editor.path(editor, at, {\n edge: 'start'\n });\n var last = Editor.path(editor, at, {\n edge: 'end'\n });\n from = reverse ? last : first;\n to = reverse ? first : last;\n }\n\n var iterable = Node.nodes(editor, {\n reverse,\n from,\n to,\n pass: (_ref) => {\n var [n] = _ref;\n return voids ? false : Editor.isVoid(editor, n);\n }\n });\n var matches = [];\n var hit;\n\n for (var [node, path] of iterable) {\n var isLower = hit && Path.compare(path, hit[1]) === 0; // In highest mode any node lower than the last hit is not a match.\n\n if (mode === 'highest' && isLower) {\n continue;\n }\n\n if (!match(node)) {\n // If we've arrived at a leaf text node that is not lower than the last\n // hit, then we've found a branch that doesn't include a match, which\n // means the match is not universal.\n if (universal && !isLower && Text.isText(node)) {\n return;\n } else {\n continue;\n }\n } // If there's a match and it's lower than the last, update the hit.\n\n\n if (mode === 'lowest' && isLower) {\n hit = [node, path];\n continue;\n } // In lowest mode we emit the last hit, once it's guaranteed lowest.\n\n\n var emit = mode === 'lowest' ? hit : [node, path];\n\n if (emit) {\n if (universal) {\n matches.push(emit);\n } else {\n yield emit;\n }\n }\n\n hit = [node, path];\n } // Since lowest is always emitting one behind, catch up at the end.\n\n\n if (mode === 'lowest' && hit) {\n if (universal) {\n matches.push(hit);\n } else {\n yield hit;\n }\n } // Universal defers to ensure that the match occurs in every branch, so we\n // yield all of the matches after iterating.\n\n\n if (universal) {\n yield* matches;\n }\n },\n\n /**\r\n * Normalize any dirty objects in the editor.\r\n */\n normalize(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n force = false\n } = options;\n\n var getDirtyPaths = editor => {\n return DIRTY_PATHS.get(editor) || [];\n };\n\n if (!Editor.isNormalizing(editor)) {\n return;\n }\n\n if (force) {\n var allPaths = Array.from(Node.nodes(editor), (_ref2) => {\n var [, p] = _ref2;\n return p;\n });\n DIRTY_PATHS.set(editor, allPaths);\n }\n\n if (getDirtyPaths(editor).length === 0) {\n return;\n }\n\n Editor.withoutNormalizing(editor, () => {\n var max = getDirtyPaths(editor).length * 42; // HACK: better way?\n\n var m = 0;\n\n while (getDirtyPaths(editor).length !== 0) {\n if (m > max) {\n throw new Error(\"\\n Could not completely normalize the editor after \".concat(max, \" iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.\\n \"));\n }\n\n var path = getDirtyPaths(editor).pop();\n var entry = Editor.node(editor, path);\n editor.normalizeNode(entry);\n m++;\n }\n });\n },\n\n /**\r\n * Get the parent node of a location.\r\n */\n parent(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var parentPath = Path.parent(path);\n var entry = Editor.node(editor, parentPath);\n return entry;\n },\n\n /**\r\n * Get the path of a location.\r\n */\n path(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n depth,\n edge\n } = options;\n\n if (Path.isPath(at)) {\n if (edge === 'start') {\n var [, firstPath] = Node.first(editor, at);\n at = firstPath;\n } else if (edge === 'end') {\n var [, lastPath] = Node.last(editor, at);\n at = lastPath;\n }\n }\n\n if (Range.isRange(at)) {\n if (edge === 'start') {\n at = Range.start(at);\n } else if (edge === 'end') {\n at = Range.end(at);\n } else {\n at = Path.common(at.anchor.path, at.focus.path);\n }\n }\n\n if (Point.isPoint(at)) {\n at = at.path;\n }\n\n if (depth != null) {\n at = at.slice(0, depth);\n }\n\n return at;\n },\n\n /**\r\n * Create a mutable ref for a `Path` object, which will stay in sync as new\r\n * operations are applied to the editor.\r\n */\n pathRef(editor, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: path,\n affinity,\n\n unref() {\n var {\n current\n } = ref;\n var pathRefs = Editor.pathRefs(editor);\n pathRefs.delete(ref);\n ref.current = null;\n return current;\n }\n\n };\n var refs = Editor.pathRefs(editor);\n refs.add(ref);\n return ref;\n },\n\n /**\r\n * Get the set of currently tracked path refs of the editor.\r\n */\n pathRefs(editor) {\n var refs = PATH_REFS.get(editor);\n\n if (!refs) {\n refs = new Set();\n PATH_REFS.set(editor, refs);\n }\n\n return refs;\n },\n\n /**\r\n * Get the start or end point of a location.\r\n */\n point(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n edge = 'start'\n } = options;\n\n if (Path.isPath(at)) {\n var path;\n\n if (edge === 'end') {\n var [, lastPath] = Node.last(editor, at);\n path = lastPath;\n } else {\n var [, firstPath] = Node.first(editor, at);\n path = firstPath;\n }\n\n var node = Node.get(editor, path);\n\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the \".concat(edge, \" point in the node at path [\").concat(at, \"] because it has no \").concat(edge, \" text node.\"));\n }\n\n return {\n path,\n offset: edge === 'end' ? node.text.length : 0\n };\n }\n\n if (Range.isRange(at)) {\n var [start, end] = Range.edges(at);\n return edge === 'start' ? start : end;\n }\n\n return at;\n },\n\n /**\r\n * Create a mutable ref for a `Point` object, which will stay in sync as new\r\n * operations are applied to the editor.\r\n */\n pointRef(editor, point) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: point,\n affinity,\n\n unref() {\n var {\n current\n } = ref;\n var pointRefs = Editor.pointRefs(editor);\n pointRefs.delete(ref);\n ref.current = null;\n return current;\n }\n\n };\n var refs = Editor.pointRefs(editor);\n refs.add(ref);\n return ref;\n },\n\n /**\r\n * Get the set of currently tracked point refs of the editor.\r\n */\n pointRefs(editor) {\n var refs = POINT_REFS.get(editor);\n\n if (!refs) {\n refs = new Set();\n POINT_REFS.set(editor, refs);\n }\n\n return refs;\n },\n\n /**\r\n * Iterate through all of the positions in the document where a `Point` can be\r\n * placed.\r\n *\r\n * By default it will move forward by individual offsets at a time, but you\r\n * can pass the `unit: 'character'` option to moved forward one character, word,\r\n * or line at at time.\r\n *\r\n * Note: void nodes are treated as a single point, and iteration will not\r\n * happen inside their content.\r\n */\n *positions(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n at = editor.selection,\n unit = 'offset',\n reverse = false\n } = options;\n\n if (!at) {\n return;\n }\n\n var range = Editor.range(editor, at);\n var [start, end] = Range.edges(range);\n var first = reverse ? end : start;\n var string = '';\n var available = 0;\n var offset = 0;\n var distance = null;\n var isNewBlock = false;\n\n var advance = () => {\n if (distance == null) {\n if (unit === 'character') {\n distance = getCharacterDistance(string);\n } else if (unit === 'word') {\n distance = getWordDistance(string);\n } else if (unit === 'line' || unit === 'block') {\n distance = string.length;\n } else {\n distance = 1;\n }\n\n string = string.slice(distance);\n } // Add or substract the offset.\n\n\n offset = reverse ? offset - distance : offset + distance; // Subtract the distance traveled from the available text.\n\n available = available - distance; // If the available had room to spare, reset the distance so that it will\n // advance again next time. Otherwise, set it to the overflow amount.\n\n distance = available >= 0 ? null : 0 - available;\n };\n\n for (var [node, path] of Editor.nodes(editor, {\n at,\n reverse\n })) {\n if (Element.isElement(node)) {\n // Void nodes are a special case, since we don't want to iterate over\n // their content. We instead always just yield their first point.\n if (editor.isVoid(node)) {\n yield Editor.start(editor, path);\n continue;\n }\n\n if (editor.isInline(node)) {\n continue;\n }\n\n if (Editor.hasInlines(editor, node)) {\n var e = Path.isAncestor(path, end.path) ? end : Editor.end(editor, path);\n var s = Path.isAncestor(path, start.path) ? start : Editor.start(editor, path);\n var text = Editor.string(editor, {\n anchor: s,\n focus: e\n });\n string = reverse ? esrever.reverse(text) : text;\n isNewBlock = true;\n }\n }\n\n if (Text.isText(node)) {\n var isFirst = Path.equals(path, first.path);\n available = node.text.length;\n offset = reverse ? available : 0;\n\n if (isFirst) {\n available = reverse ? first.offset : available - first.offset;\n offset = first.offset;\n }\n\n if (isFirst || isNewBlock || unit === 'offset') {\n yield {\n path,\n offset\n };\n }\n\n while (true) {\n // If there's no more string, continue to the next block.\n if (string === '') {\n break;\n } else {\n advance();\n } // If the available space hasn't overflow, we have another point to\n // yield in the current text node.\n\n\n if (available >= 0) {\n yield {\n path,\n offset\n };\n } else {\n break;\n }\n }\n\n isNewBlock = false;\n }\n }\n },\n\n /**\r\n * Get the matching node in the branch of the document before a location.\r\n */\n previous(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n\n if (!at) {\n return;\n }\n\n var [, from] = Editor.first(editor, at);\n var [, to] = Editor.first(editor, []);\n var span = [from, to];\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the previous node from the root node!\");\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n\n match = n => parent.children.includes(n);\n } else {\n match = () => true;\n }\n }\n\n var [, previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match,\n mode,\n voids\n });\n return previous;\n },\n\n /**\r\n * Get a range of a location.\r\n */\n range(editor, at, to) {\n if (Range.isRange(at) && !to) {\n return at;\n }\n\n var start = Editor.start(editor, at);\n var end = Editor.end(editor, to || at);\n return {\n anchor: start,\n focus: end\n };\n },\n\n /**\r\n * Create a mutable ref for a `Range` object, which will stay in sync as new\r\n * operations are applied to the editor.\r\n */\n rangeRef(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: range,\n affinity,\n\n unref() {\n var {\n current\n } = ref;\n var rangeRefs = Editor.rangeRefs(editor);\n rangeRefs.delete(ref);\n ref.current = null;\n return current;\n }\n\n };\n var refs = Editor.rangeRefs(editor);\n refs.add(ref);\n return ref;\n },\n\n /**\r\n * Get the set of currently tracked range refs of the editor.\r\n */\n rangeRefs(editor) {\n var refs = RANGE_REFS.get(editor);\n\n if (!refs) {\n refs = new Set();\n RANGE_REFS.set(editor, refs);\n }\n\n return refs;\n },\n\n /**\r\n * Remove a custom property from all of the leaf text nodes in the current\r\n * selection.\r\n *\r\n * If the selection is currently collapsed, the removal will be stored on\r\n * `editor.marks` and applied to the text inserted next.\r\n */\n removeMark(editor, key) {\n editor.removeMark(key);\n },\n\n /**\r\n * Get the start point of a location.\r\n */\n start(editor, at) {\n return Editor.point(editor, at, {\n edge: 'start'\n });\n },\n\n /**\r\n * Get the text string content of a location.\r\n *\r\n * Note: the text of void nodes is presumed to be an empty string, regardless\r\n * of what their actual content is.\r\n */\n string(editor, at) {\n var range = Editor.range(editor, at);\n var [start, end] = Range.edges(range);\n var text = '';\n\n for (var [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText\n })) {\n var t = node.text;\n\n if (Path.equals(path, end.path)) {\n t = t.slice(0, end.offset);\n }\n\n if (Path.equals(path, start.path)) {\n t = t.slice(start.offset);\n }\n\n text += t;\n }\n\n return text;\n },\n\n /**\r\n * Transform the editor by an operation.\r\n */\n transform(editor, op) {\n editor.children = immer.createDraft(editor.children);\n var selection = editor.selection && immer.createDraft(editor.selection);\n\n switch (op.type) {\n case 'insert_node':\n {\n var {\n path,\n node\n } = op;\n var parent = Node.parent(editor, path);\n var index = path[path.length - 1];\n parent.children.splice(index, 0, node);\n\n if (selection) {\n for (var [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op);\n }\n }\n\n break;\n }\n\n case 'insert_text':\n {\n var {\n path: _path,\n offset,\n text\n } = op;\n\n var _node2 = Node.leaf(editor, _path);\n\n var before = _node2.text.slice(0, offset);\n\n var after = _node2.text.slice(offset);\n\n _node2.text = before + text + after;\n\n if (selection) {\n for (var [_point, _key] of Range.points(selection)) {\n selection[_key] = Point.transform(_point, op);\n }\n }\n\n break;\n }\n\n case 'merge_node':\n {\n var {\n path: _path2\n } = op;\n\n var _node3 = Node.get(editor, _path2);\n\n var prevPath = Path.previous(_path2);\n var prev = Node.get(editor, prevPath);\n\n var _parent = Node.parent(editor, _path2);\n\n var _index = _path2[_path2.length - 1];\n\n if (Text.isText(_node3) && Text.isText(prev)) {\n prev.text += _node3.text;\n } else if (!Text.isText(_node3) && !Text.isText(prev)) {\n prev.children.push(..._node3.children);\n } else {\n throw new Error(\"Cannot apply a \\\"merge_node\\\" operation at path [\".concat(_path2, \"] to nodes of different interaces: \").concat(_node3, \" \").concat(prev));\n }\n\n _parent.children.splice(_index, 1);\n\n if (selection) {\n for (var [_point2, _key2] of Range.points(selection)) {\n selection[_key2] = Point.transform(_point2, op);\n }\n }\n\n break;\n }\n\n case 'move_node':\n {\n var {\n path: _path3,\n newPath\n } = op;\n\n if (Path.isAncestor(_path3, newPath)) {\n throw new Error(\"Cannot move a path [\".concat(_path3, \"] to new path [\").concat(newPath, \"] because the destination is inside itself.\"));\n }\n\n var _node4 = Node.get(editor, _path3);\n\n var _parent2 = Node.parent(editor, _path3);\n\n var _index2 = _path3[_path3.length - 1]; // This is tricky, but since the `path` and `newPath` both refer to\n // the same snapshot in time, there's a mismatch. After either\n // removing the original position, the second step's path can be out\n // of date. So instead of using the `op.newPath` directly, we\n // transform `op.path` to ascertain what the `newPath` would be after\n // the operation was applied.\n\n _parent2.children.splice(_index2, 1);\n\n var truePath = Path.transform(_path3, op);\n var newParent = Node.get(editor, Path.parent(truePath));\n var newIndex = truePath[truePath.length - 1];\n newParent.children.splice(newIndex, 0, _node4);\n\n if (selection) {\n for (var [_point3, _key3] of Range.points(selection)) {\n selection[_key3] = Point.transform(_point3, op);\n }\n }\n\n break;\n }\n\n case 'remove_node':\n {\n var {\n path: _path4\n } = op;\n var _index3 = _path4[_path4.length - 1];\n\n var _parent3 = Node.parent(editor, _path4);\n\n _parent3.children.splice(_index3, 1); // Transform all of the points in the value, but if the point was in the\n // node that was removed we need to update the range or remove it.\n\n\n if (selection) {\n for (var [_point4, _key4] of Range.points(selection)) {\n var result = Point.transform(_point4, op);\n\n if (selection != null && result != null) {\n selection[_key4] = result;\n } else {\n var _prev = void 0;\n\n var next = void 0;\n\n for (var [n, p] of Node.texts(editor)) {\n if (Path.compare(p, _path4) === -1) {\n _prev = [n, p];\n } else {\n next = [n, p];\n break;\n }\n }\n\n if (_prev) {\n _point4.path = _prev[1];\n _point4.offset = _prev[0].text.length;\n } else if (next) {\n _point4.path = next[1];\n _point4.offset = 0;\n } else {\n selection = null;\n }\n }\n }\n }\n\n break;\n }\n\n case 'remove_text':\n {\n var {\n path: _path5,\n offset: _offset,\n text: _text2\n } = op;\n\n var _node5 = Node.leaf(editor, _path5);\n\n var _before = _node5.text.slice(0, _offset);\n\n var _after = _node5.text.slice(_offset + _text2.length);\n\n _node5.text = _before + _after;\n\n if (selection) {\n for (var [_point5, _key5] of Range.points(selection)) {\n selection[_key5] = Point.transform(_point5, op);\n }\n }\n\n break;\n }\n\n case 'set_node':\n {\n var {\n path: _path6,\n newProperties\n } = op;\n\n if (_path6.length === 0) {\n throw new Error(\"Cannot set properties on the root node!\");\n }\n\n var _node6 = Node.get(editor, _path6);\n\n for (var _key6 in newProperties) {\n if (_key6 === 'children' || _key6 === 'text') {\n throw new Error(\"Cannot set the \\\"\".concat(_key6, \"\\\" property of nodes!\"));\n }\n\n var value = newProperties[_key6];\n\n if (value == null) {\n delete _node6[_key6];\n } else {\n _node6[_key6] = value;\n }\n }\n\n break;\n }\n\n case 'set_selection':\n {\n var {\n newProperties: _newProperties\n } = op;\n\n if (_newProperties == null) {\n selection = _newProperties;\n } else if (selection == null) {\n if (!Range.isRange(_newProperties)) {\n throw new Error(\"Cannot apply an incomplete \\\"set_selection\\\" operation properties \".concat(JSON.stringify(_newProperties), \" when there is no current selection.\"));\n }\n\n selection = _newProperties;\n } else {\n Object.assign(selection, _newProperties);\n }\n\n break;\n }\n\n case 'split_node':\n {\n var {\n path: _path7,\n position,\n properties\n } = op;\n\n if (_path7.length === 0) {\n throw new Error(\"Cannot apply a \\\"split_node\\\" operation at path [\".concat(_path7, \"] because the root node cannot be split.\"));\n }\n\n var _node7 = Node.get(editor, _path7);\n\n var _parent4 = Node.parent(editor, _path7);\n\n var _index4 = _path7[_path7.length - 1];\n var newNode;\n\n if (Text.isText(_node7)) {\n var _before2 = _node7.text.slice(0, position);\n\n var _after2 = _node7.text.slice(position);\n\n _node7.text = _before2;\n newNode = _objectSpread$1({}, _node7, {}, properties, {\n text: _after2\n });\n } else {\n var _before3 = _node7.children.slice(0, position);\n\n var _after3 = _node7.children.slice(position);\n\n _node7.children = _before3;\n newNode = _objectSpread$1({}, _node7, {}, properties, {\n children: _after3\n });\n }\n\n _parent4.children.splice(_index4 + 1, 0, newNode);\n\n if (selection) {\n for (var [_point6, _key7] of Range.points(selection)) {\n selection[_key7] = Point.transform(_point6, op);\n }\n }\n\n break;\n }\n }\n\n editor.children = immer.finishDraft(editor.children);\n\n if (selection) {\n editor.selection = immer.isDraft(selection) ? immer.finishDraft(selection) : selection;\n } else {\n editor.selection = null;\n }\n },\n\n /**\r\n * Convert a range into a non-hanging one.\r\n */\n unhangRange(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var [start, end] = Range.edges(range); // PERF: exit early if we can guarantee that the range isn't hanging.\n\n if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range)) {\n return range;\n }\n\n var endBlock = Editor.above(editor, {\n at: end,\n match: n => Editor.isBlock(editor, n)\n });\n var blockPath = endBlock ? endBlock[1] : [];\n var first = Editor.start(editor, []);\n var before = {\n anchor: first,\n focus: end\n };\n var skip = true;\n\n for (var [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n voids\n })) {\n if (skip) {\n skip = false;\n continue;\n }\n\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = {\n path,\n offset: node.text.length\n };\n break;\n }\n }\n\n return {\n anchor: start,\n focus: end\n };\n },\n\n /**\r\n * Match a void node in the current branch of the editor.\r\n */\n void(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Editor.above(editor, _objectSpread$1({}, options, {\n match: n => Editor.isVoid(editor, n)\n }));\n },\n\n /**\r\n * Call a function, deferring normalization until after it completes.\r\n */\n withoutNormalizing(editor, fn) {\n var value = Editor.isNormalizing(editor);\n NORMALIZING.set(editor, false);\n fn();\n NORMALIZING.set(editor, value);\n Editor.normalize(editor);\n }\n\n};\n\nvar Element = {\n /**\r\n * Check if a value implements the `Element` interface.\r\n */\n isElement(value) {\n return isPlainObject(value) && Node.isNodeList(value.children) && !Editor.isEditor(value);\n },\n\n /**\r\n * Check if a value is an array of `Element` objects.\r\n */\n isElementList(value) {\n return Array.isArray(value) && (value.length === 0 || Element.isElement(value[0]));\n },\n\n /**\r\n * Check if an element matches set of properties.\r\n *\r\n * Note: this checks custom properties, and it does not ensure that any\r\n * children are equivalent.\r\n */\n matches(element, props) {\n for (var key in props) {\n if (key === 'children') {\n continue;\n }\n\n if (element[key] !== props[key]) {\n return false;\n }\n }\n\n return true;\n }\n\n};\n\nvar Location = {\n /**\r\n * Check if a value implements the `Location` interface.\r\n */\n isLocation(value) {\n return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value);\n }\n\n};\nvar Span = {\n /**\r\n * Check if a value implements the `Span` interface.\r\n */\n isSpan(value) {\n return Array.isArray(value) && value.length === 2 && value.every(Path.isPath);\n }\n\n};\n\nvar Node = {\n /**\r\n * Get the node at a specific path, asserting that it's an ancestor node.\r\n */\n ancestor(root, path) {\n var node = Node.get(root, path);\n\n if (Text.isText(node)) {\n throw new Error(\"Cannot get the ancestor node at path [\".concat(path, \"] because it refers to a text node instead: \").concat(node));\n }\n\n return node;\n },\n\n /**\r\n * Return an iterable of all the ancestor nodes above a specific path.\r\n *\r\n * By default the order is bottom-up, from lowest to highest ancestor in\r\n * the tree, but you can pass the `reverse: true` option to go top-down.\r\n */\n *ancestors(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n for (var p of Path.ancestors(path, options)) {\n var n = Node.ancestor(root, p);\n var entry = [n, p];\n yield entry;\n }\n },\n\n /**\r\n * Get the child of a node at a specific index.\r\n */\n child(root, index) {\n if (Text.isText(root)) {\n throw new Error(\"Cannot get the child of a text node: \".concat(JSON.stringify(root)));\n }\n\n var c = root.children[index];\n\n if (c == null) {\n throw new Error(\"Cannot get child at index `\".concat(index, \"` in node: \").concat(JSON.stringify(root)));\n }\n\n return c;\n },\n\n /**\r\n * Iterate over the children of a node at a specific path.\r\n */\n *children(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n reverse = false\n } = options;\n var ancestor = Node.ancestor(root, path);\n var {\n children\n } = ancestor;\n var index = reverse ? children.length - 1 : 0;\n\n while (reverse ? index >= 0 : index < children.length) {\n var child = Node.child(ancestor, index);\n var childPath = path.concat(index);\n yield [child, childPath];\n index = reverse ? index - 1 : index + 1;\n }\n },\n\n /**\r\n * Get an entry for the common ancesetor node of two paths.\r\n */\n common(root, path, another) {\n var p = Path.common(path, another);\n var n = Node.get(root, p);\n return [n, p];\n },\n\n /**\r\n * Get the node at a specific path, asserting that it's a descendant node.\r\n */\n descendant(root, path) {\n var node = Node.get(root, path);\n\n if (Editor.isEditor(node)) {\n throw new Error(\"Cannot get the descendant node at path [\".concat(path, \"] because it refers to the root editor node instead: \").concat(node));\n }\n\n return node;\n },\n\n /**\r\n * Return an iterable of all the descendant node entries inside a root node.\r\n */\n *descendants(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var [node, path] of Node.nodes(root, options)) {\n if (path.length !== 0) {\n // NOTE: we have to coerce here because checking the path's length does\n // guarantee that `node` is not a `Editor`, but TypeScript doesn't know.\n yield [node, path];\n }\n }\n },\n\n /**\r\n * Return an iterable of all the element nodes inside a root node. Each iteration\r\n * will return an `ElementEntry` tuple consisting of `[Element, Path]`. If the\r\n * root node is an element it will be included in the iteration as well.\r\n */\n *elements(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var [node, path] of Node.nodes(root, options)) {\n if (Element.isElement(node)) {\n yield [node, path];\n }\n }\n },\n\n /**\r\n * Get the first node entry in a root node from a path.\r\n */\n first(root, path) {\n var p = path.slice();\n var n = Node.get(root, p);\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break;\n } else {\n n = n.children[0];\n p.push(0);\n }\n }\n\n return [n, p];\n },\n\n /**\r\n * Get the sliced fragment represented by a range inside a root node.\r\n */\n fragment(root, range) {\n if (Text.isText(root)) {\n throw new Error(\"Cannot get a fragment starting from a root text node: \".concat(JSON.stringify(root)));\n }\n\n var newRoot = immer.produce(root, r => {\n var [start, end] = Range.edges(range);\n var iterable = Node.nodes(r, {\n reverse: true,\n pass: (_ref) => {\n var [, path] = _ref;\n return !Range.includes(range, path);\n }\n });\n\n for (var [, path] of iterable) {\n if (!Range.includes(range, path)) {\n var parent = Node.parent(r, path);\n var index = path[path.length - 1];\n parent.children.splice(index, 1);\n }\n\n if (Path.equals(path, end.path)) {\n var leaf = Node.leaf(r, path);\n leaf.text = leaf.text.slice(0, end.offset);\n }\n\n if (Path.equals(path, start.path)) {\n var _leaf = Node.leaf(r, path);\n\n _leaf.text = _leaf.text.slice(start.offset);\n }\n }\n\n delete r.selection;\n });\n return newRoot.children;\n },\n\n /**\r\n * Get the descendant node referred to by a specific path. If the path is an\r\n * empty array, it refers to the root node itself.\r\n */\n get(root, path) {\n var node = root;\n\n for (var i = 0; i < path.length; i++) {\n var p = path[i];\n\n if (Text.isText(node) || !node.children[p]) {\n throw new Error(\"Cannot find a descendant at path [\".concat(path, \"] in node: \").concat(JSON.stringify(root)));\n }\n\n node = node.children[p];\n }\n\n return node;\n },\n\n /**\r\n * Check if a descendant node exists at a specific path.\r\n */\n has(root, path) {\n var node = root;\n\n for (var i = 0; i < path.length; i++) {\n var p = path[i];\n\n if (Text.isText(node) || !node.children[p]) {\n return false;\n }\n\n node = node.children[p];\n }\n\n return true;\n },\n\n /**\r\n * Check if a value implements the `Node` interface.\r\n */\n isNode(value) {\n return Text.isText(value) || Element.isElement(value) || Editor.isEditor(value);\n },\n\n /**\r\n * Check if a value is a list of `Node` objects.\r\n */\n isNodeList(value) {\n return Array.isArray(value) && (value.length === 0 || Node.isNode(value[0]));\n },\n\n /**\r\n * Get the lash node entry in a root node from a path.\r\n */\n last(root, path) {\n var p = path.slice();\n var n = Node.get(root, p);\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break;\n } else {\n var i = n.children.length - 1;\n n = n.children[i];\n p.push(i);\n }\n }\n\n return [n, p];\n },\n\n /**\r\n * Get the node at a specific path, ensuring it's a leaf text node.\r\n */\n leaf(root, path) {\n var node = Node.get(root, path);\n\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the leaf node at path [\".concat(path, \"] because it refers to a non-leaf node: \").concat(node));\n }\n\n return node;\n },\n\n /**\r\n * Return an iterable of the in a branch of the tree, from a specific path.\r\n *\r\n * By default the order is top-down, from lowest to highest node in the tree,\r\n * but you can pass the `reverse: true` option to go bottom-up.\r\n */\n *levels(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n for (var p of Path.levels(path, options)) {\n var n = Node.get(root, p);\n yield [n, p];\n }\n },\n\n /**\r\n * Check if a node matches a set of props.\r\n */\n matches(node, props) {\n return Element.isElement(node) && Element.matches(node, props) || Text.isText(node) && Text.matches(node, props);\n },\n\n /**\r\n * Return an iterable of all the node entries of a root node. Each entry is\r\n * returned as a `[Node, Path]` tuple, with the path referring to the node's\r\n * position inside the root node.\r\n */\n *nodes(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n pass,\n reverse = false\n } = options;\n var {\n from = [],\n to\n } = options;\n var visited = new Set();\n var p = [];\n var n = root;\n\n while (true) {\n if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n break;\n }\n\n if (!visited.has(n)) {\n yield [n, p];\n } // If we're allowed to go downward and we haven't decsended yet, do.\n\n\n if (!visited.has(n) && !Text.isText(n) && n.children.length !== 0 && (pass == null || pass([n, p]) === false)) {\n visited.add(n);\n var nextIndex = reverse ? n.children.length - 1 : 0;\n\n if (Path.isAncestor(p, from)) {\n nextIndex = from[p.length];\n }\n\n p = p.concat(nextIndex);\n n = Node.get(root, p);\n continue;\n } // If we're at the root and we can't go down, we're done.\n\n\n if (p.length === 0) {\n break;\n } // If we're going forward...\n\n\n if (!reverse) {\n var newPath = Path.next(p);\n\n if (Node.has(root, newPath)) {\n p = newPath;\n n = Node.get(root, p);\n continue;\n }\n } // If we're going backward...\n\n\n if (reverse && p[p.length - 1] !== 0) {\n var _newPath = Path.previous(p);\n\n p = _newPath;\n n = Node.get(root, p);\n continue;\n } // Otherwise we're going upward...\n\n\n p = Path.parent(p);\n n = Node.get(root, p);\n visited.add(n);\n }\n },\n\n /**\r\n * Get the parent of a node at a specific path.\r\n */\n parent(root, path) {\n var parentPath = Path.parent(path);\n var p = Node.get(root, parentPath);\n\n if (Text.isText(p)) {\n throw new Error(\"Cannot get the parent of path [\".concat(path, \"] because it does not exist in the root.\"));\n }\n\n return p;\n },\n\n /**\r\n * Get the concatenated text string of a node's content.\r\n *\r\n * Note that this will not include spaces or line breaks between block nodes.\r\n * It is not a user-facing string, but a string for performing offset-related\r\n * computations for a node.\r\n */\n string(node) {\n if (Text.isText(node)) {\n return node.text;\n } else {\n return node.children.map(Node.string).join('');\n }\n },\n\n /**\r\n * Return an iterable of all leaf text nodes in a root node.\r\n */\n *texts(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var [node, path] of Node.nodes(root, options)) {\n if (Text.isText(node)) {\n yield [node, path];\n }\n }\n }\n\n};\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Operation = {\n /**\r\n * Check of a value is a `NodeOperation` object.\r\n */\n isNodeOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_node');\n },\n\n /**\r\n * Check of a value is an `Operation` object.\r\n */\n isOperation(value) {\n if (!isPlainObject(value)) {\n return false;\n }\n\n switch (value.type) {\n case 'insert_node':\n return Path.isPath(value.path) && Node.isNode(value.node);\n\n case 'insert_text':\n return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n\n case 'merge_node':\n return typeof value.position === 'number' && (typeof value.target === 'number' || value.target === null) && Path.isPath(value.path) && isPlainObject(value.properties);\n\n case 'move_node':\n return Path.isPath(value.path) && Path.isPath(value.newPath);\n\n case 'remove_node':\n return Path.isPath(value.path) && Node.isNode(value.node);\n\n case 'remove_text':\n return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n\n case 'set_node':\n return Path.isPath(value.path) && isPlainObject(value.properties) && isPlainObject(value.newProperties);\n\n case 'set_selection':\n return value.properties === null && Range.isRange(value.newProperties) || value.newProperties === null && Range.isRange(value.properties) || isPlainObject(value.properties) && isPlainObject(value.newProperties);\n\n case 'split_node':\n return Path.isPath(value.path) && typeof value.position === 'number' && (typeof value.target === 'number' || value.target === null) && isPlainObject(value.properties);\n\n default:\n return false;\n }\n },\n\n /**\r\n * Check if a value is a list of `Operation` objects.\r\n */\n isOperationList(value) {\n return Array.isArray(value) && (value.length === 0 || Operation.isOperation(value[0]));\n },\n\n /**\r\n * Check of a value is a `SelectionOperation` object.\r\n */\n isSelectionOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_selection');\n },\n\n /**\r\n * Check of a value is a `TextOperation` object.\r\n */\n isTextOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_text');\n },\n\n /**\r\n * Invert an operation, returning a new operation that will exactly undo the\r\n * original when applied.\r\n */\n inverse(op) {\n switch (op.type) {\n case 'insert_node':\n {\n return _objectSpread$2({}, op, {\n type: 'remove_node'\n });\n }\n\n case 'insert_text':\n {\n return _objectSpread$2({}, op, {\n type: 'remove_text'\n });\n }\n\n case 'merge_node':\n {\n return _objectSpread$2({}, op, {\n type: 'split_node',\n path: Path.previous(op.path)\n });\n }\n\n case 'move_node':\n {\n var {\n newPath,\n path\n } = op; // PERF: in this case the move operation is a no-op anyways.\n\n if (Path.equals(newPath, path)) {\n return op;\n } // We need to get the original path here, but sometimes the `newPath`\n // is a younger sibling of (or ends before) the original, and this\n // accounts for it.\n\n\n var inversePath = Path.transform(path, op);\n var inverseNewPath = Path.transform(Path.next(path), op);\n return _objectSpread$2({}, op, {\n path: inversePath,\n newPath: inverseNewPath\n });\n }\n\n case 'remove_node':\n {\n return _objectSpread$2({}, op, {\n type: 'insert_node'\n });\n }\n\n case 'remove_text':\n {\n return _objectSpread$2({}, op, {\n type: 'insert_text'\n });\n }\n\n case 'set_node':\n {\n var {\n properties,\n newProperties\n } = op;\n return _objectSpread$2({}, op, {\n properties: newProperties,\n newProperties: properties\n });\n }\n\n case 'set_selection':\n {\n var {\n properties: _properties,\n newProperties: _newProperties\n } = op;\n\n if (_properties == null) {\n return _objectSpread$2({}, op, {\n properties: _newProperties,\n newProperties: null\n });\n } else if (_newProperties == null) {\n return _objectSpread$2({}, op, {\n properties: null,\n newProperties: _properties\n });\n } else {\n return _objectSpread$2({}, op, {\n properties: _newProperties,\n newProperties: _properties\n });\n }\n }\n\n case 'split_node':\n {\n return _objectSpread$2({}, op, {\n type: 'merge_node',\n path: Path.next(op.path)\n });\n }\n }\n }\n\n};\n\nvar Path = {\n /**\r\n * Get a list of ancestor paths for a given path.\r\n *\r\n * The paths are sorted from deepest to shallowest ancestor. However, if the\r\n * `reverse: true` option is passed, they are reversed.\r\n */\n ancestors(path) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var paths = Path.levels(path, options);\n\n if (reverse) {\n paths = paths.slice(1);\n } else {\n paths = paths.slice(0, -1);\n }\n\n return paths;\n },\n\n /**\r\n * Get the common ancestor path of two paths.\r\n */\n common(path, another) {\n var common = [];\n\n for (var i = 0; i < path.length && i < another.length; i++) {\n var av = path[i];\n var bv = another[i];\n\n if (av !== bv) {\n break;\n }\n\n common.push(av);\n }\n\n return common;\n },\n\n /**\r\n * Compare a path to another, returning an integer indicating whether the path\r\n * was before, at, or after the other.\r\n *\r\n * Note: Two paths of unequal length can still receive a `0` result if one is\r\n * directly above or below the other. If you want exact matching, use\r\n * [[Path.equals]] instead.\r\n */\n compare(path, another) {\n var min = Math.min(path.length, another.length);\n\n for (var i = 0; i < min; i++) {\n if (path[i] < another[i]) return -1;\n if (path[i] > another[i]) return 1;\n }\n\n return 0;\n },\n\n /**\r\n * Check if a path ends after one of the indexes in another.\r\n */\n endsAfter(path, another) {\n var i = path.length - 1;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n var av = path[i];\n var bv = another[i];\n return Path.equals(as, bs) && av > bv;\n },\n\n /**\r\n * Check if a path ends at one of the indexes in another.\r\n */\n endsAt(path, another) {\n var i = path.length;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n return Path.equals(as, bs);\n },\n\n /**\r\n * Check if a path ends before one of the indexes in another.\r\n */\n endsBefore(path, another) {\n var i = path.length - 1;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n var av = path[i];\n var bv = another[i];\n return Path.equals(as, bs) && av < bv;\n },\n\n /**\r\n * Check if a path is exactly equal to another.\r\n */\n equals(path, another) {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n },\n\n /**\r\n * Check if a path is after another.\r\n */\n isAfter(path, another) {\n return Path.compare(path, another) === 1;\n },\n\n /**\r\n * Check if a path is an ancestor of another.\r\n */\n isAncestor(path, another) {\n return path.length < another.length && Path.compare(path, another) === 0;\n },\n\n /**\r\n * Check if a path is before another.\r\n */\n isBefore(path, another) {\n return Path.compare(path, another) === -1;\n },\n\n /**\r\n * Check if a path is a child of another.\r\n */\n isChild(path, another) {\n return path.length === another.length + 1 && Path.compare(path, another) === 0;\n },\n\n /**\r\n * Check if a path is equal to or an ancestor of another.\r\n */\n isCommon(path, another) {\n return path.length <= another.length && Path.compare(path, another) === 0;\n },\n\n /**\r\n * Check if a path is a descendant of another.\r\n */\n isDescendant(path, another) {\n return path.length > another.length && Path.compare(path, another) === 0;\n },\n\n /**\r\n * Check if a path is the parent of another.\r\n */\n isParent(path, another) {\n return path.length + 1 === another.length && Path.compare(path, another) === 0;\n },\n\n /**\r\n * Check is a value implements the `Path` interface.\r\n */\n isPath(value) {\n return Array.isArray(value) && (value.length === 0 || typeof value[0] === 'number');\n },\n\n /**\r\n * Check if a path is a sibling of another.\r\n */\n isSibling(path, another) {\n if (path.length !== another.length) {\n return false;\n }\n\n var as = path.slice(0, -1);\n var bs = another.slice(0, -1);\n var al = path[path.length - 1];\n var bl = another[another.length - 1];\n return al !== bl && Path.equals(as, bs);\n },\n\n /**\r\n * Get a list of paths at every level down to a path. Note: this is the same\r\n * as `Path.ancestors`, but including the path itself.\r\n *\r\n * The paths are sorted from shallowest to deepest. However, if the `reverse:\r\n * true` option is passed, they are reversed.\r\n */\n levels(path) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var list = [];\n\n for (var i = 0; i <= path.length; i++) {\n list.push(path.slice(0, i));\n }\n\n if (reverse) {\n list.reverse();\n }\n\n return list;\n },\n\n /**\r\n * Given a path, get the path to the next sibling node.\r\n */\n next(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the next path of a root path [\".concat(path, \"], because it has no next index.\"));\n }\n\n var last = path[path.length - 1];\n return path.slice(0, -1).concat(last + 1);\n },\n\n /**\r\n * Given a path, return a new path referring to the parent node above it.\r\n */\n parent(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the parent path of the root path [\".concat(path, \"].\"));\n }\n\n return path.slice(0, -1);\n },\n\n /**\r\n * Given a path, get the path to the previous sibling node.\r\n */\n previous(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the previous path of a root path [\".concat(path, \"], because it has no previous index.\"));\n }\n\n var last = path[path.length - 1];\n\n if (last <= 0) {\n throw new Error(\"Cannot get the previous path of a first child path [\".concat(path, \"] because it would result in a negative index.\"));\n }\n\n return path.slice(0, -1).concat(last - 1);\n },\n\n /**\r\n * Get a path relative to an ancestor.\r\n */\n relative(path, ancestor) {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\"Cannot get the relative path of [\".concat(path, \"] inside ancestor [\").concat(ancestor, \"], because it is not above or equal to the path.\"));\n }\n\n return path.slice(ancestor.length);\n },\n\n /**\r\n * Transform a path by an operation.\r\n */\n transform(path, operation) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return immer.produce(path, p => {\n var {\n affinity = 'forward'\n } = options; // PERF: Exit early if the operation is guaranteed not to have an effect.\n\n if (path.length === 0) {\n return;\n }\n\n switch (operation.type) {\n case 'insert_node':\n {\n var {\n path: op\n } = operation;\n\n if (Path.equals(op, p) || Path.endsBefore(op, p) || Path.isAncestor(op, p)) {\n p[op.length - 1] += 1;\n }\n\n break;\n }\n\n case 'remove_node':\n {\n var {\n path: _op\n } = operation;\n\n if (Path.equals(_op, p) || Path.isAncestor(_op, p)) {\n return null;\n } else if (Path.endsBefore(_op, p)) {\n p[_op.length - 1] -= 1;\n }\n\n break;\n }\n\n case 'merge_node':\n {\n var {\n path: _op2,\n position\n } = operation;\n\n if (Path.equals(_op2, p) || Path.endsBefore(_op2, p)) {\n p[_op2.length - 1] -= 1;\n } else if (Path.isAncestor(_op2, p)) {\n p[_op2.length - 1] -= 1;\n p[_op2.length] += position;\n }\n\n break;\n }\n\n case 'split_node':\n {\n var {\n path: _op3,\n position: _position\n } = operation;\n\n if (Path.equals(_op3, p)) {\n if (affinity === 'forward') {\n p[p.length - 1] += 1;\n } else if (affinity === 'backward') ; else {\n return null;\n }\n } else if (Path.endsBefore(_op3, p)) {\n p[_op3.length - 1] += 1;\n } else if (Path.isAncestor(_op3, p) && path[_op3.length] >= _position) {\n p[_op3.length - 1] += 1;\n p[_op3.length] -= _position;\n }\n\n break;\n }\n\n case 'move_node':\n {\n var {\n path: _op4,\n newPath: onp\n } = operation; // If the old and new path are the same, it's a no-op.\n\n if (Path.equals(_op4, onp)) {\n return;\n }\n\n if (Path.isAncestor(_op4, p) || Path.equals(_op4, p)) {\n var copy = onp.slice();\n\n if (Path.endsBefore(_op4, onp) && _op4.length < onp.length) {\n var i = Math.min(onp.length, _op4.length) - 1;\n copy[i] -= 1;\n }\n\n return copy.concat(p.slice(_op4.length));\n } else if (Path.endsBefore(onp, p) || Path.equals(onp, p) || Path.isAncestor(onp, p)) {\n if (Path.endsBefore(_op4, p)) {\n p[_op4.length - 1] -= 1;\n }\n\n p[onp.length - 1] += 1;\n } else if (Path.endsBefore(_op4, p)) {\n if (Path.equals(onp, p)) {\n p[onp.length - 1] += 1;\n }\n\n p[_op4.length - 1] -= 1;\n }\n\n break;\n }\n }\n });\n }\n\n};\n\nvar PathRef = {\n /**\r\n * Transform the path ref's current value by an operation.\r\n */\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n\n if (current == null) {\n return;\n }\n\n var path = Path.transform(current, op, {\n affinity\n });\n ref.current = path;\n\n if (path == null) {\n ref.unref();\n }\n }\n\n};\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Point = {\n /**\r\n * Compare a point to another, returning an integer indicating whether the\r\n * point was before, at, or after the other.\r\n */\n compare(point, another) {\n var result = Path.compare(point.path, another.path);\n\n if (result === 0) {\n if (point.offset < another.offset) return -1;\n if (point.offset > another.offset) return 1;\n return 0;\n }\n\n return result;\n },\n\n /**\r\n * Check if a point is after another.\r\n */\n isAfter(point, another) {\n return Point.compare(point, another) === 1;\n },\n\n /**\r\n * Check if a point is before another.\r\n */\n isBefore(point, another) {\n return Point.compare(point, another) === -1;\n },\n\n /**\r\n * Check if a point is exactly equal to another.\r\n */\n equals(point, another) {\n // PERF: ensure the offsets are equal first since they are cheaper to check.\n return point.offset === another.offset && Path.equals(point.path, another.path);\n },\n\n /**\r\n * Check if a value implements the `Point` interface.\r\n */\n isPoint(value) {\n return isPlainObject(value) && typeof value.offset === 'number' && Path.isPath(value.path);\n },\n\n /**\r\n * Transform a point by an operation.\r\n */\n transform(point, op) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return immer.produce(point, p => {\n var {\n affinity = 'forward'\n } = options;\n var {\n path,\n offset\n } = p;\n\n switch (op.type) {\n case 'insert_node':\n case 'move_node':\n {\n p.path = Path.transform(path, op, options);\n break;\n }\n\n case 'insert_text':\n {\n if (Path.equals(op.path, path) && op.offset <= offset) {\n p.offset += op.text.length;\n }\n\n break;\n }\n\n case 'merge_node':\n {\n if (Path.equals(op.path, path)) {\n p.offset += op.position;\n }\n\n p.path = Path.transform(path, op, options);\n break;\n }\n\n case 'remove_text':\n {\n if (Path.equals(op.path, path) && op.offset <= offset) {\n p.offset -= Math.min(offset - op.offset, op.text.length);\n }\n\n break;\n }\n\n case 'remove_node':\n {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null;\n }\n\n p.path = Path.transform(path, op, options);\n break;\n }\n\n case 'split_node':\n {\n if (Path.equals(op.path, path)) {\n if (op.position === offset && affinity == null) {\n return null;\n } else if (op.position < offset || op.position === offset && affinity === 'forward') {\n p.offset -= op.position;\n p.path = Path.transform(path, op, _objectSpread$3({}, options, {\n affinity: 'forward'\n }));\n }\n } else {\n p.path = Path.transform(path, op, options);\n }\n\n break;\n }\n }\n });\n }\n\n};\n\nvar PointRef = {\n /**\r\n * Transform the point ref's current value by an operation.\r\n */\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n\n if (current == null) {\n return;\n }\n\n var point = Point.transform(current, op, {\n affinity\n });\n ref.current = point;\n\n if (point == null) {\n ref.unref();\n }\n }\n\n};\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Range = {\n /**\r\n * Get the start and end points of a range, in the order in which they appear\r\n * in the document.\r\n */\n edges(range) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var {\n anchor,\n focus\n } = range;\n return Range.isBackward(range) === reverse ? [anchor, focus] : [focus, anchor];\n },\n\n /**\r\n * Get the end point of a range.\r\n */\n end(range) {\n var [, end] = Range.edges(range);\n return end;\n },\n\n /**\r\n * Check if a range is exactly equal to another.\r\n */\n equals(range, another) {\n return Point.equals(range.anchor, another.anchor) && Point.equals(range.focus, another.focus);\n },\n\n /**\r\n * Check if a range includes a path, a point or part of another range.\r\n */\n includes(range, target) {\n if (Range.isRange(target)) {\n if (Range.includes(range, target.anchor) || Range.includes(range, target.focus)) {\n return true;\n }\n\n var [rs, re] = Range.edges(range);\n var [ts, te] = Range.edges(target);\n return Point.isBefore(rs, ts) && Point.isAfter(re, te);\n }\n\n var [start, end] = Range.edges(range);\n var isAfterStart = false;\n var isBeforeEnd = false;\n\n if (Point.isPoint(target)) {\n isAfterStart = Point.compare(target, start) >= 0;\n isBeforeEnd = Point.compare(target, end) <= 0;\n } else {\n isAfterStart = Path.compare(target, start.path) >= 0;\n isBeforeEnd = Path.compare(target, end.path) <= 0;\n }\n\n return isAfterStart && isBeforeEnd;\n },\n\n /**\r\n * Get the intersection of a range with another.\r\n */\n intersection(range, another) {\n var rest = _objectWithoutProperties(range, [\"anchor\", \"focus\"]);\n\n var [s1, e1] = Range.edges(range);\n var [s2, e2] = Range.edges(another);\n var start = Point.isBefore(s1, s2) ? s2 : s1;\n var end = Point.isBefore(e1, e2) ? e1 : e2;\n\n if (Point.isBefore(end, start)) {\n return null;\n } else {\n return _objectSpread$4({\n anchor: start,\n focus: end\n }, rest);\n }\n },\n\n /**\r\n * Check if a range is backward, meaning that its anchor point appears in the\r\n * document _after_ its focus point.\r\n */\n isBackward(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.isAfter(anchor, focus);\n },\n\n /**\r\n * Check if a range is collapsed, meaning that both its anchor and focus\r\n * points refer to the exact same position in the document.\r\n */\n isCollapsed(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.equals(anchor, focus);\n },\n\n /**\r\n * Check if a range is expanded.\r\n *\r\n * This is the opposite of [[Range.isCollapsed]] and is provided for legibility.\r\n */\n isExpanded(range) {\n return !Range.isCollapsed(range);\n },\n\n /**\r\n * Check if a range is forward.\r\n *\r\n * This is the opposite of [[Range.isBackward]] and is provided for legibility.\r\n */\n isForward(range) {\n return !Range.isBackward(range);\n },\n\n /**\r\n * Check if a value implements the [[Range]] interface.\r\n */\n isRange(value) {\n return isPlainObject(value) && Point.isPoint(value.anchor) && Point.isPoint(value.focus);\n },\n\n /**\r\n * Iterate through all of the point entries in a range.\r\n */\n *points(range) {\n yield [range.anchor, 'anchor'];\n yield [range.focus, 'focus'];\n },\n\n /**\r\n * Get the start point of a range.\r\n */\n start(range) {\n var [start] = Range.edges(range);\n return start;\n },\n\n /**\r\n * Transform a range by an operation.\r\n */\n transform(range, op, options) {\n var {\n affinity = 'inward'\n } = options;\n var affinityAnchor;\n var affinityFocus;\n\n if (affinity === 'inward') {\n if (Range.isForward(range)) {\n affinityAnchor = 'forward';\n affinityFocus = 'backward';\n } else {\n affinityAnchor = 'backward';\n affinityFocus = 'forward';\n }\n } else if (affinity === 'outward') {\n if (Range.isForward(range)) {\n affinityAnchor = 'backward';\n affinityFocus = 'forward';\n } else {\n affinityAnchor = 'forward';\n affinityFocus = 'backward';\n }\n } else {\n affinityAnchor = affinity;\n affinityFocus = affinity;\n }\n\n return immer.produce(range, r => {\n var anchor = Point.transform(r.anchor, op, {\n affinity: affinityAnchor\n });\n var focus = Point.transform(r.focus, op, {\n affinity: affinityFocus\n });\n\n if (!anchor || !focus) {\n return null;\n }\n\n r.anchor = anchor;\n r.focus = focus;\n });\n }\n\n};\n\nvar RangeRef = {\n /**\r\n * Transform the range ref's current value by an operation.\r\n */\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n\n if (current == null) {\n return;\n }\n\n var path = Range.transform(current, op, {\n affinity\n });\n ref.current = path;\n\n if (path == null) {\n ref.unref();\n }\n }\n\n};\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Text = {\n /**\r\n * Check if two text nodes are equal.\r\n */\n equals(text, another) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n loose = false\n } = options;\n\n for (var key in text) {\n if (loose && key === 'text') {\n continue;\n }\n\n if (text[key] !== another[key]) {\n return false;\n }\n }\n\n for (var _key in another) {\n if (loose && _key === 'text') {\n continue;\n }\n\n if (text[_key] !== another[_key]) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\r\n * Check if a value implements the `Text` interface.\r\n */\n isText(value) {\n return isPlainObject(value) && typeof value.text === 'string';\n },\n\n /**\r\n * Check if a value is a list of `Text` objects.\r\n */\n isTextList(value) {\n return Array.isArray(value) && (value.length === 0 || Text.isText(value[0]));\n },\n\n /**\r\n * Check if an text matches set of properties.\r\n *\r\n * Note: this is for matching custom properties, and it does not ensure that\r\n * the `text` property are two nodes equal.\r\n */\n matches(text, props) {\n for (var key in props) {\n if (key === 'text') {\n continue;\n }\n\n if (text[key] !== props[key]) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\r\n * Get the leaves for a text node given decorations.\r\n */\n decorations(node, decorations) {\n var leaves = [_objectSpread$5({}, node)];\n\n for (var dec of decorations) {\n var rest = _objectWithoutProperties(dec, [\"anchor\", \"focus\"]);\n\n var [start, end] = Range.edges(dec);\n var next = [];\n var o = 0;\n\n for (var leaf of leaves) {\n var {\n length\n } = leaf.text;\n var offset = o;\n o += length; // If the range encompases the entire leaf, add the range.\n\n if (start.offset <= offset && end.offset >= offset + length) {\n Object.assign(leaf, rest);\n next.push(leaf);\n continue;\n } // If the range starts after the leaf, or ends before it, continue.\n\n\n if (start.offset > offset + length || end.offset < offset || end.offset === offset && offset !== 0) {\n next.push(leaf);\n continue;\n } // Otherwise we need to split the leaf, at the start, end, or both,\n // and add the range to the middle intersecting section. Do the end\n // split first since we don't need to update the offset that way.\n\n\n var middle = leaf;\n var before = void 0;\n var after = void 0;\n\n if (end.offset < offset + length) {\n var off = end.offset - offset;\n after = _objectSpread$5({}, middle, {\n text: middle.text.slice(off)\n });\n middle = _objectSpread$5({}, middle, {\n text: middle.text.slice(0, off)\n });\n }\n\n if (start.offset > offset) {\n var _off = start.offset - offset;\n\n before = _objectSpread$5({}, middle, {\n text: middle.text.slice(0, _off)\n });\n middle = _objectSpread$5({}, middle, {\n text: middle.text.slice(_off)\n });\n }\n\n Object.assign(middle, rest);\n\n if (before) {\n next.push(before);\n }\n\n next.push(middle);\n\n if (after) {\n next.push(after);\n }\n }\n\n leaves = next;\n }\n\n return leaves;\n }\n\n};\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar GeneralTransforms = {\n /**\r\n * Transform the editor by an operation.\r\n */\n transform(editor, op) {\n editor.children = immer.createDraft(editor.children);\n var selection = editor.selection && immer.createDraft(editor.selection);\n\n switch (op.type) {\n case 'insert_node':\n {\n var {\n path,\n node\n } = op;\n var parent = Node.parent(editor, path);\n var index = path[path.length - 1];\n parent.children.splice(index, 0, node);\n\n if (selection) {\n for (var [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op);\n }\n }\n\n break;\n }\n\n case 'insert_text':\n {\n var {\n path: _path,\n offset,\n text\n } = op;\n\n var _node = Node.leaf(editor, _path);\n\n var before = _node.text.slice(0, offset);\n\n var after = _node.text.slice(offset);\n\n _node.text = before + text + after;\n\n if (selection) {\n for (var [_point, _key] of Range.points(selection)) {\n selection[_key] = Point.transform(_point, op);\n }\n }\n\n break;\n }\n\n case 'merge_node':\n {\n var {\n path: _path2\n } = op;\n\n var _node2 = Node.get(editor, _path2);\n\n var prevPath = Path.previous(_path2);\n var prev = Node.get(editor, prevPath);\n\n var _parent = Node.parent(editor, _path2);\n\n var _index = _path2[_path2.length - 1];\n\n if (Text.isText(_node2) && Text.isText(prev)) {\n prev.text += _node2.text;\n } else if (!Text.isText(_node2) && !Text.isText(prev)) {\n prev.children.push(..._node2.children);\n } else {\n throw new Error(\"Cannot apply a \\\"merge_node\\\" operation at path [\".concat(_path2, \"] to nodes of different interaces: \").concat(_node2, \" \").concat(prev));\n }\n\n _parent.children.splice(_index, 1);\n\n if (selection) {\n for (var [_point2, _key2] of Range.points(selection)) {\n selection[_key2] = Point.transform(_point2, op);\n }\n }\n\n break;\n }\n\n case 'move_node':\n {\n var {\n path: _path3,\n newPath\n } = op;\n\n if (Path.isAncestor(_path3, newPath)) {\n throw new Error(\"Cannot move a path [\".concat(_path3, \"] to new path [\").concat(newPath, \"] because the destination is inside itself.\"));\n }\n\n var _node3 = Node.get(editor, _path3);\n\n var _parent2 = Node.parent(editor, _path3);\n\n var _index2 = _path3[_path3.length - 1]; // This is tricky, but since the `path` and `newPath` both refer to\n // the same snapshot in time, there's a mismatch. After either\n // removing the original position, the second step's path can be out\n // of date. So instead of using the `op.newPath` directly, we\n // transform `op.path` to ascertain what the `newPath` would be after\n // the operation was applied.\n\n _parent2.children.splice(_index2, 1);\n\n var truePath = Path.transform(_path3, op);\n var newParent = Node.get(editor, Path.parent(truePath));\n var newIndex = truePath[truePath.length - 1];\n newParent.children.splice(newIndex, 0, _node3);\n\n if (selection) {\n for (var [_point3, _key3] of Range.points(selection)) {\n selection[_key3] = Point.transform(_point3, op);\n }\n }\n\n break;\n }\n\n case 'remove_node':\n {\n var {\n path: _path4\n } = op;\n var _index3 = _path4[_path4.length - 1];\n\n var _parent3 = Node.parent(editor, _path4);\n\n _parent3.children.splice(_index3, 1); // Transform all of the points in the value, but if the point was in the\n // node that was removed we need to update the range or remove it.\n\n\n if (selection) {\n for (var [_point4, _key4] of Range.points(selection)) {\n var result = Point.transform(_point4, op);\n\n if (selection != null && result != null) {\n selection[_key4] = result;\n } else {\n var _prev = void 0;\n\n var next = void 0;\n\n for (var [n, p] of Node.texts(editor)) {\n if (Path.compare(p, _path4) === -1) {\n _prev = [n, p];\n } else {\n next = [n, p];\n break;\n }\n }\n\n if (_prev) {\n _point4.path = _prev[1];\n _point4.offset = _prev[0].text.length;\n } else if (next) {\n _point4.path = next[1];\n _point4.offset = 0;\n } else {\n selection = null;\n }\n }\n }\n }\n\n break;\n }\n\n case 'remove_text':\n {\n var {\n path: _path5,\n offset: _offset,\n text: _text\n } = op;\n\n var _node4 = Node.leaf(editor, _path5);\n\n var _before = _node4.text.slice(0, _offset);\n\n var _after = _node4.text.slice(_offset + _text.length);\n\n _node4.text = _before + _after;\n\n if (selection) {\n for (var [_point5, _key5] of Range.points(selection)) {\n selection[_key5] = Point.transform(_point5, op);\n }\n }\n\n break;\n }\n\n case 'set_node':\n {\n var {\n path: _path6,\n newProperties\n } = op;\n\n if (_path6.length === 0) {\n throw new Error(\"Cannot set properties on the root node!\");\n }\n\n var _node5 = Node.get(editor, _path6);\n\n for (var _key6 in newProperties) {\n if (_key6 === 'children' || _key6 === 'text') {\n throw new Error(\"Cannot set the \\\"\".concat(_key6, \"\\\" property of nodes!\"));\n }\n\n var value = newProperties[_key6];\n\n if (value == null) {\n delete _node5[_key6];\n } else {\n _node5[_key6] = value;\n }\n }\n\n break;\n }\n\n case 'set_selection':\n {\n var {\n newProperties: _newProperties\n } = op;\n\n if (_newProperties == null) {\n selection = _newProperties;\n } else if (selection == null) {\n if (!Range.isRange(_newProperties)) {\n throw new Error(\"Cannot apply an incomplete \\\"set_selection\\\" operation properties \".concat(JSON.stringify(_newProperties), \" when there is no current selection.\"));\n }\n\n selection = _newProperties;\n } else {\n Object.assign(selection, _newProperties);\n }\n\n break;\n }\n\n case 'split_node':\n {\n var {\n path: _path7,\n position,\n properties\n } = op;\n\n if (_path7.length === 0) {\n throw new Error(\"Cannot apply a \\\"split_node\\\" operation at path [\".concat(_path7, \"] because the root node cannot be split.\"));\n }\n\n var _node6 = Node.get(editor, _path7);\n\n var _parent4 = Node.parent(editor, _path7);\n\n var _index4 = _path7[_path7.length - 1];\n var newNode;\n\n if (Text.isText(_node6)) {\n var _before2 = _node6.text.slice(0, position);\n\n var _after2 = _node6.text.slice(position);\n\n _node6.text = _before2;\n newNode = _objectSpread$6({}, _node6, {}, properties, {\n text: _after2\n });\n } else {\n var _before3 = _node6.children.slice(0, position);\n\n var _after3 = _node6.children.slice(position);\n\n _node6.children = _before3;\n newNode = _objectSpread$6({}, _node6, {}, properties, {\n children: _after3\n });\n }\n\n _parent4.children.splice(_index4 + 1, 0, newNode);\n\n if (selection) {\n for (var [_point6, _key7] of Range.points(selection)) {\n selection[_key7] = Point.transform(_point6, op);\n }\n }\n\n break;\n }\n }\n\n editor.children = immer.finishDraft(editor.children);\n\n if (selection) {\n editor.selection = immer.isDraft(selection) ? immer.finishDraft(selection) : selection;\n } else {\n editor.selection = null;\n }\n }\n\n};\n\nfunction ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$7(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar NodeTransforms = {\n /**\r\n * Insert nodes at a specific location in the Editor.\r\n */\n insertNodes(editor, nodes) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n var {\n at,\n match,\n select\n } = options;\n\n if (Node.isNode(nodes)) {\n nodes = [nodes];\n }\n\n if (nodes.length === 0) {\n return;\n }\n\n var [node] = nodes; // By default, use the selection as the target location. But if there is\n // no selection, insert at the end of the document since that is such a\n // common use case when inserting from a non-selected state.\n\n if (!at) {\n if (editor.selection) {\n at = editor.selection;\n } else if (editor.children.length > 0) {\n at = Editor.end(editor, []);\n } else {\n at = [0];\n }\n\n select = true;\n }\n\n if (select == null) {\n select = false;\n }\n\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at);\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n }\n\n if (Point.isPoint(at)) {\n if (match == null) {\n if (Text.isText(node)) {\n match = n => Text.isText(n);\n } else if (editor.isInline(node)) {\n match = n => Text.isText(n) || Editor.isInline(editor, n);\n } else {\n match = n => Editor.isBlock(editor, n);\n }\n }\n\n var [entry] = Editor.nodes(editor, {\n at: at.path,\n match,\n mode,\n voids\n });\n\n if (entry) {\n var [, _matchPath] = entry;\n var pathRef = Editor.pathRef(editor, _matchPath);\n var isAtEnd = Editor.isEnd(editor, at, _matchPath);\n Transforms.splitNodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var path = pathRef.unref();\n at = isAtEnd ? Path.next(path) : path;\n } else {\n return;\n }\n }\n\n var parentPath = Path.parent(at);\n var index = at[at.length - 1];\n\n if (!voids && Editor.void(editor, {\n at: parentPath\n })) {\n return;\n }\n\n for (var _node of nodes) {\n var _path = parentPath.concat(index);\n\n index++;\n editor.apply({\n type: 'insert_node',\n path: _path,\n node: _node\n });\n }\n\n if (select) {\n var point = Editor.end(editor, at);\n\n if (point) {\n Transforms.select(editor, point);\n }\n }\n });\n },\n\n /**\r\n * Lift nodes at a specific location upwards in the document tree, splitting\r\n * their parent in two if necessary.\r\n */\n liftNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n at = editor.selection,\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match\n } = options;\n\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n }\n\n if (!at) {\n return;\n }\n\n var matches = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, (_ref) => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n\n if (path.length < 2) {\n throw new Error(\"Cannot lift node at a path [\".concat(path, \"] because it has a depth of less than `2`.\"));\n }\n\n var [parent, parentPath] = Editor.node(editor, Path.parent(path));\n var index = path[path.length - 1];\n var {\n length\n } = parent.children;\n\n if (length === 1) {\n var toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: toPath,\n voids\n });\n Transforms.removeNodes(editor, {\n at: parentPath,\n voids\n });\n } else if (index === 0) {\n Transforms.moveNodes(editor, {\n at: path,\n to: parentPath,\n voids\n });\n } else if (index === length - 1) {\n var _toPath = Path.next(parentPath);\n\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath,\n voids\n });\n } else {\n var splitPath = Path.next(path);\n\n var _toPath2 = Path.next(parentPath);\n\n Transforms.splitNodes(editor, {\n at: splitPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath2,\n voids\n });\n }\n }\n });\n },\n\n /**\r\n * Merge a node at a location with the previous node of the same depth,\r\n * removing any empty containing nodes after the merge if necessary.\r\n */\n mergeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match,\n at = editor.selection\n } = options;\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n\n match = n => parent.children.includes(n);\n } else {\n match = n => Editor.isBlock(editor, n);\n }\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n }\n\n var [current] = Editor.nodes(editor, {\n at,\n match,\n voids,\n mode\n });\n var prev = Editor.previous(editor, {\n at,\n match,\n voids,\n mode\n });\n\n if (!current || !prev) {\n return;\n }\n\n var [node, path] = current;\n var [prevNode, prevPath] = prev;\n\n if (path.length === 0 || prevPath.length === 0) {\n return;\n }\n\n var newPath = Path.next(prevPath);\n var commonPath = Path.common(path, prevPath);\n var isPreviousSibling = Path.isSibling(path, prevPath);\n var levels = Array.from(Editor.levels(editor, {\n at: path\n }), (_ref2) => {\n var [n] = _ref2;\n return n;\n }).slice(commonPath.length).slice(0, -1); // Determine if the merge will leave an ancestor of the path empty as a\n // result, in which case we'll want to remove it after merging.\n\n var emptyAncestor = Editor.above(editor, {\n at: path,\n mode: 'highest',\n match: n => levels.includes(n) && Element.isElement(n) && n.children.length === 1\n });\n var emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1]);\n var properties;\n var position; // Ensure that the nodes are equivalent, and figure out what the position\n // and extra properties of the merge will be.\n\n if (Text.isText(node) && Text.isText(prevNode)) {\n var rest = _objectWithoutProperties(node, [\"text\"]);\n\n position = prevNode.text.length;\n properties = rest;\n } else if (Element.isElement(node) && Element.isElement(prevNode)) {\n var rest = _objectWithoutProperties(node, [\"children\"]);\n\n position = prevNode.children.length;\n properties = rest;\n } else {\n throw new Error(\"Cannot merge the node at path [\".concat(path, \"] with the previous sibling because it is not the same kind: \").concat(JSON.stringify(node), \" \").concat(JSON.stringify(prevNode)));\n } // If the node isn't already the next sibling of the previous node, move\n // it so that it is before merging.\n\n\n if (!isPreviousSibling) {\n Transforms.moveNodes(editor, {\n at: path,\n to: newPath,\n voids\n });\n } // If there was going to be an empty ancestor of the node that was merged,\n // we remove it from the tree.\n\n\n if (emptyRef) {\n Transforms.removeNodes(editor, {\n at: emptyRef.current,\n voids\n });\n } // If the target node that we're merging with is empty, remove it instead\n // of merging the two. This is a common rich text editor behavior to\n // prevent losing formatting when deleting entire nodes when you have a\n // hanging selection.\n\n\n if (Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode) || Text.isText(prevNode) && prevNode.text === '') {\n Transforms.removeNodes(editor, {\n at: prevPath,\n voids\n });\n } else {\n editor.apply({\n type: 'merge_node',\n path: newPath,\n position,\n target: null,\n properties\n });\n }\n\n if (emptyRef) {\n emptyRef.unref();\n }\n });\n },\n\n /**\r\n * Move the nodes at a location to a new location.\r\n */\n moveNodes(editor, options) {\n Editor.withoutNormalizing(editor, () => {\n var {\n to,\n at = editor.selection,\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n }\n\n var toRef = Editor.pathRef(editor, to);\n var targets = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(targets, (_ref3) => {\n var [, p] = _ref3;\n return Editor.pathRef(editor, p);\n });\n\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n var newPath = toRef.current;\n\n if (path.length !== 0) {\n editor.apply({\n type: 'move_node',\n path,\n newPath\n });\n }\n }\n\n toRef.unref();\n });\n },\n\n /**\r\n * Remove the nodes at a specific location in the document.\r\n */\n removeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n var {\n at = editor.selection,\n match\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n\n var depths = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(depths, (_ref4) => {\n var [, p] = _ref4;\n return Editor.pathRef(editor, p);\n });\n\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n\n if (path) {\n var [node] = Editor.node(editor, path);\n editor.apply({\n type: 'remove_node',\n path,\n node\n });\n }\n }\n });\n },\n\n /**\r\n * Set new properties on the nodes at a location.\r\n */\n setNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match,\n at = editor.selection\n } = options;\n var {\n hanging = false,\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n\n if (split && Range.isRange(at)) {\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward'\n });\n var [start, end] = Range.edges(at);\n var splitMode = mode === 'lowest' ? 'lowest' : 'highest';\n Transforms.splitNodes(editor, {\n at: end,\n match,\n mode: splitMode,\n voids\n });\n Transforms.splitNodes(editor, {\n at: start,\n match,\n mode: splitMode,\n voids\n });\n at = rangeRef.unref();\n\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n\n for (var [node, path] of Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n })) {\n var properties = {};\n var newProperties = {}; // You can't set properties on the editor node.\n\n if (path.length === 0) {\n continue;\n }\n\n for (var k in props) {\n if (k === 'children' || k === 'text') {\n continue;\n }\n\n if (props[k] !== node[k]) {\n properties[k] = node[k];\n newProperties[k] = props[k];\n }\n }\n\n if (Object.keys(newProperties).length !== 0) {\n editor.apply({\n type: 'set_node',\n path,\n properties,\n newProperties\n });\n }\n }\n });\n },\n\n /**\r\n * Split the nodes at a specific location.\r\n */\n splitNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection,\n height = 0,\n always = false\n } = options;\n\n if (match == null) {\n match = n => Editor.isBlock(editor, n);\n }\n\n if (Range.isRange(at)) {\n at = deleteRange(editor, at);\n } // If the target is a path, the default height-skipping and position\n // counters need to account for us potentially splitting at a non-leaf.\n\n\n if (Path.isPath(at)) {\n var path = at;\n var point = Editor.point(editor, path);\n var [parent] = Editor.parent(editor, path);\n\n match = n => n === parent;\n\n height = point.path.length - path.length + 1;\n at = point;\n always = true;\n }\n\n if (!at) {\n return;\n }\n\n var beforeRef = Editor.pointRef(editor, at, {\n affinity: 'backward'\n });\n var [highest] = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n\n if (!highest) {\n return;\n }\n\n var voidMatch = Editor.void(editor, {\n at,\n mode: 'highest'\n });\n var nudge = 0;\n\n if (!voids && voidMatch) {\n var [voidNode, voidPath] = voidMatch;\n\n if (Element.isElement(voidNode) && editor.isInline(voidNode)) {\n var after = Editor.after(editor, voidPath);\n\n if (!after) {\n var text = {\n text: ''\n };\n var afterPath = Path.next(voidPath);\n Transforms.insertNodes(editor, text, {\n at: afterPath,\n voids\n });\n after = Editor.point(editor, afterPath);\n }\n\n at = after;\n always = true;\n }\n\n var siblingHeight = at.path.length - voidPath.length;\n height = siblingHeight + 1;\n always = true;\n }\n\n var afterRef = Editor.pointRef(editor, at);\n var depth = at.path.length - height;\n var [, highestPath] = highest;\n var lowestPath = at.path.slice(0, depth);\n var position = height === 0 ? at.offset : at.path[depth] + nudge;\n var target = null;\n\n for (var [node, _path2] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids\n })) {\n var split = false;\n\n if (_path2.length < highestPath.length || _path2.length === 0 || !voids && Editor.isVoid(editor, node)) {\n break;\n }\n\n var _point = beforeRef.current;\n var isEnd = Editor.isEnd(editor, _point, _path2);\n\n if (always || !beforeRef || !Editor.isEdge(editor, _point, _path2)) {\n split = true;\n\n var properties = _objectWithoutProperties(node, [\"text\", \"children\"]);\n\n editor.apply({\n type: 'split_node',\n path: _path2,\n position,\n target,\n properties\n });\n }\n\n target = position;\n position = _path2[_path2.length - 1] + (split || isEnd ? 1 : 0);\n }\n\n if (options.at == null) {\n var _point2 = afterRef.current || Editor.end(editor, []);\n\n Transforms.select(editor, _point2);\n }\n\n beforeRef.unref();\n afterRef.unref();\n });\n },\n\n /**\r\n * Unset properties on the nodes at a location.\r\n */\n unsetNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!Array.isArray(props)) {\n props = [props];\n }\n\n var obj = {};\n\n for (var key of props) {\n obj[key] = null;\n }\n\n Transforms.setNodes(editor, obj, options);\n },\n\n /**\r\n * Unwrap the nodes at a location from a parent node, splitting the parent if\r\n * necessary to ensure that only the content in the range is unwrapped.\r\n */\n unwrapNodes(editor, options) {\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n var {\n at = editor.selection,\n match\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n }\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n\n var rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null;\n var matches = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, (_ref5) => {\n var [, p] = _ref5;\n return Editor.pathRef(editor, p);\n });\n\n var _loop = function _loop(pathRef) {\n var path = pathRef.unref();\n var [node] = Editor.node(editor, path);\n var range = Editor.range(editor, path);\n\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current, range);\n }\n\n Transforms.liftNodes(editor, {\n at: range,\n match: n => node.children.includes(n),\n voids\n });\n };\n\n for (var pathRef of pathRefs) {\n _loop(pathRef);\n }\n\n if (rangeRef) {\n rangeRef.unref();\n }\n });\n },\n\n /**\r\n * Wrap the nodes at a location in a new container node, splitting the edges\r\n * of the range first to ensure that only the content in the range is wrapped.\r\n */\n wrapNodes(editor, element) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n\n if (!at) {\n return;\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n match = matchPath(editor, at);\n } else if (editor.isInline(element)) {\n match = n => Editor.isInline(editor, n) || Text.isText(n);\n } else {\n match = n => Editor.isBlock(editor, n);\n }\n }\n\n if (split && Range.isRange(at)) {\n var [start, end] = Range.edges(at);\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward'\n });\n Transforms.splitNodes(editor, {\n at: end,\n match,\n voids\n });\n Transforms.splitNodes(editor, {\n at: start,\n match,\n voids\n });\n at = rangeRef.unref();\n\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n\n var roots = Array.from(Editor.nodes(editor, {\n at,\n match: editor.isInline(element) ? n => Editor.isBlock(editor, n) : n => Editor.isEditor(n),\n mode: 'highest',\n voids\n }));\n\n for (var [, rootPath] of roots) {\n var a = Range.isRange(at) ? Range.intersection(at, Editor.range(editor, rootPath)) : at;\n\n if (!a) {\n continue;\n }\n\n var matches = Array.from(Editor.nodes(editor, {\n at: a,\n match,\n mode,\n voids\n }));\n\n if (matches.length > 0) {\n (function () {\n var [first] = matches;\n var last = matches[matches.length - 1];\n var [, firstPath] = first;\n var [, lastPath] = last;\n var commonPath = Path.equals(firstPath, lastPath) ? Path.parent(firstPath) : Path.common(firstPath, lastPath);\n var range = Editor.range(editor, firstPath, lastPath);\n var [commonNode] = Editor.node(editor, commonPath);\n var depth = commonPath.length + 1;\n var wrapperPath = Path.next(lastPath.slice(0, depth));\n\n var wrapper = _objectSpread$7({}, element, {\n children: []\n });\n\n Transforms.insertNodes(editor, wrapper, {\n at: wrapperPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: range,\n match: n => commonNode.children.includes(n),\n to: wrapperPath.concat(0),\n voids\n });\n })();\n }\n }\n });\n }\n\n};\n/**\r\n * Convert a range into a point by deleting it's content.\r\n */\n\nvar deleteRange = (editor, range) => {\n if (Range.isCollapsed(range)) {\n return range.anchor;\n } else {\n var [, end] = Range.edges(range);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at: range\n });\n return pointRef.unref();\n }\n};\n\nvar matchPath = (editor, path) => {\n var [node] = Editor.node(editor, path);\n return n => n === node;\n};\n\nvar SelectionTransforms = {\n /**\r\n * Collapse the selection.\r\n */\n collapse(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n edge = 'anchor'\n } = options;\n var {\n selection\n } = editor;\n\n if (!selection) {\n return;\n } else if (edge === 'anchor') {\n Transforms.select(editor, selection.anchor);\n } else if (edge === 'focus') {\n Transforms.select(editor, selection.focus);\n } else if (edge === 'start') {\n var [start] = Range.edges(selection);\n Transforms.select(editor, start);\n } else if (edge === 'end') {\n var [, end] = Range.edges(selection);\n Transforms.select(editor, end);\n }\n },\n\n /**\r\n * Unset the selection.\r\n */\n deselect(editor) {\n var {\n selection\n } = editor;\n\n if (selection) {\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: null\n });\n }\n },\n\n /**\r\n * Move the selection's point forward or backward.\r\n */\n move(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n selection\n } = editor;\n var {\n distance = 1,\n unit = 'character',\n reverse = false\n } = options;\n var {\n edge = null\n } = options;\n\n if (!selection) {\n return;\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n }\n\n var {\n anchor,\n focus\n } = selection;\n var opts = {\n distance,\n unit\n };\n var props = {};\n\n if (edge == null || edge === 'anchor') {\n var point = reverse ? Editor.before(editor, anchor, opts) : Editor.after(editor, anchor, opts);\n\n if (point) {\n props.anchor = point;\n }\n }\n\n if (edge == null || edge === 'focus') {\n var _point = reverse ? Editor.before(editor, focus, opts) : Editor.after(editor, focus, opts);\n\n if (_point) {\n props.focus = _point;\n }\n }\n\n Transforms.setSelection(editor, props);\n },\n\n /**\r\n * Set the selection to a new value.\r\n */\n select(editor, target) {\n var {\n selection\n } = editor;\n target = Editor.range(editor, target);\n\n if (selection) {\n Transforms.setSelection(editor, target);\n return;\n }\n\n if (!Range.isRange(target)) {\n throw new Error(\"When setting the selection and the current selection is `null` you must provide at least an `anchor` and `focus`, but you passed: \".concat(JSON.stringify(target)));\n }\n\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: target\n });\n },\n\n /**\r\n * Set new properties on one of the selection's points.\r\n */\n setPoint(editor, props, options) {\n var {\n selection\n } = editor;\n var {\n edge = 'both'\n } = options;\n\n if (!selection) {\n return;\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n }\n\n var {\n anchor,\n focus\n } = selection;\n var point = edge === 'anchor' ? anchor : focus;\n var newPoint = Object.assign(point, props);\n\n if (edge === 'anchor') {\n Transforms.setSelection(editor, {\n anchor: newPoint\n });\n } else {\n Transforms.setSelection(editor, {\n focus: newPoint\n });\n }\n },\n\n /**\r\n * Set new properties on the selection.\r\n */\n setSelection(editor, props) {\n var {\n selection\n } = editor;\n var oldProps = {};\n var newProps = {};\n\n if (!selection) {\n return;\n }\n\n for (var k in props) {\n if (k === 'anchor' && props.anchor != null && !Point.equals(props.anchor, selection.anchor) || k === 'focus' && props.focus != null && !Point.equals(props.focus, selection.focus) || k !== 'anchor' && k !== 'focus' && props[k] !== selection[k]) {\n oldProps[k] = selection[k];\n newProps[k] = props[k];\n }\n }\n\n if (Object.keys(oldProps).length > 0) {\n editor.apply({\n type: 'set_selection',\n properties: oldProps,\n newProperties: newProps\n });\n }\n }\n\n};\n\nvar TextTransforms = {\n /**\r\n * Delete content in the editor.\r\n */\n delete(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n reverse = false,\n unit = 'character',\n distance = 1,\n voids = false\n } = options;\n var {\n at = editor.selection,\n hanging = false\n } = options;\n\n if (!at) {\n return;\n }\n\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n at = at.anchor;\n }\n\n if (Point.isPoint(at)) {\n var furthestVoid = Editor.void(editor, {\n at,\n mode: 'highest'\n });\n\n if (!voids && furthestVoid) {\n var [, voidPath] = furthestVoid;\n at = voidPath;\n } else {\n var opts = {\n unit,\n distance\n };\n var target = reverse ? Editor.before(editor, at, opts) || Editor.start(editor, []) : Editor.after(editor, at, opts) || Editor.end(editor, []);\n at = {\n anchor: at,\n focus: target\n };\n hanging = true;\n }\n }\n\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, {\n at,\n voids\n });\n return;\n }\n\n if (Range.isCollapsed(at)) {\n return;\n }\n\n if (!hanging) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n\n var [start, end] = Range.edges(at);\n var startBlock = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: start,\n voids\n });\n var endBlock = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: end,\n voids\n });\n var isAcrossBlocks = startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n var isSingleText = Path.equals(start.path, end.path);\n var startVoid = voids ? null : Editor.void(editor, {\n at: start,\n mode: 'highest'\n });\n var endVoid = voids ? null : Editor.void(editor, {\n at: end,\n mode: 'highest'\n }); // If the start or end points are inside an inline void, nudge them out.\n\n if (startVoid) {\n var before = Editor.before(editor, start);\n\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start = before;\n }\n }\n\n if (endVoid) {\n var after = Editor.after(editor, end);\n\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end = after;\n }\n } // Get the highest nodes that are completely inside the range, as well as\n // the start and end nodes.\n\n\n var matches = [];\n var lastPath;\n\n for (var entry of Editor.nodes(editor, {\n at,\n voids\n })) {\n var [node, path] = entry;\n\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue;\n }\n\n if (!voids && Editor.isVoid(editor, node) || !Path.isCommon(path, start.path) && !Path.isCommon(path, end.path)) {\n matches.push(entry);\n lastPath = path;\n }\n }\n\n var pathRefs = Array.from(matches, (_ref) => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n var startRef = Editor.pointRef(editor, start);\n var endRef = Editor.pointRef(editor, end);\n\n if (!isSingleText && !startVoid) {\n var _point = startRef.current;\n var [_node] = Editor.leaf(editor, _point);\n var {\n path: _path\n } = _point;\n var {\n offset\n } = start;\n\n var text = _node.text.slice(offset);\n\n editor.apply({\n type: 'remove_text',\n path: _path,\n offset,\n text\n });\n }\n\n for (var pathRef of pathRefs) {\n var _path2 = pathRef.unref();\n\n Transforms.removeNodes(editor, {\n at: _path2,\n voids\n });\n }\n\n if (!endVoid) {\n var _point2 = endRef.current;\n var [_node2] = Editor.leaf(editor, _point2);\n var {\n path: _path3\n } = _point2;\n\n var _offset = isSingleText ? start.offset : 0;\n\n var _text = _node2.text.slice(_offset, end.offset);\n\n editor.apply({\n type: 'remove_text',\n path: _path3,\n offset: _offset,\n text: _text\n });\n }\n\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n Transforms.mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids\n });\n }\n\n var point = endRef.unref() || startRef.unref();\n\n if (options.at == null && point) {\n Transforms.select(editor, point);\n }\n });\n },\n\n /**\r\n * Insert a fragment at a specific location in the editor.\r\n */\n insertFragment(editor, fragment) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false\n } = options;\n var {\n at = editor.selection\n } = options;\n\n if (!fragment.length) {\n return;\n }\n\n if (!at) {\n return;\n } else if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at);\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n\n if (!voids && Editor.void(editor, {\n at: end\n })) {\n return;\n }\n\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at);\n }\n\n if (!voids && Editor.void(editor, {\n at\n })) {\n return;\n } // If the insert point is at the edge of an inline node, move it outside\n // instead since it will need to be split otherwise.\n\n\n var inlineElementMatch = Editor.above(editor, {\n at,\n match: n => Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n\n if (inlineElementMatch) {\n var [, _inlinePath] = inlineElementMatch;\n\n if (Editor.isEnd(editor, at, _inlinePath)) {\n var after = Editor.after(editor, _inlinePath);\n at = after;\n } else if (Editor.isStart(editor, at, _inlinePath)) {\n var before = Editor.before(editor, _inlinePath);\n at = before;\n }\n }\n\n var blockMatch = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at,\n voids\n });\n var [, blockPath] = blockMatch;\n var isBlockStart = Editor.isStart(editor, at, blockPath);\n var isBlockEnd = Editor.isEnd(editor, at, blockPath);\n var mergeStart = !isBlockStart || isBlockStart && isBlockEnd;\n var mergeEnd = !isBlockEnd;\n var [, firstPath] = Node.first({\n children: fragment\n }, []);\n var [, lastPath] = Node.last({\n children: fragment\n }, []);\n var matches = [];\n\n var matcher = (_ref2) => {\n var [n, p] = _ref2;\n\n if (mergeStart && Path.isAncestor(p, firstPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n return false;\n }\n\n if (mergeEnd && Path.isAncestor(p, lastPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n return false;\n }\n\n return true;\n };\n\n for (var entry of Node.nodes({\n children: fragment\n }, {\n pass: matcher\n })) {\n if (entry[1].length > 0 && matcher(entry)) {\n matches.push(entry);\n }\n }\n\n var starts = [];\n var middles = [];\n var ends = [];\n var starting = true;\n var hasBlocks = false;\n\n for (var [node] of matches) {\n if (Element.isElement(node) && !editor.isInline(node)) {\n starting = false;\n hasBlocks = true;\n middles.push(node);\n } else if (starting) {\n starts.push(node);\n } else {\n ends.push(node);\n }\n }\n\n var [inlineMatch] = Editor.nodes(editor, {\n at,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n var [, inlinePath] = inlineMatch;\n var isInlineStart = Editor.isStart(editor, at, inlinePath);\n var isInlineEnd = Editor.isEnd(editor, at, inlinePath);\n var middleRef = Editor.pathRef(editor, isBlockEnd ? Path.next(blockPath) : blockPath);\n var endRef = Editor.pathRef(editor, isInlineEnd ? Path.next(inlinePath) : inlinePath);\n Transforms.splitNodes(editor, {\n at,\n match: n => hasBlocks ? Editor.isBlock(editor, n) : Text.isText(n) || Editor.isInline(editor, n),\n mode: hasBlocks ? 'lowest' : 'highest',\n voids\n });\n var startRef = Editor.pathRef(editor, !isInlineStart || isInlineStart && isInlineEnd ? Path.next(inlinePath) : inlinePath);\n Transforms.insertNodes(editor, starts, {\n at: startRef.current,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n Transforms.insertNodes(editor, middles, {\n at: middleRef.current,\n match: n => Editor.isBlock(editor, n),\n mode: 'lowest',\n voids\n });\n Transforms.insertNodes(editor, ends, {\n at: endRef.current,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n\n if (!options.at) {\n var path;\n\n if (ends.length > 0) {\n path = Path.previous(endRef.current);\n } else if (middles.length > 0) {\n path = Path.previous(middleRef.current);\n } else {\n path = Path.previous(startRef.current);\n }\n\n var _end = Editor.end(editor, path);\n\n Transforms.select(editor, _end);\n }\n\n startRef.unref();\n middleRef.unref();\n endRef.unref();\n });\n },\n\n /**\r\n * Insert a string of text in the Editor.\r\n */\n insertText(editor, text) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n voids = false\n } = options;\n var {\n at = editor.selection\n } = options;\n\n if (!at) {\n return;\n }\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var end = Range.end(at);\n\n if (!voids && Editor.void(editor, {\n at: end\n })) {\n return;\n }\n\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at,\n voids\n });\n at = pointRef.unref();\n Transforms.setSelection(editor, {\n anchor: at,\n focus: at\n });\n }\n }\n\n if (!voids && Editor.void(editor, {\n at\n })) {\n return;\n }\n\n var {\n path,\n offset\n } = at;\n editor.apply({\n type: 'insert_text',\n path,\n offset,\n text\n });\n });\n }\n\n};\n\nfunction ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$8(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Transforms = _objectSpread$8({}, GeneralTransforms, {}, NodeTransforms, {}, SelectionTransforms, {}, TextTransforms);\n\nexports.Editor = Editor;\nexports.Element = Element;\nexports.Location = Location;\nexports.Node = Node;\nexports.Operation = Operation;\nexports.Path = Path;\nexports.PathRef = PathRef;\nexports.Point = Point;\nexports.PointRef = PointRef;\nexports.Range = Range;\nexports.RangeRef = RangeRef;\nexports.Span = Span;\nexports.Text = Text;\nexports.Transforms = Transforms;\nexports.createEditor = createEditor;\n//# sourceMappingURL=index.js.map\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nfunction isElement(el) {\n return el != null && typeof el === 'object' && el.nodeType === 1;\n}\n\nfunction canOverflow(overflow, skipOverflowHiddenElements) {\n if (skipOverflowHiddenElements && overflow === 'hidden') {\n return false;\n }\n\n return overflow !== 'visible' && overflow !== 'clip';\n}\n\nfunction getFrameElement(el) {\n if (!el.ownerDocument || !el.ownerDocument.defaultView) {\n return null;\n }\n\n return el.ownerDocument.defaultView.frameElement;\n}\n\nfunction isHiddenByFrame(el) {\n var frame = getFrameElement(el);\n\n if (!frame) {\n return false;\n }\n\n return frame.clientHeight < el.scrollHeight || frame.clientWidth < el.scrollWidth;\n}\n\nfunction isScrollable(el, skipOverflowHiddenElements) {\n if (el.clientHeight < el.scrollHeight || el.clientWidth < el.scrollWidth) {\n var style = getComputedStyle(el, null);\n return canOverflow(style.overflowY, skipOverflowHiddenElements) || canOverflow(style.overflowX, skipOverflowHiddenElements) || isHiddenByFrame(el);\n }\n\n return false;\n}\n\nfunction alignNearest(scrollingEdgeStart, scrollingEdgeEnd, scrollingSize, scrollingBorderStart, scrollingBorderEnd, elementEdgeStart, elementEdgeEnd, elementSize) {\n if (elementEdgeStart < scrollingEdgeStart && elementEdgeEnd > scrollingEdgeEnd || elementEdgeStart > scrollingEdgeStart && elementEdgeEnd < scrollingEdgeEnd) {\n return 0;\n }\n\n if (elementEdgeStart <= scrollingEdgeStart && elementSize <= scrollingSize || elementEdgeEnd >= scrollingEdgeEnd && elementSize >= scrollingSize) {\n return elementEdgeStart - scrollingEdgeStart - scrollingBorderStart;\n }\n\n if (elementEdgeEnd > scrollingEdgeEnd && elementSize < scrollingSize || elementEdgeStart < scrollingEdgeStart && elementSize > scrollingSize) {\n return elementEdgeEnd - scrollingEdgeEnd + scrollingBorderEnd;\n }\n\n return 0;\n}\n\nvar _default = function _default(target, options) {\n var scrollMode = options.scrollMode,\n block = options.block,\n inline = options.inline,\n boundary = options.boundary,\n skipOverflowHiddenElements = options.skipOverflowHiddenElements;\n var checkBoundary = typeof boundary === 'function' ? boundary : function (node) {\n return node !== boundary;\n };\n\n if (!isElement(target)) {\n throw new TypeError('Invalid target');\n }\n\n var scrollingElement = document.scrollingElement || document.documentElement;\n var frames = [];\n var cursor = target;\n\n while (isElement(cursor) && checkBoundary(cursor)) {\n cursor = cursor.parentNode;\n\n if (cursor === scrollingElement) {\n frames.push(cursor);\n break;\n }\n\n if (cursor === document.body && isScrollable(cursor) && !isScrollable(document.documentElement)) {\n continue;\n }\n\n if (isScrollable(cursor, skipOverflowHiddenElements)) {\n frames.push(cursor);\n }\n }\n\n var viewportWidth = window.visualViewport ? visualViewport.width : innerWidth;\n var viewportHeight = window.visualViewport ? visualViewport.height : innerHeight;\n var viewportX = window.scrollX || pageXOffset;\n var viewportY = window.scrollY || pageYOffset;\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n targetHeight = _target$getBoundingCl.height,\n targetWidth = _target$getBoundingCl.width,\n targetTop = _target$getBoundingCl.top,\n targetRight = _target$getBoundingCl.right,\n targetBottom = _target$getBoundingCl.bottom,\n targetLeft = _target$getBoundingCl.left;\n\n var targetBlock = block === 'start' || block === 'nearest' ? targetTop : block === 'end' ? targetBottom : targetTop + targetHeight / 2;\n var targetInline = inline === 'center' ? targetLeft + targetWidth / 2 : inline === 'end' ? targetRight : targetLeft;\n var computations = [];\n\n for (var index = 0; index < frames.length; index++) {\n var frame = frames[index];\n\n var _frame$getBoundingCli = frame.getBoundingClientRect(),\n height = _frame$getBoundingCli.height,\n width = _frame$getBoundingCli.width,\n top = _frame$getBoundingCli.top,\n right = _frame$getBoundingCli.right,\n bottom = _frame$getBoundingCli.bottom,\n left = _frame$getBoundingCli.left;\n\n if (scrollMode === 'if-needed' && targetTop >= 0 && targetLeft >= 0 && targetBottom <= viewportHeight && targetRight <= viewportWidth && targetTop >= top && targetBottom <= bottom && targetLeft >= left && targetRight <= right) {\n return computations;\n }\n\n var frameStyle = getComputedStyle(frame);\n var borderLeft = parseInt(frameStyle.borderLeftWidth, 10);\n var borderTop = parseInt(frameStyle.borderTopWidth, 10);\n var borderRight = parseInt(frameStyle.borderRightWidth, 10);\n var borderBottom = parseInt(frameStyle.borderBottomWidth, 10);\n var blockScroll = 0;\n var inlineScroll = 0;\n var scrollbarWidth = 'offsetWidth' in frame ? frame.offsetWidth - frame.clientWidth - borderLeft - borderRight : 0;\n var scrollbarHeight = 'offsetHeight' in frame ? frame.offsetHeight - frame.clientHeight - borderTop - borderBottom : 0;\n\n if (scrollingElement === frame) {\n if (block === 'start') {\n blockScroll = targetBlock;\n } else if (block === 'end') {\n blockScroll = targetBlock - viewportHeight;\n } else if (block === 'nearest') {\n blockScroll = alignNearest(viewportY, viewportY + viewportHeight, viewportHeight, borderTop, borderBottom, viewportY + targetBlock, viewportY + targetBlock + targetHeight, targetHeight);\n } else {\n blockScroll = targetBlock - viewportHeight / 2;\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline;\n } else if (inline === 'center') {\n inlineScroll = targetInline - viewportWidth / 2;\n } else if (inline === 'end') {\n inlineScroll = targetInline - viewportWidth;\n } else {\n inlineScroll = alignNearest(viewportX, viewportX + viewportWidth, viewportWidth, borderLeft, borderRight, viewportX + targetInline, viewportX + targetInline + targetWidth, targetWidth);\n }\n\n blockScroll = Math.max(0, blockScroll + viewportY);\n inlineScroll = Math.max(0, inlineScroll + viewportX);\n } else {\n if (block === 'start') {\n blockScroll = targetBlock - top - borderTop;\n } else if (block === 'end') {\n blockScroll = targetBlock - bottom + borderBottom + scrollbarHeight;\n } else if (block === 'nearest') {\n blockScroll = alignNearest(top, bottom, height, borderTop, borderBottom + scrollbarHeight, targetBlock, targetBlock + targetHeight, targetHeight);\n } else {\n blockScroll = targetBlock - (top + height / 2) + scrollbarHeight / 2;\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline - left - borderLeft;\n } else if (inline === 'center') {\n inlineScroll = targetInline - (left + width / 2) + scrollbarWidth / 2;\n } else if (inline === 'end') {\n inlineScroll = targetInline - right + borderRight + scrollbarWidth;\n } else {\n inlineScroll = alignNearest(left, right, width, borderLeft, borderRight + scrollbarWidth, targetInline, targetInline + targetWidth, targetWidth);\n }\n\n var scrollLeft = frame.scrollLeft,\n scrollTop = frame.scrollTop;\n blockScroll = Math.max(0, Math.min(scrollTop + blockScroll, frame.scrollHeight - height + scrollbarHeight));\n inlineScroll = Math.max(0, Math.min(scrollLeft + inlineScroll, frame.scrollWidth - width + scrollbarWidth));\n targetBlock += scrollTop - blockScroll;\n targetInline += scrollLeft - inlineScroll;\n }\n\n computations.push({\n el: frame,\n top: blockScroll,\n left: inlineScroll\n });\n }\n\n return computations;\n};\n\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _computeScrollIntoView = _interopRequireDefault(require(\"compute-scroll-into-view\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction isOptionsObject(options) {\n return options === Object(options) && Object.keys(options).length !== 0;\n}\n\nfunction defaultBehavior(actions, behavior) {\n if (behavior === void 0) {\n behavior = 'auto';\n }\n\n var canSmoothScroll = 'scrollBehavior' in document.body.style;\n actions.forEach(function (_ref) {\n var el = _ref.el,\n top = _ref.top,\n left = _ref.left;\n\n if (el.scroll && canSmoothScroll) {\n el.scroll({\n top: top,\n left: left,\n behavior: behavior\n });\n } else {\n el.scrollTop = top;\n el.scrollLeft = left;\n }\n });\n}\n\nfunction getOptions(options) {\n if (options === false) {\n return {\n block: 'end',\n inline: 'nearest'\n };\n }\n\n if (isOptionsObject(options)) {\n return options;\n }\n\n return {\n block: 'start',\n inline: 'nearest'\n };\n}\n\nfunction scrollIntoView(target, options) {\n var targetIsDetached = !target.ownerDocument.documentElement.contains(target);\n\n if (isOptionsObject(options) && typeof options.behavior === 'function') {\n return options.behavior(targetIsDetached ? [] : (0, _computeScrollIntoView[\"default\"])(target, options));\n }\n\n if (targetIsDetached) {\n return;\n }\n\n var computeOptions = getOptions(options);\n return defaultBehavior((0, _computeScrollIntoView[\"default\"])(target, computeOptions), computeOptions.behavior);\n}\n\nvar _default = scrollIntoView;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","'use strict'\n\nmodule.exports = direction\n\nvar RTL = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nvar LTR =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\nvar rtl = new RegExp('^[^' + LTR + ']*[' + RTL + ']')\nvar ltr = new RegExp('^[^' + RTL + ']*[' + LTR + ']')\n\nfunction direction(value) {\n value = String(value || '')\n\n if (rtl.test(value)) {\n return 'rtl'\n }\n\n if (ltr.test(value)) {\n return 'ltr'\n }\n\n return 'neutral'\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\n * Constants.\n */\n\nvar IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nvar MODIFIERS = {\n alt: 'altKey',\n control: 'ctrlKey',\n meta: 'metaKey',\n shift: 'shiftKey'\n};\n\nvar ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: ' ',\n spacebar: ' ',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n};\n\nvar CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n ' ': 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n '\\'': 222\n};\n\nfor (var f = 1; f < 20; f++) {\n CODES['f' + f] = 111 + f;\n}\n\n/**\n * Is hotkey?\n */\n\nfunction isHotkey(hotkey, options, event) {\n if (options && !('byKey' in options)) {\n event = options;\n options = null;\n }\n\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n\n var array = hotkey.map(function (string) {\n return parseHotkey(string, options);\n });\n var check = function check(e) {\n return array.some(function (object) {\n return compareHotkey(object, e);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n}\n\nfunction isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n}\n\nfunction isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, { byKey: true }, event);\n}\n\n/**\n * Parse.\n */\n\nfunction parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n\n // Special case to handle the `+` key since we use it as a separator.\n hotkey = hotkey.replace('++', '+add');\n var values = hotkey.split('+');\n var length = values.length;\n\n // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n for (var k in MODIFIERS) {\n ret[MODIFIERS[k]] = false;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n\n var optional = value.endsWith('?') && value.length > 1;\n\n if (optional) {\n value = value.slice(0, -1);\n }\n\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Compare.\n */\n\nfunction compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n\n if (expected == null) {\n continue;\n }\n\n if (key === 'key' && event.key != null) {\n actual = event.key.toLowerCase();\n } else if (key === 'which') {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n\n if (actual == null && expected === false) {\n continue;\n }\n\n if (actual !== expected) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Utils.\n */\n\nfunction toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n}\n\nfunction toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n}\n\n/**\n * Export.\n */\n\nexports.default = isHotkey;\nexports.isHotkey = isHotkey;\nexports.isCodeHotkey = isCodeHotkey;\nexports.isKeyHotkey = isKeyHotkey;\nexports.parseHotkey = parseHotkey;\nexports.compareHotkey = compareHotkey;\nexports.toKeyCode = toKeyCode;\nexports.toKeyName = toKeyName;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar slate = require('slate');\nvar debounce = _interopDefault(require('debounce'));\nvar scrollIntoView = _interopDefault(require('scroll-into-view-if-needed'));\nvar getDirection = _interopDefault(require('direction'));\nvar isHotkey = require('is-hotkey');\nvar ReactDOM = _interopDefault(require('react-dom'));\n\n/**\r\n * Leaf content strings.\r\n */\r\nconst String = (props) => {\r\n const { isLast, leaf, parent, text } = props;\r\n const editor = useEditor();\r\n const path = ReactEditor.findPath(editor, text);\r\n const parentPath = slate.Path.parent(path);\r\n // COMPAT: Render text inside void nodes with a zero-width space.\r\n // So the node can contain selection but the text is not visible.\r\n if (editor.isVoid(parent)) {\r\n return React__default.createElement(ZeroWidthString, { length: slate.Node.string(parent).length });\r\n }\r\n // COMPAT: If this is the last text node in an empty block, render a zero-\r\n // width space that will convert into a line break when copying and pasting\r\n // to support expected plain text.\r\n if (leaf.text === '' &&\r\n parent.children[parent.children.length - 1] === text &&\r\n !editor.isInline(parent) &&\r\n slate.Editor.string(editor, parentPath) === '') {\r\n return React__default.createElement(ZeroWidthString, { isLineBreak: true });\r\n }\r\n // COMPAT: If the text is empty, it's because it's on the edge of an inline\r\n // node, so we render a zero-width space so that the selection can be\r\n // inserted next to it still.\r\n if (leaf.text === '') {\r\n return React__default.createElement(ZeroWidthString, null);\r\n }\r\n // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\r\n // so we need to add an extra trailing new lines to prevent that.\r\n if (isLast && leaf.text.slice(-1) === '\\n') {\r\n return React__default.createElement(TextString, { isTrailing: true, text: leaf.text });\r\n }\r\n return React__default.createElement(TextString, { text: leaf.text });\r\n};\r\n/**\r\n * Leaf strings with text in them.\r\n */\r\nconst TextString = (props) => {\r\n const { text, isTrailing = false } = props;\r\n return (React__default.createElement(\"span\", { \"data-slate-string\": true },\r\n text,\r\n isTrailing ? '\\n' : null));\r\n};\r\n/**\r\n * Leaf strings without text, render as zero-width strings.\r\n */\r\nconst ZeroWidthString = (props) => {\r\n const { length = 0, isLineBreak = false } = props;\r\n return (React__default.createElement(\"span\", { \"data-slate-zero-width\": isLineBreak ? 'n' : 'z', \"data-slate-length\": length },\r\n '\\uFEFF',\r\n isLineBreak ? React__default.createElement(\"br\", null) : null));\r\n};\n\n/**\r\n * Two weak maps that allow us rebuild a path given a node. They are populated\r\n * at render time such that after a render occurs we can always backtrack.\r\n */\nvar NODE_TO_INDEX = new WeakMap();\nvar NODE_TO_PARENT = new WeakMap();\n/**\r\n * Weak maps that allow us to go between Slate nodes and DOM nodes. These\r\n * are used to resolve DOM event-related logic into Slate actions.\r\n */\n\nvar EDITOR_TO_ELEMENT = new WeakMap();\nvar ELEMENT_TO_NODE = new WeakMap();\nvar KEY_TO_ELEMENT = new WeakMap();\nvar NODE_TO_ELEMENT = new WeakMap();\nvar NODE_TO_KEY = new WeakMap();\n/**\r\n * Weak maps for storing editor-related state.\r\n */\n\nvar IS_READ_ONLY = new WeakMap();\nvar IS_FOCUSED = new WeakMap();\n/**\r\n * Weak map for associating the context `onChange` context with the plugin.\r\n */\n\nvar EDITOR_TO_ON_CHANGE = new WeakMap();\n/**\r\n * Symbols.\r\n */\n\nvar PLACEHOLDER_SYMBOL = Symbol('placeholder');\n\n/**\r\n * Individual leaves in a text node with unique formatting.\r\n */\r\nconst Leaf = (props) => {\r\n const { leaf, isLast, text, parent, renderLeaf = (props) => React__default.createElement(DefaultLeaf, Object.assign({}, props)), } = props;\r\n let children = (React__default.createElement(String, { isLast: isLast, leaf: leaf, parent: parent, text: text }));\r\n if (leaf[PLACEHOLDER_SYMBOL]) {\r\n children = (React__default.createElement(React__default.Fragment, null,\r\n React__default.createElement(\"span\", { contentEditable: false, style: {\r\n pointerEvents: 'none',\r\n display: 'inline-block',\r\n verticalAlign: 'text-top',\r\n width: '0',\r\n maxWidth: '100%',\r\n whiteSpace: 'nowrap',\r\n opacity: '0.333',\r\n } }, leaf.placeholder),\r\n children));\r\n }\r\n // COMPAT: Having the `data-` attributes on these leaf elements ensures that\r\n // in certain misbehaving browsers they aren't weirdly cloned/destroyed by\r\n // contenteditable behaviors. (2019/05/08)\r\n const attributes = {\r\n 'data-slate-leaf': true,\r\n };\r\n return renderLeaf({ attributes, children, leaf, text });\r\n};\r\nconst MemoizedLeaf = React__default.memo(Leaf, (prev, next) => {\r\n return (next.parent === prev.parent &&\r\n next.isLast === prev.isLast &&\r\n next.renderLeaf === prev.renderLeaf &&\r\n next.text === prev.text &&\r\n slate.Text.matches(next.leaf, prev.leaf));\r\n});\r\n/**\r\n * The default custom leaf renderer.\r\n */\r\nconst DefaultLeaf = (props) => {\r\n const { attributes, children } = props;\r\n return React__default.createElement(\"span\", Object.assign({}, attributes), children);\r\n};\n\n/**\r\n * Prevent warning on SSR by falling back to useEffect when window is not defined\r\n */\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\r\n * Text.\r\n */\r\nconst Text = (props) => {\r\n const { decorations, isLast, parent, renderLeaf, text } = props;\r\n const editor = useEditor();\r\n const ref = React.useRef(null);\r\n const leaves = slate.Text.decorations(text, decorations);\r\n const key = ReactEditor.findKey(editor, text);\r\n const children = [];\r\n for (let i = 0; i < leaves.length; i++) {\r\n const leaf = leaves[i];\r\n children.push(React__default.createElement(MemoizedLeaf, { isLast: isLast && i === leaves.length - 1, key: `${key.id}-${i}`, leaf: leaf, text: text, parent: parent, renderLeaf: renderLeaf }));\r\n }\r\n // Update element-related weak maps with the DOM element ref.\r\n useIsomorphicLayoutEffect(() => {\r\n if (ref.current) {\r\n KEY_TO_ELEMENT.set(key, ref.current);\r\n NODE_TO_ELEMENT.set(text, ref.current);\r\n ELEMENT_TO_NODE.set(ref.current, text);\r\n }\r\n else {\r\n KEY_TO_ELEMENT.delete(key);\r\n NODE_TO_ELEMENT.delete(text);\r\n }\r\n });\r\n return (React__default.createElement(\"span\", { \"data-slate-node\": \"text\", ref: ref }, children));\r\n};\r\nconst MemoizedText = React__default.memo(Text, (prev, next) => {\r\n return (next.parent === prev.parent &&\r\n next.isLast === prev.isLast &&\r\n next.renderLeaf === prev.renderLeaf &&\r\n next.text === prev.text);\r\n});\n\n/**\r\n * A React context for sharing the `selected` state of an element.\r\n */\n\nvar SelectedContext = React.createContext(false);\n/**\r\n * Get the current `selected` state of an element.\r\n */\n\nvar useSelected = () => {\n return React.useContext(SelectedContext);\n};\n\n/**\r\n * Element.\r\n */\r\nconst Element = (props) => {\r\n const { decorate, decorations, element, renderElement = (p) => React__default.createElement(DefaultElement, Object.assign({}, p)), renderLeaf, selection, } = props;\r\n const ref = React.useRef(null);\r\n const editor = useEditor();\r\n const readOnly = useReadOnly();\r\n const isInline = editor.isInline(element);\r\n const key = ReactEditor.findKey(editor, element);\r\n let children = (React__default.createElement(Children, { decorate: decorate, decorations: decorations, node: element, renderElement: renderElement, renderLeaf: renderLeaf, selection: selection }));\r\n // Attributes that the developer must mix into the element in their\r\n // custom node renderer component.\r\n const attributes = {\r\n 'data-slate-node': 'element',\r\n ref,\r\n };\r\n if (isInline) {\r\n attributes['data-slate-inline'] = true;\r\n }\r\n // If it's a block node with inline children, add the proper `dir` attribute\r\n // for text direction.\r\n if (!isInline && slate.Editor.hasInlines(editor, element)) {\r\n const text = slate.Node.string(element);\r\n const dir = getDirection(text);\r\n if (dir === 'rtl') {\r\n attributes.dir = dir;\r\n }\r\n }\r\n // If it's a void node, wrap the children in extra void-specific elements.\r\n if (slate.Editor.isVoid(editor, element)) {\r\n attributes['data-slate-void'] = true;\r\n if (!readOnly && isInline) {\r\n attributes.contentEditable = false;\r\n }\r\n const Tag = isInline ? 'span' : 'div';\r\n const [[text]] = slate.Node.texts(element);\r\n children = readOnly ? null : (React__default.createElement(Tag, { \"data-slate-spacer\": true, style: {\r\n height: '0',\r\n color: 'transparent',\r\n outline: 'none',\r\n position: 'absolute',\r\n } },\r\n React__default.createElement(MemoizedText, { decorations: [], isLast: false, parent: element, text: text })));\r\n NODE_TO_INDEX.set(text, 0);\r\n NODE_TO_PARENT.set(text, element);\r\n }\r\n // Update element-related weak maps with the DOM element ref.\r\n useIsomorphicLayoutEffect(() => {\r\n if (ref.current) {\r\n KEY_TO_ELEMENT.set(key, ref.current);\r\n NODE_TO_ELEMENT.set(element, ref.current);\r\n ELEMENT_TO_NODE.set(ref.current, element);\r\n }\r\n else {\r\n KEY_TO_ELEMENT.delete(key);\r\n NODE_TO_ELEMENT.delete(element);\r\n }\r\n });\r\n return (React__default.createElement(SelectedContext.Provider, { value: !!selection }, renderElement({ attributes, children, element })));\r\n};\r\nconst MemoizedElement = React__default.memo(Element, (prev, next) => {\r\n return (prev.decorate === next.decorate &&\r\n prev.element === next.element &&\r\n prev.renderElement === next.renderElement &&\r\n prev.renderLeaf === next.renderLeaf &&\r\n isRangeListEqual(prev.decorations, next.decorations) &&\r\n (prev.selection === next.selection ||\r\n (!!prev.selection &&\r\n !!next.selection &&\r\n slate.Range.equals(prev.selection, next.selection))));\r\n});\r\n/**\r\n * The default element renderer.\r\n */\r\nconst DefaultElement = (props) => {\r\n const { attributes, children, element } = props;\r\n const editor = useEditor();\r\n const Tag = editor.isInline(element) ? 'span' : 'div';\r\n return (React__default.createElement(Tag, Object.assign({}, attributes, { style: { position: 'relative' } }), children));\r\n};\r\n/**\r\n * Check if a list of ranges is equal to another.\r\n *\r\n * PERF: this requires the two lists to also have the ranges inside them in the\r\n * same order, but this is an okay constraint for us since decorations are\r\n * kept in order, and the odd case where they aren't is okay to re-render for.\r\n */\r\nconst isRangeListEqual = (list, another) => {\r\n if (list.length !== another.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < list.length; i++) {\r\n const range = list[i];\r\n const other = another[i];\r\n if (!slate.Range.equals(range, other)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\n\n/**\r\n * A React context for sharing the editor object.\r\n */\r\nconst EditorContext = React.createContext(null);\r\n/**\r\n * Get the current editor object from the React context.\r\n */\r\nconst useEditor = () => {\r\n const editor = React.useContext(EditorContext);\r\n if (!editor) {\r\n throw new Error(`The \\`useEditor\\` hook must be used inside the <Slate> component's context.`);\r\n }\r\n return editor;\r\n};\n\n/**\r\n * Children.\r\n */\r\nconst Children = (props) => {\r\n const { decorate, decorations, node, renderElement, renderLeaf, selection, } = props;\r\n const editor = useEditor();\r\n const path = ReactEditor.findPath(editor, node);\r\n const children = [];\r\n const isLeafBlock = slate.Element.isElement(node) &&\r\n !editor.isInline(node) &&\r\n slate.Editor.hasInlines(editor, node);\r\n for (let i = 0; i < node.children.length; i++) {\r\n const p = path.concat(i);\r\n const n = node.children[i];\r\n const key = ReactEditor.findKey(editor, n);\r\n const range = slate.Editor.range(editor, p);\r\n const sel = selection && slate.Range.intersection(range, selection);\r\n const ds = decorate([n, p]);\r\n for (const dec of decorations) {\r\n const d = slate.Range.intersection(dec, range);\r\n if (d) {\r\n ds.push(d);\r\n }\r\n }\r\n if (slate.Element.isElement(n)) {\r\n children.push(React__default.createElement(MemoizedElement, { decorate: decorate, decorations: ds, element: n, key: key.id, renderElement: renderElement, renderLeaf: renderLeaf, selection: sel }));\r\n }\r\n else {\r\n children.push(React__default.createElement(MemoizedText, { decorations: ds, key: key.id, isLast: isLeafBlock && i === node.children.length - 1, parent: node, renderLeaf: renderLeaf, text: n }));\r\n }\r\n NODE_TO_INDEX.set(n, i);\r\n NODE_TO_PARENT.set(n, node);\r\n }\r\n return React__default.createElement(React__default.Fragment, null, children);\r\n};\n\nvar IS_IOS = typeof navigator !== 'undefined' && typeof window !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar IS_APPLE = typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent);\nvar IS_FIREFOX = typeof navigator !== 'undefined' && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);\nvar IS_SAFARI = typeof navigator !== 'undefined' && /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent);\n\n/**\r\n * Hotkey mappings for each platform.\r\n */\n\nvar HOTKEYS = {\n bold: 'mod+b',\n compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n moveBackward: 'left',\n moveForward: 'right',\n moveWordBackward: 'ctrl+left',\n moveWordForward: 'ctrl+right',\n deleteBackward: 'shift?+backspace',\n deleteForward: 'shift?+delete',\n extendBackward: 'shift+left',\n extendForward: 'shift+right',\n italic: 'mod+i',\n splitBlock: 'shift?+enter',\n undo: 'mod+z'\n};\nvar APPLE_HOTKEYS = {\n moveLineBackward: 'opt+up',\n moveLineForward: 'opt+down',\n moveWordBackward: 'opt+left',\n moveWordForward: 'opt+right',\n deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n deleteForward: ['ctrl+delete', 'ctrl+d'],\n deleteLineBackward: 'cmd+shift?+backspace',\n deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n deleteWordBackward: 'opt+shift?+backspace',\n deleteWordForward: 'opt+shift?+delete',\n extendLineBackward: 'opt+shift+up',\n extendLineForward: 'opt+shift+down',\n redo: 'cmd+shift+z',\n transposeCharacter: 'ctrl+t'\n};\nvar WINDOWS_HOTKEYS = {\n deleteWordBackward: 'ctrl+shift?+backspace',\n deleteWordForward: 'ctrl+shift?+delete',\n redo: ['ctrl+y', 'ctrl+shift+z']\n};\n/**\r\n * Create a platform-aware hotkey checker.\r\n */\n\nvar create = key => {\n var generic = HOTKEYS[key];\n var apple = APPLE_HOTKEYS[key];\n var windows = WINDOWS_HOTKEYS[key];\n var isGeneric = generic && isHotkey.isKeyHotkey(generic);\n var isApple = apple && isHotkey.isKeyHotkey(apple);\n var isWindows = windows && isHotkey.isKeyHotkey(windows);\n return event => {\n if (isGeneric && isGeneric(event)) return true;\n if (IS_APPLE && isApple && isApple(event)) return true;\n if (!IS_APPLE && isWindows && isWindows(event)) return true;\n return false;\n };\n};\n/**\r\n * Hotkeys.\r\n */\n\n\nvar Hotkeys = {\n isBold: create('bold'),\n isCompose: create('compose'),\n isMoveBackward: create('moveBackward'),\n isMoveForward: create('moveForward'),\n isDeleteBackward: create('deleteBackward'),\n isDeleteForward: create('deleteForward'),\n isDeleteLineBackward: create('deleteLineBackward'),\n isDeleteLineForward: create('deleteLineForward'),\n isDeleteWordBackward: create('deleteWordBackward'),\n isDeleteWordForward: create('deleteWordForward'),\n isExtendBackward: create('extendBackward'),\n isExtendForward: create('extendForward'),\n isExtendLineBackward: create('extendLineBackward'),\n isExtendLineForward: create('extendLineForward'),\n isItalic: create('italic'),\n isMoveLineBackward: create('moveLineBackward'),\n isMoveLineForward: create('moveLineForward'),\n isMoveWordBackward: create('moveWordBackward'),\n isMoveWordForward: create('moveWordForward'),\n isRedo: create('redo'),\n isSplitBlock: create('splitBlock'),\n isTransposeCharacter: create('transposeCharacter'),\n isUndo: create('undo')\n};\n\n/**\r\n * A React context for sharing the `readOnly` state of the editor.\r\n */\n\nvar ReadOnlyContext = React.createContext(false);\n/**\r\n * Get the current `readOnly` state of the editor.\r\n */\n\nvar useReadOnly = () => {\n return React.useContext(ReadOnlyContext);\n};\n\n/**\r\n * A React context for sharing the editor object, in a way that re-renders the\r\n * context whenever changes occur.\r\n */\r\nconst SlateContext = React.createContext(null);\r\n/**\r\n * Get the current editor object from the React context.\r\n */\r\nconst useSlate = () => {\r\n const context = React.useContext(SlateContext);\r\n if (!context) {\r\n throw new Error(`The \\`useSlate\\` hook must be used inside the <SlateProvider> component's context.`);\r\n }\r\n const [editor] = context;\r\n return editor;\r\n};\n\n/**\r\n * Types.\r\n */\n/**\r\n * Check if a DOM node is a comment node.\r\n */\n\nvar isDOMComment = value => {\n return isDOMNode(value) && value.nodeType === 8;\n};\n/**\r\n * Check if a DOM node is an element node.\r\n */\n\nvar isDOMElement = value => {\n return isDOMNode(value) && value.nodeType === 1;\n};\n/**\r\n * Check if a value is a DOM node.\r\n */\n\nvar isDOMNode = value => {\n return value instanceof Node;\n};\n/**\r\n * Check if a DOM node is an element node.\r\n */\n\nvar isDOMText = value => {\n return isDOMNode(value) && value.nodeType === 3;\n};\n/**\r\n * Normalize a DOM point so that it always refers to a text node.\r\n */\n\nvar normalizeDOMPoint = domPoint => {\n var [node, offset] = domPoint; // If it's an element node, its offset refers to the index of its children\n // including comment nodes, so try to find the right text child node.\n\n if (isDOMElement(node) && node.childNodes.length) {\n var isLast = offset === node.childNodes.length;\n var direction = isLast ? 'backward' : 'forward';\n var index = isLast ? offset - 1 : offset;\n node = getEditableChild(node, index, direction); // If the node has children, traverse until we have a leaf node. Leaf nodes\n // can be either text nodes, or other void DOM nodes.\n\n while (isDOMElement(node) && node.childNodes.length) {\n var i = isLast ? node.childNodes.length - 1 : 0;\n node = getEditableChild(node, i, direction);\n } // Determine the new offset inside the text node.\n\n\n offset = isLast && node.textContent != null ? node.textContent.length : 0;\n } // Return the node and offset.\n\n\n return [node, offset];\n};\n/**\r\n * Get the nearest editable child at `index` in a `parent`, preferring\r\n * `direction`.\r\n */\n\nvar getEditableChild = (parent, index, direction) => {\n var {\n childNodes\n } = parent;\n var child = childNodes[index];\n var i = index;\n var triedForward = false;\n var triedBackward = false; // While the child is a comment node, or an element node with no children,\n // keep iterating to find a sibling non-void, non-comment node.\n\n while (isDOMComment(child) || isDOMElement(child) && child.childNodes.length === 0 || isDOMElement(child) && child.getAttribute('contenteditable') === 'false') {\n if (triedForward && triedBackward) {\n break;\n }\n\n if (i >= childNodes.length) {\n triedForward = true;\n i = index - 1;\n direction = 'backward';\n continue;\n }\n\n if (i < 0) {\n triedBackward = true;\n i = index + 1;\n direction = 'forward';\n continue;\n }\n\n child = childNodes[i];\n i += direction === 'forward' ? 1 : -1;\n }\n\n return child;\n};\n\n/**\r\n * Editable.\r\n */\r\nconst Editable = (props) => {\r\n const { autoFocus, decorate = defaultDecorate, onDOMBeforeInput: propsOnDOMBeforeInput, placeholder, readOnly = false, renderElement, renderLeaf, style = {}, as: Component = 'div', ...attributes } = props;\r\n const editor = useSlate();\r\n const ref = React.useRef(null);\r\n // Update internal state on each render.\r\n IS_READ_ONLY.set(editor, readOnly);\r\n // Keep track of some state for the event handler logic.\r\n const state = React.useMemo(() => ({\r\n isComposing: false,\r\n isUpdatingSelection: false,\r\n latestElement: null,\r\n }), []);\r\n // Update element-related weak maps with the DOM element ref.\r\n useIsomorphicLayoutEffect(() => {\r\n if (ref.current) {\r\n EDITOR_TO_ELEMENT.set(editor, ref.current);\r\n NODE_TO_ELEMENT.set(editor, ref.current);\r\n ELEMENT_TO_NODE.set(ref.current, editor);\r\n }\r\n else {\r\n NODE_TO_ELEMENT.delete(editor);\r\n }\r\n });\r\n // Attach a native DOM event handler for `selectionchange`, because React's\r\n // built-in `onSelect` handler doesn't fire for all selection changes. It's a\r\n // leaky polyfill that only fires on keypresses or clicks. Instead, we want to\r\n // fire for any change to the selection inside the editor. (2019/11/04)\r\n // https://github.com/facebook/react/issues/5785\r\n useIsomorphicLayoutEffect(() => {\r\n window.document.addEventListener('selectionchange', onDOMSelectionChange);\r\n return () => {\r\n window.document.removeEventListener('selectionchange', onDOMSelectionChange);\r\n };\r\n }, []);\r\n // Attach a native DOM event handler for `beforeinput` events, because React's\r\n // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\r\n // real `beforeinput` events sadly... (2019/11/04)\r\n // https://github.com/facebook/react/issues/11211\r\n useIsomorphicLayoutEffect(() => {\r\n if (ref.current) {\r\n // @ts-ignore The `beforeinput` event isn't recognized.\r\n ref.current.addEventListener('beforeinput', onDOMBeforeInput);\r\n }\r\n return () => {\r\n if (ref.current) {\r\n // @ts-ignore The `beforeinput` event isn't recognized.\r\n ref.current.removeEventListener('beforeinput', onDOMBeforeInput);\r\n }\r\n };\r\n }, []);\r\n // Whenever the editor updates, make sure the DOM selection state is in sync.\r\n useIsomorphicLayoutEffect(() => {\r\n const { selection } = editor;\r\n const domSelection = window.getSelection();\r\n if (state.isComposing || !domSelection || !ReactEditor.isFocused(editor)) {\r\n return;\r\n }\r\n const hasDomSelection = domSelection.type !== 'None';\r\n // If the DOM selection is properly unset, we're done.\r\n if (!selection && !hasDomSelection) {\r\n return;\r\n }\r\n const newDomRange = selection && ReactEditor.toDOMRange(editor, selection);\r\n // If the DOM selection is already correct, we're done.\r\n if (hasDomSelection &&\r\n newDomRange &&\r\n isRangeEqual(domSelection.getRangeAt(0), newDomRange)) {\r\n return;\r\n }\r\n // Otherwise the DOM selection is out of sync, so update it.\r\n const el = ReactEditor.toDOMNode(editor, editor);\r\n state.isUpdatingSelection = true;\r\n domSelection.removeAllRanges();\r\n if (newDomRange) {\r\n domSelection.addRange(newDomRange);\r\n const leafEl = newDomRange.startContainer.parentElement;\r\n scrollIntoView(leafEl, { scrollMode: 'if-needed' });\r\n }\r\n setTimeout(() => {\r\n // COMPAT: In Firefox, it's not enough to create a range, you also need\r\n // to focus the contenteditable element too. (2016/11/16)\r\n if (newDomRange && IS_FIREFOX) {\r\n el.focus();\r\n }\r\n state.isUpdatingSelection = false;\r\n });\r\n });\r\n // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\r\n // needs to be manually focused.\r\n React.useEffect(() => {\r\n if (ref.current && autoFocus) {\r\n ref.current.focus();\r\n }\r\n }, [autoFocus]);\r\n // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\r\n // is required because React's `beforeinput` is fake and never really attaches\r\n // to the real event sadly. (2019/11/01)\r\n // https://github.com/facebook/react/issues/11211\r\n const onDOMBeforeInput = React.useCallback((event) => {\r\n if (!readOnly &&\r\n hasEditableTarget(editor, event.target) &&\r\n !isDOMEventHandled(event, propsOnDOMBeforeInput)) {\r\n const { selection } = editor;\r\n const { inputType: type } = event;\r\n const data = event.dataTransfer || event.data || undefined;\r\n // These two types occur while a user is composing text and can't be\r\n // cancelled. Let them through and wait for the composition to end.\r\n if (type === 'insertCompositionText' ||\r\n type === 'deleteCompositionText') {\r\n return;\r\n }\r\n event.preventDefault();\r\n // COMPAT: For the deleting forward/backward input types we don't want\r\n // to change the selection because it is the range that will be deleted,\r\n // and those commands determine that for themselves.\r\n if (!type.startsWith('delete') || type.startsWith('deleteBy')) {\r\n const [targetRange] = event.getTargetRanges();\r\n if (targetRange) {\r\n const range = ReactEditor.toSlateRange(editor, targetRange);\r\n if (!selection || !slate.Range.equals(selection, range)) {\r\n slate.Transforms.select(editor, range);\r\n }\r\n }\r\n }\r\n // COMPAT: If the selection is expanded, even if the command seems like\r\n // a delete forward/backward command it should delete the selection.\r\n if (selection &&\r\n slate.Range.isExpanded(selection) &&\r\n type.startsWith('delete')) {\r\n slate.Editor.deleteFragment(editor);\r\n return;\r\n }\r\n switch (type) {\r\n case 'deleteByComposition':\r\n case 'deleteByCut':\r\n case 'deleteByDrag': {\r\n slate.Editor.deleteFragment(editor);\r\n break;\r\n }\r\n case 'deleteContent':\r\n case 'deleteContentForward': {\r\n slate.Editor.deleteForward(editor);\r\n break;\r\n }\r\n case 'deleteContentBackward': {\r\n slate.Editor.deleteBackward(editor);\r\n break;\r\n }\r\n case 'deleteEntireSoftLine': {\r\n slate.Editor.deleteBackward(editor, { unit: 'line' });\r\n slate.Editor.deleteForward(editor, { unit: 'line' });\r\n break;\r\n }\r\n case 'deleteHardLineBackward': {\r\n slate.Editor.deleteBackward(editor, { unit: 'block' });\r\n break;\r\n }\r\n case 'deleteSoftLineBackward': {\r\n slate.Editor.deleteBackward(editor, { unit: 'line' });\r\n break;\r\n }\r\n case 'deleteHardLineForward': {\r\n slate.Editor.deleteForward(editor, { unit: 'block' });\r\n break;\r\n }\r\n case 'deleteSoftLineForward': {\r\n slate.Editor.deleteForward(editor, { unit: 'line' });\r\n break;\r\n }\r\n case 'deleteWordBackward': {\r\n slate.Editor.deleteBackward(editor, { unit: 'word' });\r\n break;\r\n }\r\n case 'deleteWordForward': {\r\n slate.Editor.deleteForward(editor, { unit: 'word' });\r\n break;\r\n }\r\n case 'insertLineBreak':\r\n case 'insertParagraph': {\r\n slate.Editor.insertBreak(editor);\r\n break;\r\n }\r\n case 'insertFromComposition':\r\n case 'insertFromDrop':\r\n case 'insertFromPaste':\r\n case 'insertFromYank':\r\n case 'insertReplacementText':\r\n case 'insertText': {\r\n if (data instanceof DataTransfer) {\r\n ReactEditor.insertData(editor, data);\r\n }\r\n else if (typeof data === 'string') {\r\n slate.Editor.insertText(editor, data);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }, []);\r\n // Listen on the native `selectionchange` event to be able to update any time\r\n // the selection changes. This is required because React's `onSelect` is leaky\r\n // and non-standard so it doesn't fire until after a selection has been\r\n // released. This causes issues in situations where another change happens\r\n // while a selection is being dragged.\r\n const onDOMSelectionChange = React.useCallback(debounce(() => {\r\n if (!readOnly && !state.isComposing && !state.isUpdatingSelection) {\r\n const { activeElement } = window.document;\r\n const el = ReactEditor.toDOMNode(editor, editor);\r\n const domSelection = window.getSelection();\r\n const domRange = domSelection &&\r\n domSelection.rangeCount > 0 &&\r\n domSelection.getRangeAt(0);\r\n if (activeElement === el) {\r\n state.latestElement = activeElement;\r\n IS_FOCUSED.set(editor, true);\r\n }\r\n else {\r\n IS_FOCUSED.delete(editor);\r\n }\r\n if (domRange &&\r\n hasEditableTarget(editor, domRange.startContainer) &&\r\n hasEditableTarget(editor, domRange.endContainer)) {\r\n const range = ReactEditor.toSlateRange(editor, domRange);\r\n slate.Transforms.select(editor, range);\r\n }\r\n else {\r\n slate.Transforms.deselect(editor);\r\n }\r\n }\r\n }, 100), []);\r\n const decorations = decorate([editor, []]);\r\n if (placeholder &&\r\n editor.children.length === 1 &&\r\n Array.from(slate.Node.texts(editor)).length === 1 &&\r\n slate.Node.string(editor) === '') {\r\n const start = slate.Editor.start(editor, []);\r\n decorations.push({\r\n [PLACEHOLDER_SYMBOL]: true,\r\n placeholder,\r\n anchor: start,\r\n focus: start,\r\n });\r\n }\r\n return (React__default.createElement(ReadOnlyContext.Provider, { value: readOnly },\r\n React__default.createElement(Component\r\n // COMPAT: The Grammarly Chrome extension works by changing the DOM\r\n // out from under `contenteditable` elements, which leads to weird\r\n // behaviors so we have to disable it like editor. (2017/04/24)\r\n , Object.assign({ \"data-gramm\": false, role: readOnly ? undefined : 'textbox' }, attributes, { \r\n // COMPAT: Firefox doesn't support the `beforeinput` event, so we'd\r\n // have to use hacks to make these replacement-based features work.\r\n spellCheck: IS_FIREFOX ? undefined : attributes.spellCheck, autoCorrect: IS_FIREFOX ? undefined : attributes.autoCorrect, autoCapitalize: IS_FIREFOX ? undefined : attributes.autoCapitalize, \"data-slate-editor\": true, \"data-slate-node\": \"value\", contentEditable: readOnly ? undefined : true, suppressContentEditableWarning: true, ref: ref, style: {\r\n // Prevent the default outline styles.\r\n outline: 'none',\r\n // Preserve adjacent whitespace and new lines.\r\n whiteSpace: 'pre-wrap',\r\n // Allow words to break if they are too long.\r\n wordWrap: 'break-word',\r\n // Allow for passed-in styles to override anything.\r\n ...style,\r\n }, onBeforeInput: React.useCallback((event) => {\r\n // COMPAT: Firefox doesn't support the `beforeinput` event, so we\r\n // fall back to React's leaky polyfill instead just for it. It\r\n // only works for the `insertText` input type.\r\n if (IS_FIREFOX && !readOnly) {\r\n event.preventDefault();\r\n const text = event.data;\r\n slate.Editor.insertText(editor, text);\r\n }\r\n }, [readOnly]), onBlur: React.useCallback((event) => {\r\n if (readOnly ||\r\n state.isUpdatingSelection ||\r\n !hasEditableTarget(editor, event.target) ||\r\n isEventHandled(event, attributes.onBlur)) {\r\n return;\r\n }\r\n // COMPAT: If the current `activeElement` is still the previous\r\n // one, this is due to the window being blurred when the tab\r\n // itself becomes unfocused, so we want to abort early to allow to\r\n // editor to stay focused when the tab becomes focused again.\r\n if (state.latestElement === window.document.activeElement) {\r\n return;\r\n }\r\n const { relatedTarget } = event;\r\n const el = ReactEditor.toDOMNode(editor, editor);\r\n // COMPAT: The event should be ignored if the focus is returning\r\n // to the editor from an embedded editable element (eg. an <input>\r\n // element inside a void node).\r\n if (relatedTarget === el) {\r\n return;\r\n }\r\n // COMPAT: The event should be ignored if the focus is moving from\r\n // the editor to inside a void node's spacer element.\r\n if (isDOMElement(relatedTarget) &&\r\n relatedTarget.hasAttribute('data-slate-spacer')) {\r\n return;\r\n }\r\n // COMPAT: The event should be ignored if the focus is moving to a\r\n // non- editable section of an element that isn't a void node (eg.\r\n // a list item of the check list example).\r\n if (relatedTarget != null &&\r\n isDOMNode(relatedTarget) &&\r\n ReactEditor.hasDOMNode(editor, relatedTarget)) {\r\n const node = ReactEditor.toSlateNode(editor, relatedTarget);\r\n if (slate.Element.isElement(node) && !editor.isVoid(node)) {\r\n return;\r\n }\r\n }\r\n IS_FOCUSED.delete(editor);\r\n }, [readOnly, attributes.onBlur]), onClick: React.useCallback((event) => {\r\n if (!readOnly &&\r\n hasTarget(editor, event.target) &&\r\n !isEventHandled(event, attributes.onClick) &&\r\n isDOMNode(event.target)) {\r\n const node = ReactEditor.toSlateNode(editor, event.target);\r\n const path = ReactEditor.findPath(editor, node);\r\n const start = slate.Editor.start(editor, path);\r\n if (slate.Editor.void(editor, { at: start })) {\r\n const range = slate.Editor.range(editor, start);\r\n slate.Transforms.select(editor, range);\r\n }\r\n }\r\n }, [readOnly, attributes.onClick]), onCompositionEnd: React.useCallback((event) => {\r\n if (hasEditableTarget(editor, event.target) &&\r\n !isEventHandled(event, attributes.onCompositionEnd)) {\r\n state.isComposing = false;\r\n // COMPAT: In Chrome, `beforeinput` events for compositions\r\n // aren't correct and never fire the \"insertFromComposition\"\r\n // type that we need. So instead, insert whenever a composition\r\n // ends since it will already have been committed to the DOM.\r\n if (!IS_SAFARI && !IS_FIREFOX && event.data) {\r\n slate.Editor.insertText(editor, event.data);\r\n }\r\n }\r\n }, [attributes.onCompositionEnd]), onCompositionStart: React.useCallback((event) => {\r\n if (hasEditableTarget(editor, event.target) &&\r\n !isEventHandled(event, attributes.onCompositionStart)) {\r\n state.isComposing = true;\r\n }\r\n }, [attributes.onCompositionStart]), onCopy: React.useCallback((event) => {\r\n if (hasEditableTarget(editor, event.target) &&\r\n !isEventHandled(event, attributes.onCopy)) {\r\n event.preventDefault();\r\n setFragmentData(event.clipboardData, editor);\r\n }\r\n }, [attributes.onCopy]), onCut: React.useCallback((event) => {\r\n if (!readOnly &&\r\n hasEditableTarget(editor, event.target) &&\r\n !isEventHandled(event, attributes.onCut)) {\r\n event.preventDefault();\r\n setFragmentData(event.clipboardData, editor);\r\n const { selection } = editor;\r\n if (selection && slate.Range.isExpanded(selection)) {\r\n slate.Editor.deleteFragment(editor);\r\n }\r\n }\r\n }, [readOnly, attributes.onCut]), onDragOver: React.useCallback((event) => {\r\n if (hasTarget(editor, event.target) &&\r\n !isEventHandled(event, attributes.onDragOver)) {\r\n // Only when the target is void, call `preventDefault` to signal\r\n // that drops are allowed. Editable content is droppable by\r\n // default, and calling `preventDefault` hides the cursor.\r\n const node = ReactEditor.toSlateNode(editor, event.target);\r\n if (slate.Editor.isVoid(editor, node)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }, [attributes.onDragOver]), onDragStart: React.useCallback((event) => {\r\n if (hasTarget(editor, event.target) &&\r\n !isEventHandled(event, attributes.onDragStart)) {\r\n const node = ReactEditor.toSlateNode(editor, event.target);\r\n const path = ReactEditor.findPath(editor, node);\r\n const voidMatch = slate.Editor.void(editor, { at: path });\r\n // If starting a drag on a void node, make sure it is selected\r\n // so that it shows up in the selection's fragment.\r\n if (voidMatch) {\r\n const range = slate.Editor.range(editor, path);\r\n slate.Transforms.select(editor, range);\r\n }\r\n setFragmentData(event.dataTransfer, editor);\r\n }\r\n }, [attributes.onDragStart]), onDrop: React.useCallback((event) => {\r\n if (hasTarget(editor, event.target) &&\r\n !readOnly &&\r\n !isEventHandled(event, attributes.onDrop)) {\r\n // COMPAT: Firefox doesn't fire `beforeinput` events at all, and\r\n // Chromium browsers don't properly fire them for files being\r\n // dropped into a `contenteditable`. (2019/11/26)\r\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1028668\r\n if (IS_FIREFOX ||\r\n (!IS_SAFARI && event.dataTransfer.files.length > 0)) {\r\n event.preventDefault();\r\n const range = ReactEditor.findEventRange(editor, event);\r\n const data = event.dataTransfer;\r\n slate.Transforms.select(editor, range);\r\n ReactEditor.insertData(editor, data);\r\n }\r\n }\r\n }, [readOnly, attributes.onDrop]), onFocus: React.useCallback((event) => {\r\n if (!readOnly &&\r\n !state.isUpdatingSelection &&\r\n hasEditableTarget(editor, event.target) &&\r\n !isEventHandled(event, attributes.onFocus)) {\r\n const el = ReactEditor.toDOMNode(editor, editor);\r\n state.latestElement = window.document.activeElement;\r\n // COMPAT: If the editor has nested editable elements, the focus\r\n // can go to them. In Firefox, this must be prevented because it\r\n // results in issues with keyboard navigation. (2017/03/30)\r\n if (IS_FIREFOX && event.target !== el) {\r\n el.focus();\r\n return;\r\n }\r\n IS_FOCUSED.set(editor, true);\r\n }\r\n }, [readOnly, attributes.onFocus]), onKeyDown: React.useCallback((event) => {\r\n if (!readOnly &&\r\n hasEditableTarget(editor, event.target) &&\r\n !isEventHandled(event, attributes.onKeyDown)) {\r\n const { nativeEvent } = event;\r\n const { selection } = editor;\r\n // COMPAT: Since we prevent the default behavior on\r\n // `beforeinput` events, the browser doesn't think there's ever\r\n // any history stack to undo or redo, so we have to manage these\r\n // hotkeys ourselves. (2019/11/06)\r\n if (Hotkeys.isRedo(nativeEvent)) {\r\n event.preventDefault();\r\n if (editor.redo) {\r\n editor.redo();\r\n }\r\n return;\r\n }\r\n if (Hotkeys.isUndo(nativeEvent)) {\r\n event.preventDefault();\r\n if (editor.undo) {\r\n editor.undo();\r\n }\r\n return;\r\n }\r\n // COMPAT: Certain browsers don't handle the selection updates\r\n // properly. In Chrome, the selection isn't properly extended.\r\n // And in Firefox, the selection isn't properly collapsed.\r\n // (2017/10/17)\r\n if (Hotkeys.isMoveLineBackward(nativeEvent)) {\r\n event.preventDefault();\r\n slate.Transforms.move(editor, { unit: 'line', reverse: true });\r\n return;\r\n }\r\n if (Hotkeys.isMoveLineForward(nativeEvent)) {\r\n event.preventDefault();\r\n slate.Transforms.move(editor, { unit: 'line' });\r\n return;\r\n }\r\n if (Hotkeys.isExtendLineBackward(nativeEvent)) {\r\n event.preventDefault();\r\n slate.Transforms.move(editor, {\r\n unit: 'line',\r\n edge: 'focus',\r\n reverse: true,\r\n });\r\n return;\r\n }\r\n if (Hotkeys.isExtendLineForward(nativeEvent)) {\r\n event.preventDefault();\r\n slate.Transforms.move(editor, { unit: 'line', edge: 'focus' });\r\n return;\r\n }\r\n // COMPAT: If a void node is selected, or a zero-width text node\r\n // adjacent to an inline is selected, we need to handle these\r\n // hotkeys manually because browsers won't be able to skip over\r\n // the void node with the zero-width space not being an empty\r\n // string.\r\n if (Hotkeys.isMoveBackward(nativeEvent)) {\r\n event.preventDefault();\r\n if (selection && slate.Range.isCollapsed(selection)) {\r\n slate.Transforms.move(editor, { reverse: true });\r\n }\r\n else {\r\n slate.Transforms.collapse(editor, { edge: 'start' });\r\n }\r\n return;\r\n }\r\n if (Hotkeys.isMoveForward(nativeEvent)) {\r\n event.preventDefault();\r\n if (selection && slate.Range.isCollapsed(selection)) {\r\n slate.Transforms.move(editor);\r\n }\r\n else {\r\n slate.Transforms.collapse(editor, { edge: 'end' });\r\n }\r\n return;\r\n }\r\n if (Hotkeys.isMoveWordBackward(nativeEvent)) {\r\n event.preventDefault();\r\n slate.Transforms.move(editor, { unit: 'word', reverse: true });\r\n return;\r\n }\r\n if (Hotkeys.isMoveWordForward(nativeEvent)) {\r\n event.preventDefault();\r\n slate.Transforms.move(editor, { unit: 'word' });\r\n return;\r\n }\r\n // COMPAT: Firefox doesn't support the `beforeinput` event, so we\r\n // fall back to guessing at the input intention for hotkeys.\r\n // COMPAT: In iOS, some of these hotkeys are handled in the\r\n if (IS_FIREFOX) {\r\n // We don't have a core behavior for these, but they change the\r\n // DOM if we don't prevent them, so we have to.\r\n if (Hotkeys.isBold(nativeEvent) ||\r\n Hotkeys.isItalic(nativeEvent) ||\r\n Hotkeys.isTransposeCharacter(nativeEvent)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n if (Hotkeys.isSplitBlock(nativeEvent)) {\r\n event.preventDefault();\r\n slate.Editor.insertBreak(editor);\r\n return;\r\n }\r\n if (Hotkeys.isDeleteBackward(nativeEvent)) {\r\n event.preventDefault();\r\n if (selection && slate.Range.isExpanded(selection)) {\r\n slate.Editor.deleteFragment(editor);\r\n }\r\n else {\r\n slate.Editor.deleteBackward(editor);\r\n }\r\n return;\r\n }\r\n if (Hotkeys.isDeleteForward(nativeEvent)) {\r\n event.preventDefault();\r\n if (selection && slate.Range.isExpanded(selection)) {\r\n slate.Editor.deleteFragment(editor);\r\n }\r\n else {\r\n slate.Editor.deleteForward(editor);\r\n }\r\n return;\r\n }\r\n if (Hotkeys.isDeleteLineBackward(nativeEvent)) {\r\n event.preventDefault();\r\n if (selection && slate.Range.isExpanded(selection)) {\r\n slate.Editor.deleteFragment(editor);\r\n }\r\n else {\r\n slate.Editor.deleteBackward(editor, { unit: 'line' });\r\n }\r\n return;\r\n }\r\n if (Hotkeys.isDeleteLineForward(nativeEvent)) {\r\n event.preventDefault();\r\n if (selection && slate.Range.isExpanded(selection)) {\r\n slate.Editor.deleteFragment(editor);\r\n }\r\n else {\r\n slate.Editor.deleteForward(editor, { unit: 'line' });\r\n }\r\n return;\r\n }\r\n if (Hotkeys.isDeleteWordBackward(nativeEvent)) {\r\n event.preventDefault();\r\n if (selection && slate.Range.isExpanded(selection)) {\r\n slate.Editor.deleteFragment(editor);\r\n }\r\n else {\r\n slate.Editor.deleteBackward(editor, { unit: 'word' });\r\n }\r\n return;\r\n }\r\n if (Hotkeys.isDeleteWordForward(nativeEvent)) {\r\n event.preventDefault();\r\n if (selection && slate.Range.isExpanded(selection)) {\r\n slate.Editor.deleteFragment(editor);\r\n }\r\n else {\r\n slate.Editor.deleteForward(editor, { unit: 'word' });\r\n }\r\n return;\r\n }\r\n }\r\n }\r\n }, [readOnly, attributes.onKeyDown]), onPaste: React.useCallback((event) => {\r\n // COMPAT: Firefox doesn't support the `beforeinput` event, so we\r\n // fall back to React's `onPaste` here instead.\r\n if (IS_FIREFOX &&\r\n !readOnly &&\r\n hasEditableTarget(editor, event.target) &&\r\n !isEventHandled(event, attributes.onPaste)) {\r\n event.preventDefault();\r\n ReactEditor.insertData(editor, event.clipboardData);\r\n }\r\n }, [readOnly, attributes.onPaste]) }),\r\n React__default.createElement(Children, { decorate: decorate, decorations: decorations, node: editor, renderElement: renderElement, renderLeaf: renderLeaf, selection: editor.selection }))));\r\n};\r\n/**\r\n * A default memoized decorate function.\r\n */\r\nconst defaultDecorate = () => [];\r\n/**\r\n * Check if two DOM range objects are equal.\r\n */\r\nconst isRangeEqual = (a, b) => {\r\n return ((a.startContainer === b.startContainer &&\r\n a.startOffset === b.startOffset &&\r\n a.endContainer === b.endContainer &&\r\n a.endOffset === b.endOffset) ||\r\n (a.startContainer === b.endContainer &&\r\n a.startOffset === b.endOffset &&\r\n a.endContainer === b.startContainer &&\r\n a.endOffset === b.startOffset));\r\n};\r\n/**\r\n * Check if the target is in the editor.\r\n */\r\nconst hasTarget = (editor, target) => {\r\n return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target);\r\n};\r\n/**\r\n * Check if the target is editable and in the editor.\r\n */\r\nconst hasEditableTarget = (editor, target) => {\r\n return (isDOMNode(target) &&\r\n ReactEditor.hasDOMNode(editor, target, { editable: true }));\r\n};\r\n/**\r\n * Check if an event is overrided by a handler.\r\n */\r\nconst isEventHandled = (event, handler) => {\r\n if (!handler) {\r\n return false;\r\n }\r\n handler(event);\r\n return event.isDefaultPrevented() || event.isPropagationStopped();\r\n};\r\n/**\r\n * Check if a DOM event is overrided by a handler.\r\n */\r\nconst isDOMEventHandled = (event, handler) => {\r\n if (!handler) {\r\n return false;\r\n }\r\n handler(event);\r\n return event.defaultPrevented;\r\n};\r\n/**\r\n * Set the currently selected fragment to the clipboard.\r\n */\r\nconst setFragmentData = (dataTransfer, editor) => {\r\n const { selection } = editor;\r\n if (!selection) {\r\n return;\r\n }\r\n const [start, end] = slate.Range.edges(selection);\r\n const startVoid = slate.Editor.void(editor, { at: start.path });\r\n const endVoid = slate.Editor.void(editor, { at: end.path });\r\n if (slate.Range.isCollapsed(selection) && !startVoid) {\r\n return;\r\n }\r\n // Create a fake selection so that we can add a Base64-encoded copy of the\r\n // fragment to the HTML, to decode on future pastes.\r\n const domRange = ReactEditor.toDOMRange(editor, selection);\r\n let contents = domRange.cloneContents();\r\n let attach = contents.childNodes[0];\r\n // Make sure attach is non-empty, since empty nodes will not get copied.\r\n contents.childNodes.forEach(node => {\r\n if (node.textContent && node.textContent.trim() !== '') {\r\n attach = node;\r\n }\r\n });\r\n // COMPAT: If the end node is a void node, we need to move the end of the\r\n // range from the void node's spacer span, to the end of the void node's\r\n // content, since the spacer is before void's content in the DOM.\r\n if (endVoid) {\r\n const [voidNode] = endVoid;\r\n const r = domRange.cloneRange();\r\n const domNode = ReactEditor.toDOMNode(editor, voidNode);\r\n r.setEndAfter(domNode);\r\n contents = r.cloneContents();\r\n }\r\n // COMPAT: If the start node is a void node, we need to attach the encoded\r\n // fragment to the void node's content node instead of the spacer, because\r\n // attaching it to empty `<div>/<span>` nodes will end up having it erased by\r\n // most browsers. (2018/04/27)\r\n if (startVoid) {\r\n attach = contents.querySelector('[data-slate-spacer]');\r\n }\r\n // Remove any zero-width space spans from the cloned DOM so that they don't\r\n // show up elsewhere when pasted.\r\n Array.from(contents.querySelectorAll('[data-slate-zero-width]')).forEach(zw => {\r\n const isNewline = zw.getAttribute('data-slate-zero-width') === 'n';\r\n zw.textContent = isNewline ? '\\n' : '';\r\n });\r\n // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\r\n // in the HTML, and can be used for intra-Slate pasting. If it's a text\r\n // node, wrap it in a `<span>` so we have something to set an attribute on.\r\n if (isDOMText(attach)) {\r\n const span = document.createElement('span');\r\n // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\r\n // then leading and trailing spaces will be ignored. (2017/09/21)\r\n span.style.whiteSpace = 'pre';\r\n span.appendChild(attach);\r\n contents.appendChild(span);\r\n attach = span;\r\n }\r\n const fragment = slate.Node.fragment(editor, selection);\r\n const string = JSON.stringify(fragment);\r\n const encoded = window.btoa(encodeURIComponent(string));\r\n attach.setAttribute('data-slate-fragment', encoded);\r\n dataTransfer.setData('application/x-slate-fragment', encoded);\r\n // Add the content to a <div> so that we can get its inner HTML.\r\n const div = document.createElement('div');\r\n div.appendChild(contents);\r\n dataTransfer.setData('text/html', div.innerHTML);\r\n dataTransfer.setData('text/plain', getPlainText(div));\r\n};\r\n/**\r\n * Get a plaintext representation of the content of a node, accounting for block\r\n * elements which get a newline appended.\r\n */\r\nconst getPlainText = (domNode) => {\r\n let text = '';\r\n if (isDOMText(domNode) && domNode.nodeValue) {\r\n return domNode.nodeValue;\r\n }\r\n if (isDOMElement(domNode)) {\r\n for (const childNode of Array.from(domNode.childNodes)) {\r\n text += getPlainText(childNode);\r\n }\r\n const display = getComputedStyle(domNode).getPropertyValue('display');\r\n if (display === 'block' || display === 'list' || domNode.tagName === 'BR') {\r\n text += '\\n';\r\n }\r\n }\r\n return text;\r\n};\n\n/**\r\n * An auto-incrementing identifier for keys.\r\n */\nvar n = 0;\n/**\r\n * A class that keeps track of a key string. We use a full class here because we\r\n * want to be able to use them as keys in `WeakMap` objects.\r\n */\n\nclass Key {\n constructor() {\n this.id = \"\".concat(n++);\n }\n\n}\n\nvar ReactEditor = {\n /**\r\n * Find a key for a Slate node.\r\n */\n findKey(editor, node) {\n var key = NODE_TO_KEY.get(node);\n\n if (!key) {\n key = new Key();\n NODE_TO_KEY.set(node, key);\n }\n\n return key;\n },\n\n /**\r\n * Find the path of Slate node.\r\n */\n findPath(editor, node) {\n var path = [];\n var child = node;\n\n while (true) {\n var parent = NODE_TO_PARENT.get(child);\n\n if (parent == null) {\n if (slate.Editor.isEditor(child)) {\n return path;\n } else {\n break;\n }\n }\n\n var i = NODE_TO_INDEX.get(child);\n\n if (i == null) {\n break;\n }\n\n path.unshift(i);\n child = parent;\n }\n\n throw new Error(\"Unable to find the path for Slate node: \".concat(JSON.stringify(node)));\n },\n\n /**\r\n * Check if the editor is focused.\r\n */\n isFocused(editor) {\n return !!IS_FOCUSED.get(editor);\n },\n\n /**\r\n * Check if the editor is in read-only mode.\r\n */\n isReadOnly(editor) {\n return !!IS_READ_ONLY.get(editor);\n },\n\n /**\r\n * Blur the editor.\r\n */\n blur(editor) {\n var el = ReactEditor.toDOMNode(editor, editor);\n IS_FOCUSED.set(editor, false);\n\n if (window.document.activeElement === el) {\n el.blur();\n }\n },\n\n /**\r\n * Focus the editor.\r\n */\n focus(editor) {\n var el = ReactEditor.toDOMNode(editor, editor);\n IS_FOCUSED.set(editor, true);\n\n if (window.document.activeElement !== el) {\n el.focus({\n preventScroll: true\n });\n }\n },\n\n /**\r\n * Deselect the editor.\r\n */\n deselect(editor) {\n var {\n selection\n } = editor;\n var domSelection = window.getSelection();\n\n if (domSelection && domSelection.rangeCount > 0) {\n domSelection.removeAllRanges();\n }\n\n if (selection) {\n slate.Transforms.deselect(editor);\n }\n },\n\n /**\r\n * Check if a DOM node is within the editor.\r\n */\n hasDOMNode(editor, target) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n editable = false\n } = options;\n var el = ReactEditor.toDOMNode(editor, editor);\n var element; // COMPAT: In Firefox, reading `target.nodeType` will throw an error if\n // target is originating from an internal \"restricted\" element (e.g. a\n // stepper arrow on a number input). (2018/05/04)\n // https://github.com/ianstormtaylor/slate/issues/1819\n\n try {\n element = isDOMElement(target) ? target : target.parentElement;\n } catch (err) {\n if (!err.message.includes('Permission denied to access property \"nodeType\"')) {\n throw err;\n }\n }\n\n if (!element) {\n return false;\n }\n\n return element.closest(\"[data-slate-editor]\") === el && (!editable || el.isContentEditable);\n },\n\n /**\r\n * Insert data from a `DataTransfer` into the editor.\r\n */\n insertData(editor, data) {\n editor.insertData(data);\n },\n\n /**\r\n * Find the native DOM element from a Slate node.\r\n */\n toDOMNode(editor, node) {\n var domNode = slate.Editor.isEditor(node) ? EDITOR_TO_ELEMENT.get(editor) : KEY_TO_ELEMENT.get(ReactEditor.findKey(editor, node));\n\n if (!domNode) {\n throw new Error(\"Cannot resolve a DOM node from Slate node: \".concat(JSON.stringify(node)));\n }\n\n return domNode;\n },\n\n /**\r\n * Find a native DOM selection point from a Slate point.\r\n */\n toDOMPoint(editor, point) {\n var [node] = slate.Editor.node(editor, point.path);\n var el = ReactEditor.toDOMNode(editor, node);\n var domPoint; // If we're inside a void node, force the offset to 0, otherwise the zero\n // width spacing character will result in an incorrect offset of 1\n\n if (slate.Editor.void(editor, {\n at: point\n })) {\n point = {\n path: point.path,\n offset: 0\n };\n } // For each leaf, we need to isolate its content, which means filtering\n // to its direct text and zero-width spans. (We have to filter out any\n // other siblings that may have been rendered alongside them.)\n\n\n var selector = \"[data-slate-string], [data-slate-zero-width]\";\n var texts = Array.from(el.querySelectorAll(selector));\n var start = 0;\n\n for (var text of texts) {\n var domNode = text.childNodes[0];\n\n if (domNode == null || domNode.textContent == null) {\n continue;\n }\n\n var {\n length\n } = domNode.textContent;\n var attr = text.getAttribute('data-slate-length');\n var trueLength = attr == null ? length : parseInt(attr, 10);\n var end = start + trueLength;\n\n if (point.offset <= end) {\n var offset = Math.min(length, Math.max(0, point.offset - start));\n domPoint = [domNode, offset];\n break;\n }\n\n start = end;\n }\n\n if (!domPoint) {\n throw new Error(\"Cannot resolve a DOM point from Slate point: \".concat(JSON.stringify(point)));\n }\n\n return domPoint;\n },\n\n /**\r\n * Find a native DOM range from a Slate `range`.\r\n */\n toDOMRange(editor, range) {\n var {\n anchor,\n focus\n } = range;\n var domAnchor = ReactEditor.toDOMPoint(editor, anchor);\n var domFocus = slate.Range.isCollapsed(range) ? domAnchor : ReactEditor.toDOMPoint(editor, focus);\n var domRange = window.document.createRange();\n var start = slate.Range.isBackward(range) ? domFocus : domAnchor;\n var end = slate.Range.isBackward(range) ? domAnchor : domFocus;\n domRange.setStart(start[0], start[1]);\n domRange.setEnd(end[0], end[1]);\n return domRange;\n },\n\n /**\r\n * Find a Slate node from a native DOM `element`.\r\n */\n toSlateNode(editor, domNode) {\n var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;\n\n if (domEl && !domEl.hasAttribute('data-slate-node')) {\n domEl = domEl.closest(\"[data-slate-node]\");\n }\n\n var node = domEl ? ELEMENT_TO_NODE.get(domEl) : null;\n\n if (!node) {\n throw new Error(\"Cannot resolve a Slate node from DOM node: \".concat(domEl));\n }\n\n return node;\n },\n\n /**\r\n * Get the target range from a DOM `event`.\r\n */\n findEventRange(editor, event) {\n if ('nativeEvent' in event) {\n event = event.nativeEvent;\n }\n\n var {\n clientX: x,\n clientY: y,\n target\n } = event;\n\n if (x == null || y == null) {\n throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n }\n\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node); // If the drop target is inside a void node, move it into either the\n // next or previous node, depending on which side the `x` and `y`\n // coordinates are closest to.\n\n if (slate.Editor.isVoid(editor, node)) {\n var rect = target.getBoundingClientRect();\n var isPrev = editor.isInline(node) ? x - rect.left < rect.left + rect.width - x : y - rect.top < rect.top + rect.height - y;\n var edge = slate.Editor.point(editor, path, {\n edge: isPrev ? 'start' : 'end'\n });\n var point = isPrev ? slate.Editor.before(editor, edge) : slate.Editor.after(editor, edge);\n\n if (point) {\n var _range = slate.Editor.range(editor, point);\n\n return _range;\n }\n } // Else resolve a range from the caret position where the drop occured.\n\n\n var domRange;\n var {\n document\n } = window; // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n\n if (document.caretRangeFromPoint) {\n domRange = document.caretRangeFromPoint(x, y);\n } else {\n var position = document.caretPositionFromPoint(x, y);\n\n if (position) {\n domRange = document.createRange();\n domRange.setStart(position.offsetNode, position.offset);\n domRange.setEnd(position.offsetNode, position.offset);\n }\n }\n\n if (!domRange) {\n throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n } // Resolve a Slate range from the DOM range.\n\n\n var range = ReactEditor.toSlateRange(editor, domRange);\n return range;\n },\n\n /**\r\n * Find a Slate point from a DOM selection's `domNode` and `domOffset`.\r\n */\n toSlatePoint(editor, domPoint) {\n var [nearestNode, nearestOffset] = normalizeDOMPoint(domPoint);\n var parentNode = nearestNode.parentNode;\n var textNode = null;\n var offset = 0;\n\n if (parentNode) {\n var voidNode = parentNode.closest('[data-slate-void=\"true\"]');\n var leafNode = parentNode.closest('[data-slate-leaf]');\n var domNode = null; // Calculate how far into the text node the `nearestNode` is, so that we\n // can determine what the offset relative to the text node is.\n\n if (leafNode) {\n textNode = leafNode.closest('[data-slate-node=\"text\"]');\n var range = window.document.createRange();\n range.setStart(textNode, 0);\n range.setEnd(nearestNode, nearestOffset);\n var contents = range.cloneContents();\n var removals = [...contents.querySelectorAll('[data-slate-zero-width]'), ...contents.querySelectorAll('[contenteditable=false]')];\n removals.forEach(el => {\n el.parentNode.removeChild(el);\n }); // COMPAT: Edge has a bug where Range.prototype.toString() will\n // convert \\n into \\r\\n. The bug causes a loop when slate-react\n // attempts to reposition its cursor to match the native position. Use\n // textContent.length instead.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10291116/\n\n offset = contents.textContent.length;\n domNode = textNode;\n } else if (voidNode) {\n // For void nodes, the element with the offset key will be a cousin, not an\n // ancestor, so find it by going down from the nearest void parent.\n leafNode = voidNode.querySelector('[data-slate-leaf]');\n textNode = leafNode.closest('[data-slate-node=\"text\"]');\n domNode = leafNode;\n offset = domNode.textContent.length;\n } // COMPAT: If the parent node is a Slate zero-width space, editor is\n // because the text node should have no characters. However, during IME\n // composition the ASCII characters will be prepended to the zero-width\n // space, so subtract 1 from the offset to account for the zero-width\n // space character.\n\n\n if (domNode && offset === domNode.textContent.length && parentNode.hasAttribute('data-slate-zero-width')) {\n offset--;\n }\n }\n\n if (!textNode) {\n throw new Error(\"Cannot resolve a Slate point from DOM point: \".concat(domPoint));\n } // COMPAT: If someone is clicking from one Slate editor into another,\n // the select event fires twice, once for the old editor's `element`\n // first, and then afterwards for the correct `element`. (2017/03/03)\n\n\n var slateNode = ReactEditor.toSlateNode(editor, textNode);\n var path = ReactEditor.findPath(editor, slateNode);\n return {\n path,\n offset\n };\n },\n\n /**\r\n * Find a Slate range from a DOM range or selection.\r\n */\n toSlateRange(editor, domRange) {\n var el = domRange instanceof Selection ? domRange.anchorNode : domRange.startContainer;\n var anchorNode;\n var anchorOffset;\n var focusNode;\n var focusOffset;\n var isCollapsed;\n\n if (el) {\n if (domRange instanceof Selection) {\n anchorNode = domRange.anchorNode;\n anchorOffset = domRange.anchorOffset;\n focusNode = domRange.focusNode;\n focusOffset = domRange.focusOffset;\n isCollapsed = domRange.isCollapsed;\n } else {\n anchorNode = domRange.startContainer;\n anchorOffset = domRange.startOffset;\n focusNode = domRange.endContainer;\n focusOffset = domRange.endOffset;\n isCollapsed = domRange.collapsed;\n }\n }\n\n if (anchorNode == null || focusNode == null || anchorOffset == null || focusOffset == null) {\n throw new Error(\"Cannot resolve a Slate range from DOM range: \".concat(domRange));\n }\n\n var anchor = ReactEditor.toSlatePoint(editor, [anchorNode, anchorOffset]);\n var focus = isCollapsed ? anchor : ReactEditor.toSlatePoint(editor, [focusNode, focusOffset]);\n return {\n anchor,\n focus\n };\n }\n\n};\n\n/**\r\n * A React context for sharing the `focused` state of the editor.\r\n */\n\nvar FocusedContext = React.createContext(false);\n/**\r\n * Get the current `focused` state of the editor.\r\n */\n\nvar useFocused = () => {\n return React.useContext(FocusedContext);\n};\n\n/**\r\n * A wrapper around the provider to handle `onChange` events, because the editor\r\n * is a mutable singleton so it won't ever register as \"changed\" otherwise.\r\n */\r\nconst Slate = (props) => {\r\n const { editor, children, onChange, value, ...rest } = props;\r\n const [key, setKey] = React.useState(0);\r\n const context = React.useMemo(() => {\r\n editor.children = value;\r\n Object.assign(editor, rest);\r\n return [editor];\r\n }, [key, value, ...Object.values(rest)]);\r\n const onContextChange = React.useCallback(() => {\r\n onChange(editor.children);\r\n setKey(key + 1);\r\n }, [key, onChange]);\r\n EDITOR_TO_ON_CHANGE.set(editor, onContextChange);\r\n return (React__default.createElement(SlateContext.Provider, { value: context },\r\n React__default.createElement(EditorContext.Provider, { value: editor },\r\n React__default.createElement(FocusedContext.Provider, { value: ReactEditor.isFocused(editor) }, children))));\r\n};\n\n/**\r\n * `withReact` adds React and DOM specific behaviors to the editor.\r\n */\n\nvar withReact = editor => {\n var e = editor;\n var {\n apply,\n onChange\n } = e;\n\n e.apply = op => {\n var matches = [];\n\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node':\n {\n for (var [node, path] of slate.Editor.levels(e, {\n at: op.path\n })) {\n var key = ReactEditor.findKey(e, node);\n matches.push([path, key]);\n }\n\n break;\n }\n\n case 'insert_node':\n case 'remove_node':\n case 'merge_node':\n case 'split_node':\n {\n for (var [_node, _path] of slate.Editor.levels(e, {\n at: slate.Path.parent(op.path)\n })) {\n var _key = ReactEditor.findKey(e, _node);\n\n matches.push([_path, _key]);\n }\n\n break;\n }\n }\n\n apply(op);\n\n for (var [_path2, _key2] of matches) {\n var [_node2] = slate.Editor.node(e, _path2);\n NODE_TO_KEY.set(_node2, _key2);\n }\n };\n\n e.insertData = data => {\n var fragment = data.getData('application/x-slate-fragment');\n\n if (fragment) {\n var decoded = decodeURIComponent(window.atob(fragment));\n var parsed = JSON.parse(decoded);\n slate.Transforms.insertFragment(e, parsed);\n return;\n }\n\n var text = data.getData('text/plain');\n\n if (text) {\n var lines = text.split('\\n');\n var split = false;\n\n for (var line of lines) {\n if (split) {\n slate.Transforms.splitNodes(e);\n }\n\n slate.Transforms.insertText(e, line);\n split = true;\n }\n }\n };\n\n e.onChange = () => {\n // COMPAT: React doesn't batch `setState` hook calls, which means that the\n // children and selection can get out of sync for one render pass. So we\n // have to use this unstable API to ensure it batches them. (2019/12/03)\n // https://github.com/facebook/react/issues/14259#issuecomment-439702367\n ReactDOM.unstable_batchedUpdates(() => {\n var onContextChange = EDITOR_TO_ON_CHANGE.get(e);\n\n if (onContextChange) {\n onContextChange();\n }\n\n onChange();\n });\n };\n\n return e;\n};\n\nexports.DefaultElement = DefaultElement;\nexports.DefaultLeaf = DefaultLeaf;\nexports.Editable = Editable;\nexports.ReactEditor = ReactEditor;\nexports.Slate = Slate;\nexports.useEditor = useEditor;\nexports.useFocused = useFocused;\nexports.useReadOnly = useReadOnly;\nexports.useSelected = useSelected;\nexports.useSlate = useSlate;\nexports.withReact = withReact;\n//# sourceMappingURL=index.js.map\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\n\n// Import the Slate editor factory.\nimport { createEditor, Node } from 'slate'\n\n// Import the Slate components and React plugin.\nimport { Slate, Editable, withReact } from 'slate-react'\n\n\nimport styles from './RichTextEditorForSlate.less';\n\ninterface RichTextEditorForSlateProps {}\ninterface RichTextEditorForSlateState {\n editorState: any;\n}\n\nconst RichTextEditorForSlate = () => {\n const editor = useMemo(() => withReact(createEditor()), []);\n const [value, setValue] = useState([\n {\n type: 'paragraph',\n children: [{ text: 'A line of text in a paragraph.' }],\n },\n ] as Node[]);\n return (\n // Add the editable component inside the context.\n <Slate editor={editor} value={value} onChange={value => {\n console.log('value: ', value);\n setValue(value);\n }}>\n <Editable />\n </Slate>\n )\n}\n\n// class RichTextEditorForSlate extends React.Component<RichTextEditorForSlateProps, RichTextEditorForSlateState> {\n// constructor(props: RichTextEditorForSlateProps) {\n// super(props);\n// this.state = {\n// editorState: initialState,\n// };\n// }\n\n// render() {\n// }\n// }\n\nexport default RichTextEditorForSlate;"],"names":["this","Immutable","Map","_require","_classCallCheck","_possibleConstructorReturn","_inherits","OrderedSet","Record","EMPTY_SET","defaultRecord","CharacterMetadata","findRangesImmutable","List","Repeat","haveEqualStyle","haveEqualEntity","decorateCharacterList","DraftFeatureFlags","applyEntityToContentBlock","invariant","getRangesForDraftEntity","DraftEntitySegments","OrderedMap","generateRandomKey","ContentBlockNode","removeEntitiesAtEdges","randomizeBlockMapKeys","insertIntoList","BlockMapBuilder","getNextDelimiterBlockKey","updateBlockMapLinks","transformBlock","removeRangeFromContentState","insertTextIntoContentState","getContentStateFragment","insertFragmentIntoContentState","getCharacterRemovalRange","splitBlockInContentState","ContentStateInlineStyle","modifyBlockForContentState","applyEntityToContentState","emptyFunction","_assign","DraftEntityInstance","ContentBlock","DraftEntity","SelectionState","sanitizeDraftText","UnicodeBidiDirection","UnicodeBidi","UnicodeBidiService","nullthrows","_extends","ContentState","EditorBidiService","BlockTree","ContentBlockRecord","DraftModifier","EditorState","moveBlockInContentState","cx","getEntityKeyForSelection","isSelectionAtLeafStart","undefined","UAParser","hasOwnProperty","compare","VersionRange","mapObject","memoizeStringOnly","UserAgent","ReactDOM","isNode","isTextNode","containsNode","global","getActiveElement","setDraftEditorSelection","DraftEditorTextNode","hyphenate","camelize","getStyleProperty","getElementRect","getDocumentScrollElement","getUnboundedScrollPosition","Style","getScrollPosition","getElementPosition","getViewportDimensions","Scroll","DraftOffsetKey","DraftEditorLeaf","joinClasses","DraftEditorBlock","DraftEditorContents","DataTransfer","createArrayFromMixed","PhotosMimeType","getSelectionOffsetKeyForNode","findAncestorOffsetKey","getUpdatedSelectionState","isEventHandled","getTextContentFromFiles","getFragmentFromSelection","getNodeLength","getRangeClientRects","UnicodeUtils","removeTextWithStrategy","moveSelectionBackward","expandRangeToStartOfLine","getDraftEditorSelectionWithNodes","DraftRemovableWord","moveSelectionForward","KeyBindingUtil","isChrome","keyCommandPlainDelete","keyCommandDeleteWord","keyCommandPlainBackspace","keyCommandBackspaceWord","keyCommandBackspaceToStartOfLine","keyCommandInsertNewline","keyCommandTransposeCharacters","keyCommandMoveSelectionToStartOfBlock","keyCommandMoveSelectionToEndOfBlock","SecondaryClipboard","keyCommandUndo","Set","URI","getSafeBodyFromHTML","DefaultDraftBlockRenderMap","convertFromHTMLtoContentBlocks","adjustBlockDepthForContentState","splitTextIntoTextBlocks","RichTextEditorUtil","DraftPasteProcessor","insertFragment","getDraftEditorSelection","onBeforeInput","onBlur","onCompositionStart","onCopy","onCut","onDragOver","onDragStart","onFocus","onInput","onKeyDown","onPaste","onSelect","isOSX","DraftEditorEditHandler","DraftEditorCompositionHandler","DraftEditorDragHandler","DraftEditorPlaceholder","getDefaultKeyBinding","strlen","DraftStringKey","areEqual","encodeInlineStyleRanges","encodeEntityRanges","substr","createCharacterList","decodeInlineStyleRanges","decodeEntityRanges","DraftTreeAdapter","getRangeBoundingClientRect","DraftEditor","CompositeDraftDecorator","AtomicBlockUtils","convertFromRawToDraftState","convertFromDraftStateToRaw","getVisibleSelectionRect","require$$0","require$$1","_interopRequireDefault","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","_draftJs","_immutable","_react","_configs","_draftConvert","_draftjsUtils","_braftConvert","_content","_base","_color","lengthOptions","defaultValue","BraftEditor","use","MaxLength","emoticons","defaultEmoticons","map","item","require","emotionOptions","closeOnBlur","closeOnSelect","Emoticon","BarftEditorPage","controls","useState","createEditorState","editorState","setEditorState","height","boxShadow","Link","props","contentState","getEntity","entityKey","getData","url","children","decorator","CompositeDecorator","strategy","contentBlock","callback","findEntityRanges","character","getType","component","display","width","backgroundImage","backgroundSize","color","RichTextEditor","state","createEmpty","onChange","setState","handleKeyCommand","bind","defaultBlockStyleFn","command","newState","RichUtils","console","log","getCurrentContent","selectionState","getSelection","getStartOffset","getEndOffset","startOffset","endOffset","getAnchorKey","toggleInlineStyle","contentStateWithEntity","createEntity","getLastCreatedEntityKey","contentStateWithLink","Modifier","applyEntity","newEditorState","push","e","emojiCode","EMOJIEntity","ncsWithEntity","insertText","convertToRaw","type","styles","wrapper","btnListWrapper","_onBoldClick","_onCheckRange","_onLinkClick","_onEmojiClick","editorWrapper","Editor","defaultBlockRenderFn","React","Component","immer","RTL","LTR","slate","isHotkey","RichTextEditorForSlate","editor","useMemo","withReact","createEditor","text","value","setValue","Slate","Editable"],"mappings":"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"}