No Description

Draft-ec3417b2.js.map 1.1MB

1
  1. {"version":3,"file":"Draft-ec3417b2.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"],"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;"],"names":["this","Immutable","_require","_classCallCheck","_possibleConstructorReturn","_inherits","Map","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","createArrayFromMixed","PhotosMimeType","getSelectionOffsetKeyForNode","findAncestorOffsetKey","getUpdatedSelectionState","DataTransfer","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","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"],"mappings":"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"}