Sin descripción

index.js.map 1.8MB

1
  1. {"version":3,"file":"index.js","sources":["../../node_modules/immutable/dist/immutable.js","../../node_modules/draftjs-utils/lib/draftjs-utils.js","../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../node_modules/invariant/browser.js","../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../node_modules/draft-convert/lib/util/updateMutation.js","../../node_modules/draft-convert/lib/util/rangeSort.js","../../node_modules/draft-convert/lib/encodeBlock.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/draft-convert/lib/util/splitReactElement.js","../../node_modules/draft-convert/lib/util/getElementHTML.js","../../node_modules/draft-convert/lib/util/getElementTagLength.js","../../node_modules/draft-convert/lib/blockEntities.js","../../node_modules/draft-convert/lib/util/styleObjectFunction.js","../../node_modules/draft-convert/lib/util/accumulateFunction.js","../../node_modules/draft-convert/lib/default/defaultInlineHTML.js","../../node_modules/draft-convert/lib/blockInlineStyles.js","../../node_modules/draft-convert/lib/util/blockTypeObjectFunction.js","../../node_modules/draft-convert/lib/util/getBlockTags.js","../../node_modules/draft-convert/lib/util/getNestedBlockTags.js","../../node_modules/draft-convert/lib/default/defaultBlockHTML.js","../../node_modules/draft-convert/lib/convertToHTML.js","../../node_modules/draft-convert/node_modules/immutable/dist/immutable.js","../../node_modules/draft-convert/lib/util/parseHTML.js","../../node_modules/draft-convert/lib/convertFromHTML.js","../../node_modules/draft-convert/lib/index.js","../../node_modules/braft-convert/dist/configs.js","../../node_modules/braft-convert/dist/index.js","../../node_modules/braft-utils/dist/content.js","../../node_modules/braft-utils/dist/base.js","../../node_modules/braft-utils/dist/color.js","../../node_modules/braft-utils/dist/index.js","../../node_modules/braft-editor/node_modules/immutable/dist/immutable.js","../../node_modules/braft-finder/dist/index.js","../../node_modules/braft-editor/node_modules/draftjs-utils/lib/draftjs-utils.js","../../node_modules/braft-editor/dist/index.js","../../node_modules/braft-extensions/dist/emoticon.js","../../node_modules/braft-extensions/dist/max-length.js","../../src/components/Editor/BraftEditor/index.tsx"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.Immutable = {})));\n}(this, (function (exports) { 'use strict';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n function MakeRef() {\n return { value: false };\n }\n\n function SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n }\n\n function isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n }\n\n // Note: value is unchanged to not break immutable-devtools.\n var IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\n function isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n }\n\n var IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\n function isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n }\n\n var IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\n function isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n var Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n };\n\n var KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n }(Collection));\n\n var IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n }(Collection));\n\n var SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n }(Collection));\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\n function isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n }\n\n var IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\n function isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n }\n\n function isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n }\n\n var IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\n function isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n }\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n var Iterator = function Iterator(next) {\n this.next = next;\n };\n\n Iterator.prototype.toString = function toString () {\n return '[Iterator]';\n };\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect = Iterator.prototype.toSource = function() {\n return this.toString();\n };\n Iterator.prototype[ITERATOR_SYMBOL] = function() {\n return this;\n };\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n function isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n }\n\n var Seq = /*@__PURE__*/(function (Collection$$1) {\n function Seq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection$$1 ) Seq.__proto__ = Collection$$1;\n Seq.prototype = Object.create( Collection$$1 && Collection$$1.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n }(Collection));\n\n var KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === null || value === undefined\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n }(Seq));\n\n var IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n }(Seq));\n\n var SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (isCollection(value) && !isAssociative(value)\n ? value\n : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n }(Seq));\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n Seq.prototype[IS_SEQ_SYMBOL] = true;\n\n // #pragma Root Sequences\n\n var ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n }(IndexedSeq));\n\n var ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n }(KeyedSeq));\n ObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\n var CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n }(IndexedSeq));\n\n // # pragma Helper functions\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq = Array.isArray(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n }\n\n function maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n }\n\n var IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\n function isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n }\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n function isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n }\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n }\n\n var defaultValueOf = Object.prototype.valueOf;\n\n function hash(o) {\n switch (typeof o) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return o ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(o);\n case 'string':\n return o.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(o)\n : hashString(o);\n case 'object':\n case 'function':\n if (o === null) {\n return 0x42108422;\n }\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n if (o.valueOf !== defaultValueOf && typeof o.valueOf === 'function') {\n o = o.valueOf(o);\n }\n return hashJSObj(o);\n case 'undefined':\n return 0x42108423;\n default:\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + typeof o + ' cannot be hashed.');\n }\n }\n\n // Compress arbitrarily large numbers into smi hashes.\n function hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n }\n\n function cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n }\n\n function hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n })();\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n var ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq$$1) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq$$1 ) ToKeyedSequence.__proto__ = KeyedSeq$$1;\n ToKeyedSequence.prototype = Object.create( KeyedSeq$$1 && KeyedSeq$$1.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n }(KeyedSeq));\n ToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\n var ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq$$1) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq$$1 ) ToIndexedSequence.__proto__ = IndexedSeq$$1;\n ToIndexedSequence.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1.size - ++i : i++, this$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n }(IndexedSeq));\n\n var ToSetSequence = /*@__PURE__*/(function (SetSeq$$1) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq$$1 ) ToSetSequence.__proto__ = SetSeq$$1;\n ToSetSequence.prototype = Object.create( SetSeq$$1 && SetSeq$$1.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n }(SetSeq));\n\n var FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq$$1) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq$$1 ) FromEntriesSequence.__proto__ = KeyedSeq$$1;\n FromEntriesSequence.prototype = Object.create( KeyedSeq$$1 && KeyedSeq$$1.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n }(KeyedSeq));\n\n ToIndexedSequence.prototype.cacheResult = ToKeyedSequence.prototype.cacheResult = ToSetSequence.prototype.cacheResult = FromEntriesSequence.prototype.cacheResult = cacheResultThrough;\n\n function flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function() {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n }\n\n function mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n }\n\n function reverseFactory(collection, useKeys) {\n var this$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function() {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function(fn, reverse) {\n var this$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1.size - ++i : i++, this$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n }\n\n function filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n }\n\n function countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n }\n\n function groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n }\n\n function sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n }\n\n function takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n function skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n function concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n }\n\n function flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n }\n\n function flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n }\n\n function interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1) !== false) &&\n fn(v, iterations++, this$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n function sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries.sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; }).forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n }\n\n function maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n }\n\n function zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function (s) { return s.value; }))\n );\n });\n };\n return zipSequence;\n }\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n }\n\n function makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n }\n\n function defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n }\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n function coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n }\n\n function isPlainObj(value) {\n return (\n value &&\n (typeof value.constructor !== 'function' ||\n value.constructor.name === 'Object')\n );\n }\n\n /**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\n function isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObj(value))\n );\n }\n\n /**\n * Converts a value to a string, adding quotes if a string was provided.\n */\n function quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n }\n\n function has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n }\n\n function get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n }\n\n function shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n }\n\n function remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n }\n\n function set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n }\n\n function updateIn(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n }\n\n function updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n ) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n }\n\n function setIn(collection, keyPath, value) {\n return updateIn(collection, keyPath, NOT_SET, function () { return value; });\n }\n\n function setIn$1(keyPath, v) {\n return setIn(this, keyPath, v);\n }\n\n function removeIn(collection, keyPath) {\n return updateIn(collection, keyPath, function () { return NOT_SET; });\n }\n\n function deleteIn(keyPath) {\n return removeIn(this, keyPath);\n }\n\n function update(collection, key, notSetValue, updater) {\n return updateIn(collection, [key], notSetValue, updater);\n }\n\n function update$1(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update(this, key, notSetValue, updater);\n }\n\n function updateIn$1(keyPath, notSetValue, updater) {\n return updateIn(this, keyPath, notSetValue, updater);\n }\n\n function merge() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n }\n\n function mergeWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n }\n\n function mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update(\n collection,\n key,\n NOT_SET,\n function (oldVal) { return (oldVal === NOT_SET ? value : merger(oldVal, value, key)); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n }\n\n function merge$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n }\n\n function mergeWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n }\n\n function mergeDeep(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n }\n\n function mergeDeepWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n }\n\n function mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n }\n\n function mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection$$1 = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection$$1(sources[i]).forEach(mergeItem);\n }\n return merged;\n }\n\n function deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) && isDataStructure(newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n }\n\n function mergeDeep$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n }\n\n function mergeDeepWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n }\n\n function mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n }\n\n function mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n }\n\n function withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n }\n\n function asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n }\n\n function asImmutable() {\n return this.__ensureOwner();\n }\n\n function wasAltered() {\n return this.__altered;\n }\n\n var Map = /*@__PURE__*/(function (KeyedCollection$$1) {\n function Map(value) {\n return value === null || value === undefined\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection$$1(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection$$1 ) Map.__proto__ = KeyedCollection$$1;\n Map.prototype = Object.create( KeyedCollection$$1 && KeyedCollection$$1.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, map));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n }(KeyedCollection));\n\n Map.isMap = isMap;\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SYMBOL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeAll = MapPrototype.deleteAll;\n MapPrototype.setIn = setIn$1;\n MapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\n MapPrototype.update = update$1;\n MapPrototype.updateIn = updateIn$1;\n MapPrototype.merge = MapPrototype.concat = merge;\n MapPrototype.mergeWith = mergeWith;\n MapPrototype.mergeDeep = mergeDeep$1;\n MapPrototype.mergeDeepWith = mergeDeepWith$1;\n MapPrototype.mergeIn = mergeIn;\n MapPrototype.mergeDeepIn = mergeDeepIn;\n MapPrototype.withMutations = withMutations;\n MapPrototype.wasAltered = wasAltered;\n MapPrototype.asImmutable = asImmutable;\n MapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\n MapPrototype['@@transducer/step'] = function(result, arr) {\n return result.set(arr[0], arr[1]);\n };\n MapPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n };\n\n // #pragma Trie Nodes\n\n var ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n };\n\n ArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n var BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n };\n\n BitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n };\n\n BitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n var HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n };\n\n HashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n var HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n };\n\n HashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n var ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n };\n\n ValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate = function(\n fn,\n reverse\n ) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n };\n\n BitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate = function(\n fn,\n reverse\n ) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n };\n\n // eslint-disable-next-line no-unused-vars\n ValueNode.prototype.iterate = function(fn, reverse) {\n return fn(this.entry);\n };\n\n var MapIterator = /*@__PURE__*/(function (Iterator$$1) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator$$1 ) MapIterator.__proto__ = Iterator$$1;\n MapIterator.prototype = Object.create( Iterator$$1 && Iterator$$1.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n }(Iterator));\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n }\n\n function makeMap(size, root, ownerID, hash$$1) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash$$1;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n ) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n }\n\n function isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n }\n\n function setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n var IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\n function isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n }\n\n var List = /*@__PURE__*/(function (IndexedCollection$$1) {\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection$$1(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection$$1 ) List.__proto__ = IndexedCollection$$1;\n List.prototype = Object.create( IndexedCollection$$1 && IndexedCollection$$1.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection$$1(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, list));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n }(IndexedCollection));\n\n List.isList = isList;\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SYMBOL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.merge = ListPrototype.concat;\n ListPrototype.setIn = setIn$1;\n ListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\n ListPrototype.update = update$1;\n ListPrototype.updateIn = updateIn$1;\n ListPrototype.mergeIn = mergeIn;\n ListPrototype.mergeDeepIn = mergeDeepIn;\n ListPrototype.withMutations = withMutations;\n ListPrototype.wasAltered = wasAltered;\n ListPrototype.asImmutable = asImmutable;\n ListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\n ListPrototype['@@transducer/step'] = function(result, arr) {\n return result.push(arr);\n };\n ListPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n };\n\n var VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n };\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n }\n\n var OrderedMap = /*@__PURE__*/(function (Map$$1) {\n function OrderedMap(value) {\n return value === null || value === undefined\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map$$1 ) OrderedMap.__proto__ = Map$$1;\n OrderedMap.prototype = Object.create( Map$$1 && Map$$1.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n }(Map));\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n var IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\n function isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n }\n\n var Stack = /*@__PURE__*/(function (IndexedCollection$$1) {\n function Stack(value) {\n return value === null || value === undefined\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection$$1 ) Stack.__proto__ = IndexedCollection$$1;\n Stack.prototype = Object.create( IndexedCollection$$1 && IndexedCollection$$1.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection$$1(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection$$1.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n }(IndexedCollection));\n\n Stack.isStack = isStack;\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SYMBOL] = true;\n StackPrototype.shift = StackPrototype.pop;\n StackPrototype.unshift = StackPrototype.push;\n StackPrototype.unshiftAll = StackPrototype.pushAll;\n StackPrototype.withMutations = withMutations;\n StackPrototype.wasAltered = wasAltered;\n StackPrototype.asImmutable = asImmutable;\n StackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\n StackPrototype['@@transducer/step'] = function(result, arr) {\n return result.unshift(arr);\n };\n StackPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n };\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n var IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\n function isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n }\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n function toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n }\n\n var Set = /*@__PURE__*/(function (SetCollection$$1) {\n function Set(value) {\n return value === null || value === undefined\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection$$1(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection$$1 ) Set.__proto__ = SetCollection$$1;\n Set.prototype = Object.create( SetCollection$$1 && SetCollection$$1.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n var removes = [];\n var adds = [];\n this.forEach(function (value) {\n var mapped = mapper.call(context, value, value, this$1);\n if (mapped !== value) {\n removes.push(value);\n adds.push(mapped);\n }\n });\n return this.withMutations(function (set) {\n removes.forEach(function (value) { return set.remove(value); });\n adds.forEach(function (value) { return set.add(value); });\n });\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetCollection$$1(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection$$1(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection$$1(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n }(SetCollection));\n\n Set.isSet = isSet;\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SYMBOL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.merge = SetPrototype.concat = SetPrototype.union;\n SetPrototype.withMutations = withMutations;\n SetPrototype.asImmutable = asImmutable;\n SetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\n SetPrototype['@@transducer/step'] = function(result, arr) {\n return result.add(arr);\n };\n SetPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n };\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n /**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\n var Range = /*@__PURE__*/(function (IndexedSeq$$1) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq$$1 ) Range.__proto__ = IndexedSeq$$1;\n Range.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n }(IndexedSeq));\n\n var EMPTY_RANGE;\n\n function getIn(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n }\n\n function getIn$1(searchKeyPath, notSetValue) {\n return getIn(this, searchKeyPath, notSetValue);\n }\n\n function hasIn(collection, keyPath) {\n return getIn(collection, keyPath, NOT_SET) !== NOT_SET;\n }\n\n function hasIn$1(searchKeyPath) {\n return hasIn(this, searchKeyPath);\n }\n\n function toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n }\n\n // Note: all of these methods are deprecated.\n Collection.isIterable = isCollection;\n Collection.isKeyed = isKeyed;\n Collection.isIndexed = isIndexed;\n Collection.isAssociative = isAssociative;\n Collection.isOrdered = isOrdered;\n\n Collection.Iterator = Iterator;\n\n mixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq()\n .map(this.__toStringMapper)\n .join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection\n .toSeq()\n .map(entryMapper)\n .toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq()\n .reverse()\n .findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn$1,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn$1,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq()\n .map(keyMapper)\n .toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq()\n .reverse()\n .first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq()\n .reverse()\n .keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n var CollectionPrototype = Collection.prototype;\n CollectionPrototype[IS_COLLECTION_SYMBOL] = true;\n CollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\n CollectionPrototype.toJSON = CollectionPrototype.toArray;\n CollectionPrototype.__toStringMapper = quoteString;\n CollectionPrototype.inspect = CollectionPrototype.toSource = function() {\n return this.toString();\n };\n CollectionPrototype.chain = CollectionPrototype.flatMap;\n CollectionPrototype.contains = CollectionPrototype.includes;\n\n mixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1); })\n .flip()\n );\n },\n });\n\n var KeyedCollectionPrototype = KeyedCollection.prototype;\n KeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\n KeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\n KeyedCollectionPrototype.toJSON = toObject;\n KeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\n mixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n (this.size === Infinity || (this.size !== undefined && index > this.size))\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n });\n\n var IndexedCollectionPrototype = IndexedCollection.prototype;\n IndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\n IndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\n mixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n });\n\n SetCollection.prototype.has = CollectionPrototype.includes;\n SetCollection.prototype.contains = SetCollection.prototype.includes;\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedCollection.prototype);\n mixin(IndexedSeq, IndexedCollection.prototype);\n mixin(SetSeq, SetCollection.prototype);\n\n // #pragma Helper functions\n\n function reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n }\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n };\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n }\n\n function hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n }\n\n var OrderedSet = /*@__PURE__*/(function (Set$$1) {\n function OrderedSet(value) {\n return value === null || value === undefined\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set$$1 ) OrderedSet.__proto__ = Set$$1;\n OrderedSet.prototype = Object.create( Set$$1 && Set$$1.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n }(Set));\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\n OrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\n OrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n }\n\n var Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n var this$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1._indices[k], v === this$1._defaultValues[k] ? undefined : v);\n });\n });\n };\n\n var RecordTypePrototype = (RecordType.prototype = Object.create(\n RecordPrototype\n ));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n };\n\n Record.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n };\n\n Record.prototype.equals = function equals (other) {\n return (\n this === other ||\n (other &&\n this._keys === other._keys &&\n recordSeq(this).equals(recordSeq(other)))\n );\n };\n\n Record.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n };\n\n // @pragma Access\n\n Record.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n };\n\n Record.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n };\n\n // @pragma Modification\n\n Record.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n };\n\n Record.prototype.remove = function remove (k) {\n return this.set(k);\n };\n\n Record.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n return this.__ownerID ? this : makeRecord(this, newValues);\n };\n\n Record.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n };\n\n Record.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n };\n\n Record.prototype.toJS = function toJS$1 () {\n return toJS(this);\n };\n\n Record.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n };\n\n Record.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n };\n\n Record.isRecord = isRecord;\n Record.getDescriptiveName = recordName;\n var RecordPrototype = Record.prototype;\n RecordPrototype[IS_RECORD_SYMBOL] = true;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\n RecordPrototype.getIn = getIn$1;\n RecordPrototype.hasIn = CollectionPrototype.hasIn;\n RecordPrototype.merge = merge;\n RecordPrototype.mergeWith = mergeWith;\n RecordPrototype.mergeIn = mergeIn;\n RecordPrototype.mergeDeep = mergeDeep$1;\n RecordPrototype.mergeDeepWith = mergeDeepWith$1;\n RecordPrototype.mergeDeepIn = mergeDeepIn;\n RecordPrototype.setIn = setIn$1;\n RecordPrototype.update = update$1;\n RecordPrototype.updateIn = updateIn$1;\n RecordPrototype.withMutations = withMutations;\n RecordPrototype.asMutable = asMutable;\n RecordPrototype.asImmutable = asImmutable;\n RecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\n RecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\n RecordPrototype.inspect = RecordPrototype.toSource = function() {\n return this.toString();\n };\n\n function makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n }\n\n function recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n }\n\n function setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n /**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\n var Repeat = /*@__PURE__*/(function (IndexedSeq$$1) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq$$1 ) Repeat.__proto__ = IndexedSeq$$1;\n Repeat.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(\n function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n }(IndexedSeq));\n\n var EMPTY_REPEAT;\n\n function fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n }\n\n function fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n var toSeq = Array.isArray(value)\n ? IndexedSeq\n : isPlainObj(value)\n ? KeyedSeq\n : null;\n if (toSeq) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n toSeq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n }\n\n function defaultConverter(k, v) {\n return isKeyed(v) ? v.toMap() : v.toList();\n }\n\n var version = \"4.0.0-rc.11\";\n\n var Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn,\n has: has,\n hasIn: hasIn,\n merge: merge$1,\n mergeDeep: mergeDeep,\n mergeWith: mergeWith$1,\n mergeDeepWith: mergeDeepWith,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn,\n update: update,\n updateIn: updateIn,\n };\n\n // Note: Iterable is deprecated\n var Iterable = Collection;\n\n exports.default = Immutable;\n exports.version = version;\n exports.Collection = Collection;\n exports.Iterable = Iterable;\n exports.Seq = Seq;\n exports.Map = Map;\n exports.OrderedMap = OrderedMap;\n exports.List = List;\n exports.Stack = Stack;\n exports.Set = Set;\n exports.OrderedSet = OrderedSet;\n exports.Record = Record;\n exports.Range = Range;\n exports.Repeat = Repeat;\n exports.is = is;\n exports.fromJS = fromJS;\n exports.hash = hash;\n exports.isImmutable = isImmutable;\n exports.isCollection = isCollection;\n exports.isKeyed = isKeyed;\n exports.isIndexed = isIndexed;\n exports.isAssociative = isAssociative;\n exports.isOrdered = isOrdered;\n exports.isValueObject = isValueObject;\n exports.get = get;\n exports.getIn = getIn;\n exports.has = has;\n exports.hasIn = hasIn;\n exports.merge = merge$1;\n exports.mergeDeep = mergeDeep;\n exports.mergeWith = mergeWith$1;\n exports.mergeDeepWith = mergeDeepWith;\n exports.remove = remove;\n exports.removeIn = removeIn;\n exports.set = set;\n exports.setIn = setIn;\n exports.update = update;\n exports.updateIn = updateIn;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"draft-js\"),require(\"immutable\")):\"function\"==typeof define&&define.amd?define([\"draft-js\",\"immutable\"],e):\"object\"==typeof exports?exports.draftjsUtils=e(require(\"draft-js\"),require(\"immutable\")):t.draftjsUtils=e(t[\"draft-js\"],t.immutable)}(window,function(n,r){return u={},o.m=i=[function(t,e){t.exports=n},function(t,e){t.exports=r},function(t,e,n){t.exports=n(3)},function(t,e,n){\"use strict\";n.r(e);var C=n(0),i=n(1);function m(t){var e=t.getSelection(),n=t.getCurrentContent(),r=e.getStartKey(),o=e.getEndKey(),i=n.getBlockMap();return i.toSeq().skipUntil(function(t,e){return e===r}).takeUntil(function(t,e){return e===o}).concat([[o,i.get(o)]])}function a(t){return m(t).toList()}function f(t){if(t)return a(t).get(0)}function r(t){if(t){var n=f(t),e=t.getCurrentContent().getBlockMap().toSeq().toList(),r=0;if(e.forEach(function(t,e){t.get(\"key\")===n.get(\"key\")&&(r=e-1)}),-1<r)return e.get(r)}}function o(t){return t?t.getCurrentContent().getBlockMap().toList():new i.List}function u(t){var e=a(t);if(!e.some(function(t){return t.type!==e.get(0).type}))return e.get(0).type}function c(t){var e=C.RichUtils.tryToRemoveBlockStyle(t);return e?C.EditorState.push(t,e,\"change-block-type\"):t}function l(t){var e=\"\",n=t.getSelection(),r=n.getAnchorOffset(),o=n.getFocusOffset(),i=a(t);if(0<i.size){if(n.getIsBackward()){var u=r;r=o,o=u}for(var c=0;c<i.size;c+=1){var f=0===c?r:0,l=c===i.size-1?o:i.get(c).getText().length;e+=i.get(c).getText().slice(f,l)}}return e}function s(t){var e=t.getCurrentContent(),n=t.getSelection(),r=C.Modifier.removeRange(e,n,\"forward\"),o=r.getSelectionAfter(),i=r.getBlockForKey(o.getStartKey());return r=C.Modifier.insertText(r,o,\"\\n\",i.getInlineStyleAt(o.getStartOffset()),null),C.EditorState.push(t,r,\"insert-fragment\")}function g(t){var e=C.Modifier.splitBlock(t.getCurrentContent(),t.getSelection());return c(C.EditorState.push(t,e,\"split-block\"))}function d(t){var e=t.getCurrentContent().getBlockMap().toList(),n=t.getSelection().merge({anchorKey:e.first().get(\"key\"),anchorOffset:0,focusKey:e.last().get(\"key\"),focusOffset:e.last().getLength()}),r=C.Modifier.removeRange(t.getCurrentContent(),n,\"forward\");return C.EditorState.push(t,r,\"remove-range\")}function S(t,e){var n=C.Modifier.setBlockData(t.getCurrentContent(),t.getSelection(),e);return C.EditorState.push(t,n,\"change-block-data\")}function p(t){var r=new i.Map({}),e=a(t);if(e&&0<e.size)for(var n=function(t){var n=e.get(t).getData();if(!n||0===n.size)return r=r.clear(),\"break\";if(0===t)r=n;else if(r.forEach(function(t,e){n.get(e)&&n.get(e)===t||(r=r.delete(e))}),0===r.size)return r=r.clear(),\"break\"},o=0;o<e.size;o+=1){if(\"break\"===n(o))break}return r}var y=Object(i.Map)({code:{element:\"pre\"}}),v=C.DefaultDraftBlockRenderMap.merge(y);function b(t){if(t){var e=t.getType();return\"unordered-list-item\"===e||\"ordered-list-item\"===e}return!1}function h(t,e,n){var r,o=t.getSelection();r=o.getIsBackward()?o.getFocusKey():o.getAnchorKey();var i=t.getCurrentContent(),u=i.getBlockForKey(r),c=u.getType();if(\"unordered-list-item\"!==c&&\"ordered-list-item\"!==c)return t;var f=i.getBlockBefore(r);if(!f)return t;if(f.getType()!==c)return t;var l=u.getDepth();if(1===e&&l===n)return t;var a,s,g,d,S,p,y,v=Math.min(f.getDepth()+1,n),b=(s=e,g=v,d=(a=t).getSelection(),S=a.getCurrentContent(),p=S.getBlockMap(),y=m(a).map(function(t){var e=t.getDepth()+s;return e=Math.max(0,Math.min(e,g)),t.set(\"depth\",e)}),p=p.merge(y),S.merge({blockMap:p,selectionBefore:d,selectionAfter:d}));return C.EditorState.push(t,b,\"adjust-depth\")}function O(t,e){var n;return 13===(n=e).which&&(n.getModifierState(\"Shift\")||n.getModifierState(\"Alt\")||n.getModifierState(\"Control\"))?t.getSelection().isCollapsed()?C.RichUtils.insertSoftNewline(t):s(t):function(t){var e=t.getSelection();if(e.isCollapsed()){var n=t.getCurrentContent(),r=e.getStartKey(),o=n.getBlockForKey(r);if(!b(o)&&\"unstyled\"!==o.getType()&&o.getLength()===e.getStartOffset())return g(t);if(b(o)&&0===o.getLength()){var i=o.getDepth();if(0===i)return c(t);if(0<i)return h(t,-1,i)}}}(t)}function k(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function E(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function I(t){return(I=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function R(t){var e=t.getSelection();if(e.isCollapsed()){var n={},r=t.getCurrentInlineStyle().toList().toJS();if(r)return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(t){n[t]=0<=r.indexOf(t)}),n}var u=e.getStartOffset(),c=e.getEndOffset(),f=a(t);if(0<f.size){var o=function(){for(var n={BOLD:!0,ITALIC:!0,UNDERLINE:!0,STRIKETHROUGH:!0,CODE:!0,SUPERSCRIPT:!0,SUBSCRIPT:!0},r=0;r<f.size;r+=1){var t=0===r?u:0,e=r===f.size-1?c:f.get(r).getText().length;t===e&&0===t?(t=1,e=2):t===e&&--t;for(var o=function(t){var e=f.get(r).getInlineStyleAt(t);[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(t){n[t]=n[t]&&e.get(t)===t})},i=t;i<e;i+=1)o(i)}return{v:n}}();if(\"object\"===I(o))return o.v}return{}}function B(t){var e,n=t.getSelection(),r=n.getStartOffset(),o=n.getEndOffset();r===o&&0===r?o=1:r===o&&--r;for(var i=f(t),u=r;u<o;u+=1){var c=i.getEntityAt(u);if(!c){e=void 0;break}if(u===r)e=c;else if(e!==c){e=void 0;break}}return e}function T(t,e){var n,r=f(t);return r.findEntityRanges(function(t){return t.get(\"entity\")===e},function(t,e){n={start:t,end:e,text:r.get(\"text\").slice(t,e)}}),n}function P(t,e,n){x[t][\"\".concat(t.toLowerCase(),\"-\").concat(n)]=E({},\"\".concat(e),n)}function j(){return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?k(Object(n),!0).forEach(function(t){E(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):k(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},x.color,{},x.bgcolor,{},x.fontSize,{},x.fontFamily,{CODE:x.CODE,SUPERSCRIPT:x.SUPERSCRIPT,SUBSCRIPT:x.SUBSCRIPT})}var x={color:{},bgcolor:{},fontSize:{},fontFamily:{},CODE:{fontFamily:\"monospace\",wordWrap:\"break-word\",background:\"#f1f1f1\",borderRadius:3,padding:\"1px 3px\"},SUPERSCRIPT:{fontSize:11,position:\"relative\",top:-8,display:\"inline-flex\"},SUBSCRIPT:{fontSize:11,position:\"relative\",bottom:-8,display:\"inline-flex\"}};function M(t,e,n){var r=t.getSelection(),o=Object.keys(x[e]).reduce(function(t,e){return C.Modifier.removeInlineStyle(t,r,e)},t.getCurrentContent()),i=C.EditorState.push(t,o,\"changeinline-style\"),u=t.getCurrentInlineStyle();if(r.isCollapsed()&&(i=u.reduce(function(t,e){return C.RichUtils.toggleInlineStyle(t,e)},i)),\"SUPERSCRIPT\"===e||\"SUBSCRIPT\"==e)u.has(n)||(i=C.RichUtils.toggleInlineStyle(i,n));else{var c=\"bgcolor\"===e?\"backgroundColor\":e;u.has(\"\".concat(c,\"-\").concat(n))||(i=C.RichUtils.toggleInlineStyle(i,\"\".concat(e.toLowerCase(),\"-\").concat(n)),P(e,c,n))}return i}function L(t){t&&t.getCurrentContent().getBlockMap().map(function(t){return t.get(\"characterList\")}).toList().flatten().forEach(function(t){t&&0===t.indexOf(\"color-\")?P(\"color\",\"color\",t.substr(6)):t&&0===t.indexOf(\"bgcolor-\")?P(\"bgcolor\",\"backgroundColor\",t.substr(8)):t&&0===t.indexOf(\"fontsize-\")?P(\"fontSize\",\"fontSize\",+t.substr(9)):t&&0===t.indexOf(\"fontfamily-\")&&P(\"fontFamily\",\"fontFamily\",t.substr(11))})}function U(t,e,n){var r=t.getInlineStyleAt(n).toList().filter(function(t){return t.startsWith(e.toLowerCase())});if(r&&0<r.size)return r.get(0)}function w(r,l){if(r&&l&&0<l.length){var t=function(){var t=r.getSelection(),i={};if(t.isCollapsed())return l.forEach(function(t){i[t]=function(t,e){var n=t.getCurrentInlineStyle().toList().filter(function(t){return t.startsWith(e.toLowerCase())});if(n&&0<n.size)return n.get(0)}(r,t)}),{v:i};var u=t.getStartOffset(),c=t.getEndOffset(),f=a(r);if(0<f.size){for(var e=function(n){var t=0===n?u:0,e=n===f.size-1?c:f.get(n).getText().length;t===e&&0===t?(t=1,e=2):t===e&&--t;for(var r=function(e){e===t?l.forEach(function(t){i[t]=U(f.get(n),t,e)}):l.forEach(function(t){i[t]&&i[t]!==U(f.get(n),t,e)&&(i[t]=void 0)})},o=t;o<e;o+=1)r(o)},n=0;n<f.size;n+=1)e(n);return{v:i}}}();if(\"object\"===I(t))return t.v}return{}}function D(e){var t=e.getCurrentInlineStyle(),n=e.getCurrentContent();return t.forEach(function(t){n=C.Modifier.removeInlineStyle(n,e.getSelection(),t)}),C.EditorState.push(e,n,\"change-inline-style\")}n.d(e,\"isListBlock\",function(){return b}),n.d(e,\"changeDepth\",function(){return h}),n.d(e,\"handleNewLine\",function(){return O}),n.d(e,\"getEntityRange\",function(){return T}),n.d(e,\"getCustomStyleMap\",function(){return j}),n.d(e,\"toggleCustomInlineStyle\",function(){return M}),n.d(e,\"getSelectionEntity\",function(){return B}),n.d(e,\"extractInlineStyle\",function(){return L}),n.d(e,\"removeAllInlineStyles\",function(){return D}),n.d(e,\"getSelectionInlineStyle\",function(){return R}),n.d(e,\"getSelectionCustomInlineStyle\",function(){return w}),n.d(e,\"getSelectedBlocksMap\",function(){return m}),n.d(e,\"getSelectedBlocksList\",function(){return a}),n.d(e,\"getSelectedBlock\",function(){return f}),n.d(e,\"getBlockBeforeSelectedBlock\",function(){return r}),n.d(e,\"getAllBlocks\",function(){return o}),n.d(e,\"getSelectedBlocksType\",function(){return u}),n.d(e,\"removeSelectedBlocksStyle\",function(){return c}),n.d(e,\"getSelectionText\",function(){return l}),n.d(e,\"addLineBreakRemovingSelection\",function(){return s}),n.d(e,\"insertNewUnstyledBlock\",function(){return g}),n.d(e,\"clearEditorContent\",function(){return d}),n.d(e,\"setBlockData\",function(){return S}),n.d(e,\"getSelectedBlocksMetadata\",function(){return p}),n.d(e,\"blockRenderMap\",function(){return v})}],o.c=u,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=2);function o(t){if(u[t])return u[t].exports;var e=u[t]={i:t,l:!1,exports:{}};return i[t].call(e.exports,e,e.exports,o),e.l=!0,e.exports}var i,u});","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = updateMutation;\n\nfunction updateMutation(mutation, originalOffset, originalLength, newLength, prefixLength, suffixLength) {\n // three cases we can reasonably adjust - disjoint mutations that\n // happen later on where the offset will need to be changed,\n // mutations that completely contain the new one where we can adjust\n // the length, and mutations that occur partially within the new one.\n var lengthDiff = newLength - originalLength;\n var mutationAfterChange = originalOffset + originalLength <= mutation.offset;\n\n if (mutationAfterChange) {\n return Object.assign({}, mutation, {\n offset: mutation.offset + lengthDiff\n });\n }\n\n var mutationContainsChange = originalOffset >= mutation.offset && originalOffset + originalLength <= mutation.offset + mutation.length;\n\n if (mutationContainsChange) {\n return Object.assign({}, mutation, {\n length: mutation.length + lengthDiff\n });\n }\n\n var mutationWithinPrefixChange = mutation.offset >= originalOffset && mutation.offset + mutation.length <= originalOffset + originalLength && prefixLength > 0;\n\n if (mutationWithinPrefixChange) {\n return Object.assign({}, mutation, {\n offset: mutation.offset + prefixLength\n });\n }\n\n var mutationContainsPrefix = mutation.offset < originalOffset && mutation.offset + mutation.length <= originalOffset + originalLength && mutation.offset + mutation.length > originalOffset && prefixLength > 0;\n\n if (mutationContainsPrefix) {\n return [Object.assign({}, mutation, {\n length: originalOffset - mutation.offset\n }), Object.assign({}, mutation, {\n offset: originalOffset + prefixLength,\n length: mutation.offset - originalOffset + mutation.length\n })];\n }\n\n var mutationContainsSuffix = mutation.offset >= originalOffset && mutation.offset + mutation.length > originalOffset + originalLength && originalOffset + originalLength > mutation.offset && suffixLength > 0;\n\n if (mutationContainsSuffix) {\n return [Object.assign({}, mutation, {\n offset: mutation.offset + prefixLength,\n length: originalOffset + originalLength - mutation.offset\n }), Object.assign({}, mutation, {\n offset: originalOffset + originalLength + prefixLength + suffixLength,\n length: mutation.offset + mutation.length - (originalOffset + originalLength)\n })];\n }\n\n return mutation;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _default = function _default(r1, r2) {\n if (r1.offset === r2.offset) {\n return r2.length - r1.length;\n }\n\n return r1.offset - r2.offset;\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _updateMutation = _interopRequireDefault(require(\"./util/updateMutation\"));\n\nvar _rangeSort = _interopRequireDefault(require(\"./util/rangeSort\"));\n\nvar ENTITY_MAP = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '`': '&#x60;',\n '\\n': '<br/>'\n};\n\nvar _default = function _default(block) {\n var blockText = (0, _toConsumableArray2[\"default\"])(block.text);\n var entities = block.entityRanges.sort(_rangeSort[\"default\"]);\n var styles = block.inlineStyleRanges.sort(_rangeSort[\"default\"]);\n var resultText = '';\n\n var _loop = function _loop(index) {\n var _char = blockText[index];\n\n if (ENTITY_MAP[_char] !== undefined) {\n var encoded = ENTITY_MAP[_char];\n var resultIndex = (0, _toConsumableArray2[\"default\"])(resultText).length;\n resultText += encoded;\n\n var updateForChar = function updateForChar(mutation) {\n return (0, _updateMutation[\"default\"])(mutation, resultIndex, _char.length, encoded.length, 0, 0);\n };\n\n entities = entities.map(updateForChar);\n styles = styles.map(updateForChar);\n } else {\n resultText += _char;\n }\n };\n\n for (var index = 0; index < blockText.length; index++) {\n _loop(index);\n }\n\n return Object.assign({}, block, {\n text: resultText,\n inlineStyleRanges: styles,\n entityRanges: entities\n });\n};\n\nexports[\"default\"] = _default;","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = splitReactElement;\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _server = _interopRequireDefault(require(\"react-dom/server\"));\n\n// see http://w3c.github.io/html/syntax.html#writing-html-documents-elements\nvar VOID_TAGS = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'];\n\nfunction splitReactElement(element) {\n if (VOID_TAGS.indexOf(element.type) !== -1) {\n return _server[\"default\"].renderToStaticMarkup(element);\n }\n\n var tags = _server[\"default\"].renderToStaticMarkup(_react[\"default\"].cloneElement(element, {}, '\\r')).split('\\r');\n\n (0, _invariant[\"default\"])(tags.length > 1, \"convertToHTML: Element of type \".concat(element.type, \" must render children\"));\n (0, _invariant[\"default\"])(tags.length < 3, \"convertToHTML: Element of type \".concat(element.type, \" cannot use carriage return character\"));\n return {\n start: tags[0],\n end: tags[1]\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getElementHTML;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _server = _interopRequireDefault(require(\"react-dom/server\"));\n\nvar _splitReactElement = _interopRequireDefault(require(\"./splitReactElement\"));\n\nfunction hasChildren(element) {\n return _react[\"default\"].isValidElement(element) && _react[\"default\"].Children.count(element.props.children) > 0;\n}\n\nfunction getElementHTML(element) {\n var text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (element === undefined || element === null) {\n return element;\n }\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (_react[\"default\"].isValidElement(element)) {\n if (hasChildren(element)) {\n return _server[\"default\"].renderToStaticMarkup(element);\n }\n\n var tags = (0, _splitReactElement[\"default\"])(element);\n\n if (text !== null && (0, _typeof2[\"default\"])(tags) === 'object') {\n var start = tags.start,\n end = tags.end;\n return start + text + end;\n }\n\n return tags;\n }\n\n (0, _invariant[\"default\"])(Object.prototype.hasOwnProperty.call(element, 'start') && Object.prototype.hasOwnProperty.call(element, 'end'), 'convertToHTML: received conversion data without either an HTML string, ReactElement or an object with start/end tags');\n\n if (text !== null) {\n var _start = element.start,\n _end = element.end;\n return _start + text + _end;\n }\n\n return element;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _splitReactElement = _interopRequireDefault(require(\"./splitReactElement\"));\n\nvar getElementTagLength = function getElementTagLength(element) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'start';\n\n if (_react[\"default\"].isValidElement(element)) {\n var splitElement = (0, _splitReactElement[\"default\"])(element);\n\n if (typeof splitElement === 'string') {\n return 0;\n }\n\n var length = splitElement[type].length;\n\n var child = _react[\"default\"].Children.toArray(element.props.children)[0];\n\n return length + (child && _react[\"default\"].isValidElement(child) ? getElementTagLength(child, type) : 0);\n }\n\n if ((0, _typeof2[\"default\"])(element) === 'object') {\n return element[type] ? element[type].length : 0;\n }\n\n return 0;\n};\n\nvar _default = getElementTagLength;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _updateMutation = _interopRequireDefault(require(\"./util/updateMutation\"));\n\nvar _rangeSort = _interopRequireDefault(require(\"./util/rangeSort\"));\n\nvar _getElementHTML = _interopRequireDefault(require(\"./util/getElementHTML\"));\n\nvar _getElementTagLength = _interopRequireDefault(require(\"./util/getElementTagLength\"));\n\nvar converter = function converter() {\n var entity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var originalText = arguments.length > 1 ? arguments[1] : undefined;\n return originalText;\n};\n\nvar _default = function _default(block, entityMap) {\n var entityConverter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : converter;\n var resultText = (0, _toConsumableArray2[\"default\"])(block.text);\n var getEntityHTML = entityConverter;\n\n if (entityConverter.__isMiddleware) {\n getEntityHTML = entityConverter(converter);\n }\n\n if (Object.prototype.hasOwnProperty.call(block, 'entityRanges') && block.entityRanges.length > 0) {\n var entities = block.entityRanges.sort(_rangeSort[\"default\"]);\n var styles = block.inlineStyleRanges;\n\n var _loop = function _loop(index) {\n var entityRange = entities[index];\n var entity = entityMap[entityRange.key];\n var originalText = resultText.slice(entityRange.offset, entityRange.offset + entityRange.length).join('');\n var entityHTML = getEntityHTML(entity, originalText);\n var converted = (0, _toConsumableArray2[\"default\"])((0, _getElementHTML[\"default\"])(entityHTML, originalText) || originalText);\n var prefixLength = (0, _getElementTagLength[\"default\"])(entityHTML, 'start');\n var suffixLength = (0, _getElementTagLength[\"default\"])(entityHTML, 'end');\n\n var updateLaterMutation = function updateLaterMutation(mutation, mutationIndex) {\n if (mutationIndex > index || Object.prototype.hasOwnProperty.call(mutation, 'style')) {\n return (0, _updateMutation[\"default\"])(mutation, entityRange.offset, entityRange.length, converted.length, prefixLength, suffixLength);\n }\n\n return mutation;\n };\n\n var updateLaterMutations = function updateLaterMutations(mutationList) {\n return mutationList.reduce(function (acc, mutation, mutationIndex) {\n var updatedMutation = updateLaterMutation(mutation, mutationIndex);\n\n if (Array.isArray(updatedMutation)) {\n return acc.concat(updatedMutation);\n }\n\n return acc.concat([updatedMutation]);\n }, []);\n };\n\n entities = updateLaterMutations(entities);\n styles = updateLaterMutations(styles);\n resultText = [].concat((0, _toConsumableArray2[\"default\"])(resultText.slice(0, entityRange.offset)), (0, _toConsumableArray2[\"default\"])(converted), (0, _toConsumableArray2[\"default\"])(resultText.slice(entityRange.offset + entityRange.length)));\n };\n\n for (var index = 0; index < entities.length; index++) {\n _loop(index);\n }\n\n return Object.assign({}, block, {\n text: resultText.join(''),\n inlineStyleRanges: styles,\n entityRanges: entities\n });\n }\n\n return block;\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _default = function _default(object) {\n return function (style) {\n if (typeof object === 'function') {\n return object(style);\n }\n\n return object[style];\n };\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _default = function _default(newFn, rest) {\n return function () {\n var newResult = newFn.apply(void 0, arguments);\n\n if (newResult !== undefined && newResult !== null) {\n return newResult;\n }\n\n return rest.apply(void 0, arguments);\n };\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = defaultInlineHTML;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction defaultInlineHTML(style) {\n switch (style) {\n case 'BOLD':\n return _react[\"default\"].createElement(\"strong\", null);\n\n case 'ITALIC':\n return _react[\"default\"].createElement(\"em\", null);\n\n case 'UNDERLINE':\n return _react[\"default\"].createElement(\"u\", null);\n\n case 'CODE':\n return _react[\"default\"].createElement(\"code\", null);\n\n default:\n return {\n start: '',\n end: ''\n };\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _styleObjectFunction = _interopRequireDefault(require(\"./util/styleObjectFunction\"));\n\nvar _accumulateFunction = _interopRequireDefault(require(\"./util/accumulateFunction\"));\n\nvar _getElementHTML = _interopRequireDefault(require(\"./util/getElementHTML\"));\n\nvar _rangeSort = _interopRequireDefault(require(\"./util/rangeSort\"));\n\nvar _defaultInlineHTML = _interopRequireDefault(require(\"./default/defaultInlineHTML\"));\n\nvar subtractStyles = function subtractStyles(original, toRemove) {\n return original.filter(function (el) {\n return !toRemove.some(function (elToRemove) {\n return elToRemove.style === el.style;\n });\n });\n};\n\nvar popEndingStyles = function popEndingStyles(styleStack, endingStyles) {\n return endingStyles.reduceRight(function (stack, style) {\n var styleToRemove = stack[stack.length - 1];\n (0, _invariant[\"default\"])(styleToRemove.style === style.style, \"Style \".concat(styleToRemove.style, \" to be removed doesn't match expected \").concat(style.style));\n return stack.slice(0, -1);\n }, styleStack);\n};\n\nvar characterStyles = function characterStyles(offset, ranges) {\n return ranges.filter(function (range) {\n return offset >= range.offset && offset < range.offset + range.length;\n });\n};\n\nvar rangeIsSubset = function rangeIsSubset(firstRange, secondRange) {\n // returns true if the second range is a subset of the first\n var secondStartWithinFirst = firstRange.offset <= secondRange.offset;\n var secondEndWithinFirst = firstRange.offset + firstRange.length >= secondRange.offset + secondRange.length;\n return secondStartWithinFirst && secondEndWithinFirst;\n};\n\nvar latestStyleLast = function latestStyleLast(s1, s2) {\n // make sure longer-lasting styles are added first\n var s2endIndex = s2.offset + s2.length;\n var s1endIndex = s1.offset + s1.length;\n return s2endIndex - s1endIndex;\n};\n\nvar getStylesToReset = function getStylesToReset(remainingStyles, newStyles) {\n var i = 0;\n\n while (i < remainingStyles.length) {\n if (newStyles.every(rangeIsSubset.bind(null, remainingStyles[i]))) {\n i++;\n } else {\n return remainingStyles.slice(i);\n }\n }\n\n return [];\n};\n\nvar appendStartMarkup = function appendStartMarkup(inlineHTML, string, styleRange) {\n return string + (0, _getElementHTML[\"default\"])(inlineHTML(styleRange.style)).start;\n};\n\nvar prependEndMarkup = function prependEndMarkup(inlineHTML, string, styleRange) {\n return (0, _getElementHTML[\"default\"])(inlineHTML(styleRange.style)).end + string;\n};\n\nvar defaultCustomInlineHTML = function defaultCustomInlineHTML(next) {\n return function (style) {\n return next(style);\n };\n};\n\ndefaultCustomInlineHTML.__isMiddleware = true;\n\nvar _default = function _default(rawBlock) {\n var customInlineHTML = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultCustomInlineHTML;\n (0, _invariant[\"default\"])(rawBlock !== null && rawBlock !== undefined, 'Expected raw block to be non-null');\n var inlineHTML;\n\n if (customInlineHTML.__isMiddleware === true) {\n inlineHTML = customInlineHTML(_defaultInlineHTML[\"default\"]);\n } else {\n inlineHTML = (0, _accumulateFunction[\"default\"])((0, _styleObjectFunction[\"default\"])(customInlineHTML), (0, _styleObjectFunction[\"default\"])(_defaultInlineHTML[\"default\"]));\n }\n\n var result = '';\n var styleStack = [];\n var sortedRanges = rawBlock.inlineStyleRanges.sort(_rangeSort[\"default\"]);\n var originalTextArray = (0, _toConsumableArray2[\"default\"])(rawBlock.text);\n\n for (var i = 0; i < originalTextArray.length; i++) {\n var styles = characterStyles(i, sortedRanges);\n var endingStyles = subtractStyles(styleStack, styles);\n var newStyles = subtractStyles(styles, styleStack);\n var remainingStyles = subtractStyles(styleStack, endingStyles); // reset styles: look for any already existing styles that will need to\n // end before styles that are being added on this character. to solve this\n // close out those current tags and all nested children,\n // then open new ones nested within the new styles.\n\n var resetStyles = getStylesToReset(remainingStyles, newStyles);\n var openingStyles = resetStyles.concat(newStyles).sort(latestStyleLast);\n var openingStyleTags = openingStyles.reduce(appendStartMarkup.bind(null, inlineHTML), '');\n var endingStyleTags = endingStyles.concat(resetStyles).reduce(prependEndMarkup.bind(null, inlineHTML), '');\n result += endingStyleTags + openingStyleTags + originalTextArray[i];\n styleStack = popEndingStyles(styleStack, resetStyles.concat(endingStyles));\n styleStack = styleStack.concat(openingStyles);\n (0, _invariant[\"default\"])(styleStack.length === styles.length, \"Character \".concat(i, \": \").concat(styleStack.length - styles.length, \" styles left on stack that should no longer be there\"));\n }\n\n result = styleStack.reduceRight(function (res, openStyle) {\n return res + (0, _getElementHTML[\"default\"])(inlineHTML(openStyle.style)).end;\n }, result);\n return result;\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _default = function _default(typeObject) {\n return function (block) {\n if (typeof typeObject === 'function') {\n // handle case where typeObject is already a function\n return typeObject(block);\n }\n\n return typeObject[block.type];\n };\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getBlockTags;\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _server = _interopRequireDefault(require(\"react-dom/server\"));\n\nvar _splitReactElement = _interopRequireDefault(require(\"./splitReactElement\"));\n\nfunction hasChildren(element) {\n return _react[\"default\"].isValidElement(element) && _react[\"default\"].Children.count(element.props.children) > 0;\n}\n\nfunction getBlockTags(blockHTML) {\n (0, _invariant[\"default\"])(blockHTML !== null && blockHTML !== undefined, 'Expected block HTML value to be non-null');\n\n if (typeof blockHTML === 'string') {\n return blockHTML;\n }\n\n if (_react[\"default\"].isValidElement(blockHTML)) {\n if (hasChildren(blockHTML)) {\n return _server[\"default\"].renderToStaticMarkup(blockHTML);\n }\n\n return (0, _splitReactElement[\"default\"])(blockHTML);\n }\n\n if (Object.prototype.hasOwnProperty.call(blockHTML, 'element') && _react[\"default\"].isValidElement(blockHTML.element)) {\n return Object.assign({}, blockHTML, (0, _splitReactElement[\"default\"])(blockHTML.element));\n }\n\n (0, _invariant[\"default\"])(Object.prototype.hasOwnProperty.call(blockHTML, 'start') && Object.prototype.hasOwnProperty.call(blockHTML, 'end'), 'convertToHTML: received block information without either a ReactElement or an object with start/end tags');\n return blockHTML;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getNestedBlockTags;\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _splitReactElement2 = _interopRequireDefault(require(\"./splitReactElement\"));\n\nfunction getNestedBlockTags(blockHTML) {\n (0, _invariant[\"default\"])(blockHTML !== null && blockHTML !== undefined, 'Expected block HTML value to be non-null');\n\n if (_react[\"default\"].isValidElement(blockHTML.nest)) {\n var _splitReactElement = (0, _splitReactElement2[\"default\"])(blockHTML.nest),\n start = _splitReactElement.start,\n end = _splitReactElement.end;\n\n return Object.assign({}, blockHTML, {\n nestStart: start,\n nestEnd: end\n });\n }\n\n (0, _invariant[\"default\"])(Object.prototype.hasOwnProperty.call(blockHTML, 'nestStart') && Object.prototype.hasOwnProperty.call(blockHTML, 'nestEnd'), 'convertToHTML: received block information without either a ReactElement or an object with start/end tags');\n return blockHTML;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _default = {\n unstyled: _react[\"default\"].createElement(\"p\", null),\n paragraph: _react[\"default\"].createElement(\"p\", null),\n 'header-one': _react[\"default\"].createElement(\"h1\", null),\n 'header-two': _react[\"default\"].createElement(\"h2\", null),\n 'header-three': _react[\"default\"].createElement(\"h3\", null),\n 'header-four': _react[\"default\"].createElement(\"h4\", null),\n 'header-five': _react[\"default\"].createElement(\"h5\", null),\n 'header-six': _react[\"default\"].createElement(\"h6\", null),\n blockquote: _react[\"default\"].createElement(\"blockquote\", null),\n 'unordered-list-item': {\n element: _react[\"default\"].createElement(\"li\", null),\n nest: _react[\"default\"].createElement(\"ul\", null)\n },\n 'ordered-list-item': {\n element: _react[\"default\"].createElement(\"li\", null),\n nest: _react[\"default\"].createElement(\"ol\", null)\n },\n media: _react[\"default\"].createElement(\"figure\", null),\n atomic: _react[\"default\"].createElement(\"figure\", null)\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _server = _interopRequireDefault(require(\"react-dom/server\"));\n\nvar _draftJs = require(\"draft-js\");\n\nvar _encodeBlock = _interopRequireDefault(require(\"./encodeBlock\"));\n\nvar _blockEntities = _interopRequireDefault(require(\"./blockEntities\"));\n\nvar _blockInlineStyles = _interopRequireDefault(require(\"./blockInlineStyles\"));\n\nvar _accumulateFunction = _interopRequireDefault(require(\"./util/accumulateFunction\"));\n\nvar _blockTypeObjectFunction = _interopRequireDefault(require(\"./util/blockTypeObjectFunction\"));\n\nvar _getBlockTags = _interopRequireDefault(require(\"./util/getBlockTags\"));\n\nvar _getNestedBlockTags = _interopRequireDefault(require(\"./util/getNestedBlockTags\"));\n\nvar _defaultBlockHTML = _interopRequireDefault(require(\"./default/defaultBlockHTML\"));\n\n// import Immutable from 'immutable'; // eslint-disable-line no-unused-vars\nvar defaultEntityToHTML = function defaultEntityToHTML(entity, originalText) {\n return originalText;\n};\n\nvar convertToHTML = function convertToHTML(_ref) {\n var _ref$styleToHTML = _ref.styleToHTML,\n styleToHTML = _ref$styleToHTML === void 0 ? {} : _ref$styleToHTML,\n _ref$blockToHTML = _ref.blockToHTML,\n blockToHTML = _ref$blockToHTML === void 0 ? {} : _ref$blockToHTML,\n _ref$entityToHTML = _ref.entityToHTML,\n entityToHTML = _ref$entityToHTML === void 0 ? defaultEntityToHTML : _ref$entityToHTML;\n return function (contentState) {\n (0, _invariant[\"default\"])(contentState !== null && contentState !== undefined, 'Expected contentState to be non-null');\n var getBlockHTML;\n\n if (blockToHTML.__isMiddleware === true) {\n getBlockHTML = blockToHTML((0, _blockTypeObjectFunction[\"default\"])(_defaultBlockHTML[\"default\"]));\n } else {\n getBlockHTML = (0, _accumulateFunction[\"default\"])((0, _blockTypeObjectFunction[\"default\"])(blockToHTML), (0, _blockTypeObjectFunction[\"default\"])(_defaultBlockHTML[\"default\"]));\n }\n\n var rawState = (0, _draftJs.convertToRaw)(contentState);\n var listStack = [];\n var result = rawState.blocks.map(function (block) {\n var type = block.type,\n depth = block.depth;\n var closeNestTags = '';\n var openNestTags = '';\n var blockHTMLResult = getBlockHTML(block);\n\n if (!blockHTMLResult) {\n throw new Error(\"convertToHTML: missing HTML definition for block with type \".concat(block.type));\n }\n\n if (!blockHTMLResult.nest) {\n // this block can't be nested, so reset all nesting if necessary\n closeNestTags = listStack.reduceRight(function (string, nestedBlock) {\n return string + (0, _getNestedBlockTags[\"default\"])(getBlockHTML(nestedBlock)).nestEnd;\n }, '');\n listStack = [];\n } else {\n while (depth + 1 !== listStack.length || type !== listStack[depth].type) {\n if (depth + 1 === listStack.length) {\n // depth is right but doesn't match type\n var blockToClose = listStack[depth];\n closeNestTags += (0, _getNestedBlockTags[\"default\"])(getBlockHTML(blockToClose)).nestEnd;\n openNestTags += (0, _getNestedBlockTags[\"default\"])(getBlockHTML(block)).nestStart;\n listStack[depth] = block;\n } else if (depth + 1 < listStack.length) {\n var _blockToClose = listStack[listStack.length - 1];\n closeNestTags += (0, _getNestedBlockTags[\"default\"])(getBlockHTML(_blockToClose)).nestEnd;\n listStack = listStack.slice(0, -1);\n } else {\n openNestTags += (0, _getNestedBlockTags[\"default\"])(getBlockHTML(block)).nestStart;\n listStack.push(block);\n }\n }\n }\n\n var innerHTML = (0, _blockInlineStyles[\"default\"])((0, _blockEntities[\"default\"])((0, _encodeBlock[\"default\"])(block), rawState.entityMap, entityToHTML), styleToHTML);\n var blockHTML = (0, _getBlockTags[\"default\"])(getBlockHTML(block));\n var html;\n\n if (typeof blockHTML === 'string') {\n html = blockHTML;\n } else {\n html = blockHTML.start + innerHTML + blockHTML.end;\n }\n\n if (innerHTML.length === 0 && Object.prototype.hasOwnProperty.call(blockHTML, 'empty')) {\n if (_react[\"default\"].isValidElement(blockHTML.empty)) {\n html = _server[\"default\"].renderToStaticMarkup(blockHTML.empty);\n } else {\n html = blockHTML.empty;\n }\n }\n\n return closeNestTags + openNestTags + html;\n }).join('');\n result = listStack.reduce(function (res, nestBlock) {\n return res + (0, _getNestedBlockTags[\"default\"])(getBlockHTML(nestBlock)).nestEnd;\n }, result);\n return result;\n };\n};\n\nvar _default = function _default() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && Object.prototype.hasOwnProperty.call(args[0], '_map') && args[0].getBlockMap != null) {\n // skip higher-order function and use defaults\n return convertToHTML({}).apply(void 0, args);\n }\n\n return convertToHTML.apply(void 0, args);\n};\n\nexports[\"default\"] = _default;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.Immutable = factory();\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step > 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n findEntry: function(predicate, context) {\n var found;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findLastEntry: function(predicate, context) {\n return this.toSeq().reverse().findEntry(predicate, context);\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n // Temporary warning about using length\n (function () {\n try {\n Object.defineProperty(IterablePrototype, 'length', {\n get: function () {\n if (!Iterable.noLengthWarning) {\n var stack;\n try {\n throw new Error();\n } catch (error) {\n stack = error.stack;\n }\n if (stack.indexOf('_wrapObject') === -1) {\n console && console.warn && console.warn(\n 'iterable.length has been deprecated, '+\n 'use iterable.size or iterable.count(). '+\n 'This warning will become a silent error in a future version. ' +\n stack\n );\n return this.size;\n }\n }\n }\n });\n } catch (e) {}\n })();\n\n\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLastKey: function(predicate, context) {\n return this.toSeq().reverse().findKey(predicate, context);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n lastKeyOf: function(searchValue) {\n return this.findLastKey(function(value ) {return is(value, searchValue)});\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.toKeyedSeq().keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.toKeyedSeq().reverse().keyOf(searchValue);\n return key === undefined ? -1 : key;\n\n // var index =\n // return this.toSeq().reverse().indexOf(searchValue);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var key = this.toKeyedSeq().findLastKey(predicate, context);\n return key === undefined ? -1 : key;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : value;\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = parseHTML;\n\nvar fallback = function fallback(html) {\n var doc = document.implementation.createHTMLDocument('');\n doc.documentElement.innerHTML = html;\n return doc;\n};\n\nfunction parseHTML(html) {\n var doc;\n\n if (typeof DOMParser !== 'undefined') {\n var parser = new DOMParser();\n doc = parser.parseFromString(html, 'text/html');\n\n if (doc === null || doc.body === null) {\n doc = fallback(html);\n }\n } else {\n doc = fallback(html);\n }\n\n return doc.body;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _immutable = require(\"immutable\");\n\nvar _draftJs = require(\"draft-js\");\n\nvar _parseHTML = _interopRequireDefault(require(\"./util/parseHTML\"));\n\nvar _rangeSort = _interopRequireDefault(require(\"./util/rangeSort\"));\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the /src directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\nvar NBSP = '&nbsp;';\nvar SPACE = ' '; // Arbitrary max indent\n\nvar MAX_DEPTH = 4; // used for replacing characters in HTML\n\n/* eslint-disable no-control-regex */\n\nvar REGEX_CR = new RegExp('\\r', 'g');\nvar REGEX_LF = new RegExp('\\n', 'g');\nvar REGEX_NBSP = new RegExp(NBSP, 'g');\nvar REGEX_BLOCK_DELIMITER = new RegExp('\\r', 'g');\n/* eslint-enable no-control-regex */\n// Block tag flow is different because LIs do not have\n// a deterministic style ;_;\n\nvar blockTags = ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'blockquote', 'pre'];\nvar inlineTags = {\n b: 'BOLD',\n code: 'CODE',\n del: 'STRIKETHROUGH',\n em: 'ITALIC',\n i: 'ITALIC',\n s: 'STRIKETHROUGH',\n strike: 'STRIKETHROUGH',\n strong: 'BOLD',\n u: 'UNDERLINE'\n};\n\nvar handleMiddleware = function handleMiddleware(maybeMiddleware, base) {\n if (maybeMiddleware && maybeMiddleware.__isMiddleware === true) {\n return maybeMiddleware(base);\n }\n\n return maybeMiddleware;\n};\n\nvar defaultHTMLToBlock = function defaultHTMLToBlock(nodeName, node, lastList) {\n return undefined;\n};\n\nvar defaultHTMLToStyle = function defaultHTMLToStyle(nodeName, node, currentStyle) {\n return currentStyle;\n};\n\nvar defaultHTMLToEntity = function defaultHTMLToEntity(nodeName, node) {\n return undefined;\n};\n\nvar defaultTextToEntity = function defaultTextToEntity(text) {\n return [];\n};\n\nvar nullthrows = function nullthrows(x) {\n if (x != null) {\n return x;\n }\n\n throw new Error('Got unexpected null or undefined');\n};\n\nvar sanitizeDraftText = function sanitizeDraftText(input) {\n return input.replace(REGEX_BLOCK_DELIMITER, '');\n};\n\nfunction getEmptyChunk() {\n return {\n text: '',\n inlines: [],\n entities: [],\n blocks: []\n };\n}\n\nfunction getWhitespaceChunk(inEntity) {\n var entities = new Array(1);\n\n if (inEntity) {\n entities[0] = inEntity;\n }\n\n return {\n text: SPACE,\n inlines: [(0, _immutable.OrderedSet)()],\n entities: entities,\n blocks: []\n };\n}\n\nfunction getSoftNewlineChunk(block, depth) {\n var flat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : (0, _immutable.Map)();\n\n if (flat === true) {\n return {\n text: '\\r',\n inlines: [(0, _immutable.OrderedSet)()],\n entities: new Array(1),\n blocks: [{\n type: block,\n data: data,\n depth: Math.max(0, Math.min(MAX_DEPTH, depth))\n }],\n isNewline: true\n };\n }\n\n return {\n text: '\\n',\n inlines: [(0, _immutable.OrderedSet)()],\n entities: new Array(1),\n blocks: []\n };\n}\n\nfunction getBlockDividerChunk(block, depth) {\n var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (0, _immutable.Map)();\n return {\n text: '\\r',\n inlines: [(0, _immutable.OrderedSet)()],\n entities: new Array(1),\n blocks: [{\n type: block,\n data: data,\n depth: Math.max(0, Math.min(MAX_DEPTH, depth))\n }]\n };\n}\n\nfunction getBlockTypeForTag(tag, lastList) {\n switch (tag) {\n case 'h1':\n return 'header-one';\n\n case 'h2':\n return 'header-two';\n\n case 'h3':\n return 'header-three';\n\n case 'h4':\n return 'header-four';\n\n case 'h5':\n return 'header-five';\n\n case 'h6':\n return 'header-six';\n\n case 'li':\n if (lastList === 'ol') {\n return 'ordered-list-item';\n }\n\n return 'unordered-list-item';\n\n case 'blockquote':\n return 'blockquote';\n\n case 'pre':\n return 'code-block';\n\n case 'div':\n case 'p':\n return 'unstyled';\n\n default:\n return null;\n }\n}\n\nfunction baseCheckBlockType(nodeName, node, lastList) {\n return getBlockTypeForTag(nodeName, lastList);\n}\n\nfunction processInlineTag(tag, node, currentStyle) {\n var styleToCheck = inlineTags[tag];\n\n if (styleToCheck) {\n currentStyle = currentStyle.add(styleToCheck).toOrderedSet();\n } else if (node instanceof HTMLElement) {\n var htmlElement = node;\n currentStyle = currentStyle.withMutations(function (style) {\n if (htmlElement.style.fontWeight === 'bold') {\n style.add('BOLD');\n }\n\n if (htmlElement.style.fontStyle === 'italic') {\n style.add('ITALIC');\n }\n\n if (htmlElement.style.textDecoration === 'underline') {\n style.add('UNDERLINE');\n }\n\n if (htmlElement.style.textDecoration === 'line-through') {\n style.add('STRIKETHROUGH');\n }\n }).toOrderedSet();\n }\n\n return currentStyle;\n}\n\nfunction baseProcessInlineTag(tag, node) {\n var inlineStyles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (0, _immutable.OrderedSet)();\n return processInlineTag(tag, node, inlineStyles);\n}\n\nfunction joinChunks(A, B) {\n var flat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // Sometimes two blocks will touch in the DOM and we need to strip the\n // extra delimiter to preserve niceness.\n var firstInB = B.text.slice(0, 1);\n var lastInA = A.text.slice(-1);\n var adjacentDividers = lastInA === '\\r' && firstInB === '\\r';\n var isJoiningBlocks = A.text !== '\\r' && B.text !== '\\r'; // when joining two full blocks like this we want to pop one divider\n\n var addingNewlineToEmptyBlock = A.text === '\\r' && !A.isNewline && B.isNewline; // when joining a newline to an empty block we want to remove the newline\n\n if (adjacentDividers && (isJoiningBlocks || addingNewlineToEmptyBlock)) {\n A.text = A.text.slice(0, -1);\n A.inlines.pop();\n A.entities.pop();\n A.blocks.pop();\n } // Kill whitespace after blocks if flat mode is on\n\n\n if (A.text.slice(-1) === '\\r' && flat === true) {\n if (B.text === SPACE || B.text === '\\n') {\n return A;\n } else if (firstInB === SPACE || firstInB === '\\n') {\n B.text = B.text.slice(1);\n B.inlines.shift();\n B.entities.shift();\n }\n }\n\n var isNewline = A.text.length === 0 && B.isNewline;\n return {\n text: A.text + B.text,\n inlines: A.inlines.concat(B.inlines),\n entities: A.entities.concat(B.entities),\n blocks: A.blocks.concat(B.blocks),\n isNewline: isNewline\n };\n}\n/*\n * Check to see if we have anything like <p> <blockquote> <h1>... to create\n * block tags from. If we do, we can use those and ignore <div> tags. If we\n * don't, we can treat <div> tags as meaningful (unstyled) blocks.\n */\n\n\nfunction containsSemanticBlockMarkup(html) {\n return blockTags.some(function (tag) {\n return html.indexOf(\"<\".concat(tag)) !== -1;\n });\n}\n\nfunction genFragment(node, inlineStyle, lastList, inBlock, fragmentBlockTags, depth, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options, inEntity) {\n var nodeName = node.nodeName.toLowerCase();\n var newBlock = false;\n var nextBlockType = 'unstyled'; // Base Case\n\n if (nodeName === '#text') {\n var text = node.textContent;\n\n if (text.trim() === '' && inBlock === null) {\n return getEmptyChunk();\n }\n\n if (text.trim() === '' && inBlock !== 'code-block') {\n return getWhitespaceChunk(inEntity);\n }\n\n if (inBlock !== 'code-block') {\n // Can't use empty string because MSWord\n text = text.replace(REGEX_LF, SPACE);\n }\n\n var entities = Array(text.length).fill(inEntity);\n var offsetChange = 0;\n var textEntities = checkEntityText(text, createEntity, getEntity, mergeEntityData, replaceEntityData).sort(_rangeSort[\"default\"]);\n textEntities.forEach(function (_ref) {\n var entity = _ref.entity,\n offset = _ref.offset,\n length = _ref.length,\n result = _ref.result;\n var adjustedOffset = offset + offsetChange;\n\n if (result === null || result === undefined) {\n result = text.substr(adjustedOffset, length);\n }\n\n var textArray = text.split('');\n textArray.splice.bind(textArray, adjustedOffset, length).apply(textArray, result.split(''));\n text = textArray.join('');\n entities.splice.bind(entities, adjustedOffset, length).apply(entities, Array(result.length).fill(entity));\n offsetChange += result.length - length;\n });\n return {\n text: text,\n inlines: Array(text.length).fill(inlineStyle),\n entities: entities,\n blocks: []\n };\n } // BR tags\n\n\n if (nodeName === 'br') {\n var _blockType = inBlock;\n\n if (_blockType === null) {\n // BR tag is at top level, treat it as an unstyled block\n return getSoftNewlineChunk('unstyled', depth, true);\n }\n\n return getSoftNewlineChunk(_blockType || 'unstyled', depth, options.flat);\n }\n\n var chunk = getEmptyChunk();\n var newChunk = null; // Inline tags\n\n inlineStyle = processInlineTag(nodeName, node, inlineStyle);\n inlineStyle = processCustomInlineStyles(nodeName, node, inlineStyle); // Handle lists\n\n if (nodeName === 'ul' || nodeName === 'ol') {\n if (lastList) {\n depth += 1;\n }\n\n lastList = nodeName;\n inBlock = null;\n } // Block Tags\n\n\n var blockInfo = checkBlockType(nodeName, node, lastList, inBlock);\n var blockType;\n var blockDataMap;\n\n if (blockInfo === false) {\n return getEmptyChunk();\n }\n\n blockInfo = blockInfo || {};\n\n if (typeof blockInfo === 'string') {\n blockType = blockInfo;\n blockDataMap = (0, _immutable.Map)();\n } else {\n blockType = typeof blockInfo === 'string' ? blockInfo : blockInfo.type;\n blockDataMap = blockInfo.data ? (0, _immutable.Map)(blockInfo.data) : (0, _immutable.Map)();\n }\n\n if (!inBlock && (fragmentBlockTags.indexOf(nodeName) !== -1 || blockType)) {\n chunk = getBlockDividerChunk(blockType || getBlockTypeForTag(nodeName, lastList), depth, blockDataMap);\n inBlock = blockType || getBlockTypeForTag(nodeName, lastList);\n newBlock = true;\n } else if (lastList && (inBlock === 'ordered-list-item' || inBlock === 'unordered-list-item') && nodeName === 'li') {\n var listItemBlockType = getBlockTypeForTag(nodeName, lastList);\n chunk = getBlockDividerChunk(listItemBlockType, depth);\n inBlock = listItemBlockType;\n newBlock = true;\n nextBlockType = lastList === 'ul' ? 'unordered-list-item' : 'ordered-list-item';\n } else if (inBlock && inBlock !== 'atomic' && blockType === 'atomic') {\n inBlock = blockType;\n newBlock = true;\n chunk = getSoftNewlineChunk(blockType, depth, true, // atomic blocks within non-atomic blocks must always be split out\n blockDataMap);\n } // Recurse through children\n\n\n var child = node.firstChild; // hack to allow conversion of atomic blocks from HTML (e.g. <figure><img\n // src=\"...\" /></figure>). since metadata must be stored on an entity text\n // must exist for the entity to apply to. the way chunks are joined strips\n // whitespace at the end so it cannot be a space character.\n\n if (child == null && inEntity && (blockType === 'atomic' || inBlock === 'atomic')) {\n child = document.createTextNode('a');\n }\n\n if (child != null) {\n nodeName = child.nodeName.toLowerCase();\n }\n\n var entityId = null;\n\n while (child) {\n entityId = checkEntityNode(nodeName, child, createEntity, getEntity, mergeEntityData, replaceEntityData);\n newChunk = genFragment(child, inlineStyle, lastList, inBlock, fragmentBlockTags, depth, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options, entityId || inEntity);\n chunk = joinChunks(chunk, newChunk, options.flat);\n var sibling = child.nextSibling; // Put in a newline to break up blocks inside blocks\n\n if (sibling && fragmentBlockTags.indexOf(nodeName) >= 0 && inBlock) {\n var newBlockInfo = checkBlockType(nodeName, child, lastList, inBlock);\n var newBlockType = void 0;\n var newBlockData = void 0;\n\n if (newBlockInfo !== false) {\n newBlockInfo = newBlockInfo || {};\n\n if (typeof newBlockInfo === 'string') {\n newBlockType = newBlockInfo;\n newBlockData = (0, _immutable.Map)();\n } else {\n newBlockType = newBlockInfo.type || getBlockTypeForTag(nodeName, lastList);\n newBlockData = newBlockInfo.data ? (0, _immutable.Map)(newBlockInfo.data) : (0, _immutable.Map)();\n }\n\n chunk = joinChunks(chunk, getSoftNewlineChunk(newBlockType, depth, options.flat, newBlockData), options.flat);\n }\n }\n\n if (sibling) {\n nodeName = sibling.nodeName.toLowerCase();\n }\n\n child = sibling;\n }\n\n if (newBlock) {\n chunk = joinChunks(chunk, getBlockDividerChunk(nextBlockType, depth, (0, _immutable.Map)()), options.flat);\n }\n\n return chunk;\n}\n\nfunction getChunkForHTML(html, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options, DOMBuilder) {\n html = html.trim().replace(REGEX_CR, '').replace(REGEX_NBSP, SPACE);\n var safeBody = DOMBuilder(html);\n\n if (!safeBody) {\n return null;\n } // Sometimes we aren't dealing with content that contains nice semantic\n // tags. In this case, use divs to separate everything out into paragraphs\n // and hope for the best.\n\n\n var workingBlocks = containsSemanticBlockMarkup(html) ? blockTags.concat(['div']) : ['div']; // Start with -1 block depth to offset the fact that we are passing in a fake\n // UL block to sta rt with.\n\n var chunk = genFragment(safeBody, (0, _immutable.OrderedSet)(), 'ul', null, workingBlocks, -1, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options); // join with previous block to prevent weirdness on paste\n\n if (chunk.text.indexOf('\\r') === 0) {\n chunk = {\n text: chunk.text.slice(1),\n inlines: chunk.inlines.slice(1),\n entities: chunk.entities.slice(1),\n blocks: chunk.blocks\n };\n } // Kill block delimiter at the end\n\n\n if (chunk.text.slice(-1) === '\\r') {\n chunk.text = chunk.text.slice(0, -1);\n chunk.inlines = chunk.inlines.slice(0, -1);\n chunk.entities = chunk.entities.slice(0, -1);\n chunk.blocks.pop();\n } // If we saw no block tags, put an unstyled one in\n\n\n if (chunk.blocks.length === 0) {\n chunk.blocks.push({\n type: 'unstyled',\n data: (0, _immutable.Map)(),\n depth: 0\n });\n } // Sometimes we start with text that isn't in a block, which is then\n // followed by blocks. Need to fix up the blocks to add in\n // an unstyled block for this content\n\n\n if (chunk.text.split('\\r').length === chunk.blocks.length + 1) {\n chunk.blocks.unshift({\n type: 'unstyled',\n data: (0, _immutable.Map)(),\n depth: 0\n });\n }\n\n return chunk;\n}\n\nfunction convertFromHTMLtoContentBlocks(html, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options, DOMBuilder, generateKey) {\n // Be ABSOLUTELY SURE that the dom builder you pass hare won't execute\n // arbitrary code in whatever environment you're running this in. For an\n // example of how we try to do this in-browser, see getSafeBodyFromHTML.\n var chunk = getChunkForHTML(html, processCustomInlineStyles, checkEntityNode, checkEntityText, checkBlockType, createEntity, getEntity, mergeEntityData, replaceEntityData, options, DOMBuilder, generateKey);\n\n if (chunk == null) {\n return [];\n }\n\n var start = 0;\n return chunk.text.split('\\r').map(function (textBlock, blockIndex) {\n // Make absolutely certain that our text is acceptable.\n textBlock = sanitizeDraftText(textBlock);\n var end = start + textBlock.length;\n var inlines = nullthrows(chunk).inlines.slice(start, end);\n var entities = nullthrows(chunk).entities.slice(start, end);\n var characterList = (0, _immutable.List)(inlines.map(function (style, entityIndex) {\n var data = {\n style: style,\n entity: null\n };\n\n if (entities[entityIndex]) {\n data.entity = entities[entityIndex];\n }\n\n return _draftJs.CharacterMetadata.create(data);\n }));\n start = end + 1;\n return new _draftJs.ContentBlock({\n key: generateKey(),\n type: nullthrows(chunk).blocks[blockIndex].type,\n data: nullthrows(chunk).blocks[blockIndex].data,\n depth: nullthrows(chunk).blocks[blockIndex].depth,\n text: textBlock,\n characterList: characterList\n });\n });\n}\n\nvar convertFromHTML = function convertFromHTML(_ref2) {\n var _ref2$htmlToStyle = _ref2.htmlToStyle,\n htmlToStyle = _ref2$htmlToStyle === void 0 ? defaultHTMLToStyle : _ref2$htmlToStyle,\n _ref2$htmlToEntity = _ref2.htmlToEntity,\n htmlToEntity = _ref2$htmlToEntity === void 0 ? defaultHTMLToEntity : _ref2$htmlToEntity,\n _ref2$textToEntity = _ref2.textToEntity,\n textToEntity = _ref2$textToEntity === void 0 ? defaultTextToEntity : _ref2$textToEntity,\n _ref2$htmlToBlock = _ref2.htmlToBlock,\n htmlToBlock = _ref2$htmlToBlock === void 0 ? defaultHTMLToBlock : _ref2$htmlToBlock;\n return function (html) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n flat: false\n };\n var DOMBuilder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _parseHTML[\"default\"];\n var generateKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _draftJs.genKey;\n\n var contentState = _draftJs.ContentState.createFromText('');\n\n var createEntityWithContentState = function createEntityWithContentState() {\n if (contentState.createEntity) {\n var _contentState;\n\n contentState = (_contentState = contentState).createEntity.apply(_contentState, arguments);\n return contentState.getLastCreatedEntityKey();\n }\n\n return _draftJs.Entity.create.apply(_draftJs.Entity, arguments);\n };\n\n var getEntityWithContentState = function getEntityWithContentState() {\n if (contentState.getEntity) {\n var _contentState2;\n\n return (_contentState2 = contentState).getEntity.apply(_contentState2, arguments);\n }\n\n return _draftJs.Entity.get.apply(_draftJs.Entity, arguments);\n };\n\n var mergeEntityDataWithContentState = function mergeEntityDataWithContentState() {\n if (contentState.mergeEntityData) {\n var _contentState3;\n\n contentState = (_contentState3 = contentState).mergeEntityData.apply(_contentState3, arguments);\n return;\n }\n\n _draftJs.Entity.mergeData.apply(_draftJs.Entity, arguments);\n };\n\n var replaceEntityDataWithContentState = function replaceEntityDataWithContentState() {\n if (contentState.replaceEntityData) {\n var _contentState4;\n\n contentState = (_contentState4 = contentState).replaceEntityData.apply(_contentState4, arguments);\n return;\n }\n\n _draftJs.Entity.replaceData.apply(_draftJs.Entity, arguments);\n };\n\n var contentBlocks = convertFromHTMLtoContentBlocks(html, handleMiddleware(htmlToStyle, baseProcessInlineTag), handleMiddleware(htmlToEntity, defaultHTMLToEntity), handleMiddleware(textToEntity, defaultTextToEntity), handleMiddleware(htmlToBlock, baseCheckBlockType), createEntityWithContentState, getEntityWithContentState, mergeEntityDataWithContentState, replaceEntityDataWithContentState, options, DOMBuilder, generateKey);\n\n var blockMap = _draftJs.BlockMapBuilder.createFromArray(contentBlocks);\n\n var firstBlockKey = contentBlocks[0].getKey();\n return contentState.merge({\n blockMap: blockMap,\n selectionBefore: _draftJs.SelectionState.createEmpty(firstBlockKey),\n selectionAfter: _draftJs.SelectionState.createEmpty(firstBlockKey)\n });\n };\n};\n\nvar _default = function _default() {\n if (arguments.length >= 1 && typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n return convertFromHTML({}).apply(void 0, arguments);\n }\n\n return convertFromHTML.apply(void 0, arguments);\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"convertToHTML\", {\n enumerable: true,\n get: function get() {\n return _convertToHTML[\"default\"];\n }\n});\nObject.defineProperty(exports, \"convertFromHTML\", {\n enumerable: true,\n get: function get() {\n return _convertFromHTML[\"default\"];\n }\n});\nObject.defineProperty(exports, \"parseHTML\", {\n enumerable: true,\n get: function get() {\n return _parseHTML[\"default\"];\n }\n});\n\nvar _convertToHTML = _interopRequireDefault(require(\"./convertToHTML\"));\n\nvar _convertFromHTML = _interopRequireDefault(require(\"./convertFromHTML\"));\n\nvar _parseHTML = _interopRequireDefault(require(\"./util/parseHTML\"));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFromHTMLConfig = exports.getToHTMLConfig = exports.blocks = exports.getHexColor = exports.defaultFontFamilies = exports.namedColors = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar namedColors = exports.namedColors = {\n \"aliceblue\": \"#f0f8ff\",\n \"antiquewhite\": \"#faebd7\",\n \"aqua\": \"#00ffff\",\n \"aquamarine\": \"#7fffd4\",\n \"azure\": \"#f0ffff\",\n \"beige\": \"#f5f5dc\",\n \"bisque\": \"#ffe4c4\",\n \"black\": \"#000000\",\n \"blanchedalmond\": \"#ffebcd\",\n \"blue\": \"#0000ff\",\n \"blueviolet\": \"#8a2be2\",\n \"brown\": \"#a52a2a\",\n \"burlywood\": \"#deb887\",\n \"cadetblue\": \"#5f9ea0\",\n \"chartreuse\": \"#7fff00\",\n \"chocolate\": \"#d2691e\",\n \"coral\": \"#ff7f50\",\n \"cornflowerblue\": \"#6495ed\",\n \"cornsilk\": \"#fff8dc\",\n \"crimson\": \"#dc143c\",\n \"cyan\": \"#00ffff\",\n \"darkblue\": \"#00008b\",\n \"darkcyan\": \"#008b8b\",\n \"darkgoldenrod\": \"#b8860b\",\n \"darkgray\": \"#a9a9a9\",\n \"darkgreen\": \"#006400\",\n \"darkkhaki\": \"#bdb76b\",\n \"darkmagenta\": \"#8b008b\",\n \"darkolivegreen\": \"#556b2f\",\n \"darkorange\": \"#ff8c00\",\n \"darkorchid\": \"#9932cc\",\n \"darkred\": \"#8b0000\",\n \"darksalmon\": \"#e9967a\",\n \"darkseagreen\": \"#8fbc8f\",\n \"darkslateblue\": \"#483d8b\",\n \"darkslategray\": \"#2f4f4f\",\n \"darkturquoise\": \"#00ced1\",\n \"darkviolet\": \"#9400d3\",\n \"deeppink\": \"#ff1493\",\n \"deepskyblue\": \"#00bfff\",\n \"dimgray\": \"#696969\",\n \"dodgerblue\": \"#1e90ff\",\n \"firebrick\": \"#b22222\",\n \"floralwhite\": \"#fffaf0\",\n \"forestgreen\": \"#228b22\",\n \"fuchsia\": \"#ff00ff\",\n \"gainsboro\": \"#dcdcdc\",\n \"ghostwhite\": \"#f8f8ff\",\n \"gold\": \"#ffd700\",\n \"goldenrod\": \"#daa520\",\n \"gray\": \"#808080\",\n \"green\": \"#008000\",\n \"greenyellow\": \"#adff2f\",\n \"honeydew\": \"#f0fff0\",\n \"hotpink\": \"#ff69b4\",\n \"indianred \": \"#cd5c5c\",\n \"indigo\": \"#4b0082\",\n \"ivory\": \"#fffff0\",\n \"khaki\": \"#f0e68c\",\n \"lavender\": \"#e6e6fa\",\n \"lavenderblush\": \"#fff0f5\",\n \"lawngreen\": \"#7cfc00\",\n \"lemonchiffon\": \"#fffacd\",\n \"lightblue\": \"#add8e6\",\n \"lightcoral\": \"#f08080\",\n \"lightcyan\": \"#e0ffff\",\n \"lightgoldenrodyellow\": \"#fafad2\",\n \"lightgrey\": \"#d3d3d3\",\n \"lightgreen\": \"#90ee90\",\n \"lightpink\": \"#ffb6c1\",\n \"lightsalmon\": \"#ffa07a\",\n \"lightseagreen\": \"#20b2aa\",\n \"lightskyblue\": \"#87cefa\",\n \"lightslategray\": \"#778899\",\n \"lightsteelblue\": \"#b0c4de\",\n \"lightyellow\": \"#ffffe0\",\n \"lime\": \"#00ff00\",\n \"limegreen\": \"#32cd32\",\n \"linen\": \"#faf0e6\",\n \"magenta\": \"#ff00ff\",\n \"maroon\": \"#800000\",\n \"mediumaquamarine\": \"#66cdaa\",\n \"mediumblue\": \"#0000cd\",\n \"mediumorchid\": \"#ba55d3\",\n \"mediumpurple\": \"#9370d8\",\n \"mediumseagreen\": \"#3cb371\",\n \"mediumslateblue\": \"#7b68ee\",\n \"mediumspringgreen\": \"#00fa9a\",\n \"mediumturquoise\": \"#48d1cc\",\n \"mediumvioletred\": \"#c71585\",\n \"midnightblue\": \"#191970\",\n \"mintcream\": \"#f5fffa\",\n \"mistyrose\": \"#ffe4e1\",\n \"moccasin\": \"#ffe4b5\",\n \"navajowhite\": \"#ffdead\",\n \"navy\": \"#000080\",\n \"oldlace\": \"#fdf5e6\",\n \"olive\": \"#808000\",\n \"olivedrab\": \"#6b8e23\",\n \"orange\": \"#ffa500\",\n \"orangered\": \"#ff4500\",\n \"orchid\": \"#da70d6\",\n \"palegoldenrod\": \"#eee8aa\",\n \"palegreen\": \"#98fb98\",\n \"paleturquoise\": \"#afeeee\",\n \"palevioletred\": \"#d87093\",\n \"papayawhip\": \"#ffefd5\",\n \"peachpuff\": \"#ffdab9\",\n \"peru\": \"#cd853f\",\n \"pink\": \"#ffc0cb\",\n \"plum\": \"#dda0dd\",\n \"powderblue\": \"#b0e0e6\",\n \"purple\": \"#800080\",\n \"rebeccapurple\": \"#663399\",\n \"red\": \"#ff0000\",\n \"rosybrown\": \"#bc8f8f\",\n \"royalblue\": \"#4169e1\",\n \"saddlebrown\": \"#8b4513\",\n \"salmon\": \"#fa8072\",\n \"sandybrown\": \"#f4a460\",\n \"seagreen\": \"#2e8b57\",\n \"seashell\": \"#fff5ee\",\n \"sienna\": \"#a0522d\",\n \"silver\": \"#c0c0c0\",\n \"skyblue\": \"#87ceeb\",\n \"slateblue\": \"#6a5acd\",\n \"slategray\": \"#708090\",\n \"snow\": \"#fffafa\",\n \"springgreen\": \"#00ff7f\",\n \"steelblue\": \"#4682b4\",\n \"tan\": \"#d2b48c\",\n \"teal\": \"#008080\",\n \"thistle\": \"#d8bfd8\",\n \"tomato\": \"#ff6347\",\n \"turquoise\": \"#40e0d0\",\n \"violet\": \"#ee82ee\",\n \"wheat\": \"#f5deb3\",\n \"white\": \"#ffffff\",\n \"whitesmoke\": \"#f5f5f5\",\n \"yellow\": \"#ffff00\",\n \"yellowgreen\": \"#9acd32\"\n};\n\nvar getStyleValue = function getStyleValue(style) {\n return style.split('-')[1];\n};\nvar defaultUnitExportFn = function defaultUnitExportFn(unit) {\n return unit + 'px';\n};\nvar defaultUnitImportFn = function defaultUnitImportFn(unit) {\n return unit.replace('px', '');\n};\n\nvar ignoredNodeAttributes = ['style'];\nvar ignoredEntityNodeAttributes = ['style', 'href', 'target', 'alt', 'title', 'id', 'controls', 'autoplay', 'loop', 'poster'];\n\nvar spreadNodeAttributes = function spreadNodeAttributes(attributesObject) {\n return Object.keys(attributesObject).reduce(function (attributeString, attributeName) {\n return attributeString + \" \" + attributeName + \"=\\\"\" + attributesObject[attributeName] + \"\\\"\";\n }, '').replace(/^\\s$/, '');\n};\n\nvar defaultFontFamilies = exports.defaultFontFamilies = [{\n name: 'Araial',\n family: 'Arial, Helvetica, sans-serif'\n}, {\n name: 'Georgia',\n family: 'Georgia, serif'\n}, {\n name: 'Impact',\n family: 'Impact, serif'\n}, {\n name: 'Monospace',\n family: '\"Courier New\", Courier, monospace'\n}, {\n name: 'Tahoma',\n family: \"tahoma, arial, 'Hiragino Sans GB', 宋体, sans-serif\"\n}];\n\nvar getHexColor = exports.getHexColor = function getHexColor(color) {\n\n color = color.replace('color:', '').replace(';', '').replace(' ', '');\n\n if (/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(color)) {\n return color;\n } else if (namedColors[color]) {\n return namedColors[color];\n } else if (color.indexOf('rgb') === 0) {\n\n var rgbArray = color.split(',');\n var convertedColor = rgbArray.length < 3 ? null : '#' + [rgbArray[0], rgbArray[1], rgbArray[2]].map(function (x) {\n var hex = parseInt(x.replace(/\\D/g, ''), 10).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n\n return (/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(convertedColor) ? convertedColor : null\n );\n } else {\n return null;\n }\n};\n\nvar blocks = exports.blocks = {\n 'header-one': 'h1',\n 'header-two': 'h2',\n 'header-three': 'h3',\n 'header-four': 'h4',\n 'header-five': 'h5',\n 'header-six': 'h6',\n 'unstyled': 'p',\n 'blockquote': 'blockquote'\n};\n\nvar blockTypes = Object.keys(blocks);\nvar blockNames = blockTypes.map(function (key) {\n return blocks[key];\n});\n\nvar convertAtomicBlock = function convertAtomicBlock(block, contentState, blockNodeAttributes) {\n\n if (!block || !block.key) {\n return _react2.default.createElement(\"p\", null);\n }\n\n var contentBlock = contentState.getBlockForKey(block.key);\n\n var className = blockNodeAttributes.class,\n nodeAttrAsProps = _objectWithoutProperties(blockNodeAttributes, [\"class\"]);\n\n nodeAttrAsProps.className = className;\n\n if (!contentBlock) {\n return _react2.default.createElement(\"p\", null);\n }\n\n var entityKey = contentBlock.getEntityAt(0);\n\n if (!entityKey) {\n return _react2.default.createElement(\"p\", null);\n }\n\n var entity = contentState.getEntity(entityKey);\n var mediaType = entity.getType().toLowerCase();\n\n var _block$data = block.data,\n float = _block$data.float,\n alignment = _block$data.alignment;\n\n var _entity$getData = entity.getData(),\n url = _entity$getData.url,\n link = _entity$getData.link,\n link_target = _entity$getData.link_target,\n width = _entity$getData.width,\n height = _entity$getData.height,\n meta = _entity$getData.meta;\n\n if (mediaType === 'image') {\n\n var imageWrapStyle = {};\n var styledClassName = '';\n\n if (float) {\n imageWrapStyle.float = float;\n styledClassName += ' float-' + float;\n } else if (alignment) {\n imageWrapStyle.textAlign = alignment;\n styledClassName += ' align-' + alignment;\n }\n\n if (link) {\n return _react2.default.createElement(\n \"div\",\n { className: \"media-wrap image-wrap\" + styledClassName, style: imageWrapStyle },\n _react2.default.createElement(\n \"a\",\n { style: { display: 'inline-block' }, href: link, target: link_target },\n _react2.default.createElement(\"img\", _extends({}, nodeAttrAsProps, meta, { src: url, width: width, height: height, style: { width: width, height: height } }))\n )\n );\n } else {\n return _react2.default.createElement(\n \"div\",\n { className: \"media-wrap image-wrap\" + styledClassName, style: imageWrapStyle },\n _react2.default.createElement(\"img\", _extends({}, nodeAttrAsProps, meta, { src: url, width: width, height: height, style: { width: width, height: height } }))\n );\n }\n } else if (mediaType === 'audio') {\n return _react2.default.createElement(\n \"div\",\n { className: \"media-wrap audio-wrap\" },\n _react2.default.createElement(\"audio\", _extends({ controls: true }, nodeAttrAsProps, meta, { src: url }))\n );\n } else if (mediaType === 'video') {\n return _react2.default.createElement(\n \"div\",\n { className: \"media-wrap video-wrap\" },\n _react2.default.createElement(\"video\", _extends({ controls: true }, nodeAttrAsProps, meta, { src: url, width: width, height: height }))\n );\n } else if (mediaType === 'embed') {\n return _react2.default.createElement(\n \"div\",\n { className: \"media-wrap embed-wrap\" },\n _react2.default.createElement(\"div\", { dangerouslySetInnerHTML: { __html: url } })\n );\n } else if (mediaType === 'hr') {\n return _react2.default.createElement(\"hr\", null);\n } else {\n return _react2.default.createElement(\"p\", null);\n }\n};\n\nvar entityToHTML = function entityToHTML(options) {\n return function (entity, originalText) {\n var entityExportFn = options.entityExportFn;\n\n var entityType = entity.type.toLowerCase();\n\n if (entityExportFn) {\n var customOutput = entityExportFn(entity, originalText);\n if (customOutput) {\n return customOutput;\n }\n }\n\n if (entityType === 'link') {\n var _ref = entity.data.nodeAttributes || {},\n className = _ref.class,\n nodeAttrAsProps = _objectWithoutProperties(_ref, [\"class\"]);\n\n nodeAttrAsProps.className = className;\n return _react2.default.createElement(\"a\", _extends({ href: entity.data.href, target: entity.data.target }, nodeAttrAsProps));\n }\n };\n};\n\nvar styleToHTML = function styleToHTML(options) {\n return function (style) {\n\n var unitExportFn = options.unitExportFn || defaultUnitExportFn;\n\n if (options.styleExportFn) {\n var customOutput = options.styleExportFn(style, options);\n if (customOutput) {\n return customOutput;\n }\n }\n\n style = style.toLowerCase();\n\n if (style === 'strikethrough') {\n return _react2.default.createElement(\"span\", { style: { textDecoration: 'line-through' } });\n } else if (style === 'superscript') {\n return _react2.default.createElement(\"sup\", null);\n } else if (style === 'subscript') {\n return _react2.default.createElement(\"sub\", null);\n } else if (style.indexOf('color-') === 0) {\n return _react2.default.createElement(\"span\", { style: { color: '#' + getStyleValue(style) } });\n } else if (style.indexOf('bgcolor-') === 0) {\n return _react2.default.createElement(\"span\", { style: { backgroundColor: '#' + getStyleValue(style) } });\n } else if (style.indexOf('fontsize-') === 0) {\n return _react2.default.createElement(\"span\", { style: { fontSize: unitExportFn(getStyleValue(style), 'font-size', 'html') } });\n } else if (style.indexOf('lineheight-') === 0) {\n return _react2.default.createElement(\"span\", { style: { lineHeight: unitExportFn(getStyleValue(style), 'line-height', 'html') } });\n } else if (style.indexOf('letterspacing-') === 0) {\n return _react2.default.createElement(\"span\", { style: { letterSpacing: unitExportFn(getStyleValue(style), 'letter-spacing', 'html') } });\n } else if (style.indexOf('fontfamily-') === 0) {\n var fontFamily = options.fontFamilies.find(function (item) {\n return item.name.toLowerCase() === getStyleValue(style);\n });\n if (!fontFamily) return;\n return _react2.default.createElement(\"span\", { style: { fontFamily: fontFamily.family } });\n }\n };\n};\n\nvar blockToHTML = function blockToHTML(options) {\n return function (block) {\n var blockExportFn = options.blockExportFn,\n contentState = options.contentState;\n\n\n if (blockExportFn) {\n var customOutput = blockExportFn(contentState, block);\n if (customOutput) {\n return customOutput;\n }\n }\n\n var blockStyle = '';\n\n var blockType = block.type.toLowerCase();\n var _block$data2 = block.data,\n textAlign = _block$data2.textAlign,\n textIndent = _block$data2.textIndent,\n _block$data2$nodeAttr = _block$data2.nodeAttributes,\n nodeAttributes = _block$data2$nodeAttr === undefined ? {} : _block$data2$nodeAttr;\n\n var attributeString = spreadNodeAttributes(nodeAttributes);\n\n if (textAlign || textIndent) {\n\n blockStyle = ' style=\"';\n\n if (textAlign) {\n blockStyle += \"text-align:\" + textAlign + \";\";\n }\n\n if (textIndent && !isNaN(textIndent) && textIndent > 0) {\n blockStyle += \"text-indent:\" + textIndent * 2 + \"em;\";\n }\n\n blockStyle += '\"';\n }\n\n if (blockType === 'atomic') {\n return convertAtomicBlock(block, contentState, nodeAttributes);\n } else if (blockType === 'code-block') {\n\n var previousBlock = contentState.getBlockBefore(block.key);\n var nextBlock = contentState.getBlockAfter(block.key);\n var previousBlockType = previousBlock && previousBlock.getType();\n var nextBlockType = nextBlock && nextBlock.getType();\n\n var start = '';\n var end = '';\n\n if (previousBlockType !== 'code-block') {\n start = \"<pre\" + attributeString + \"><code>\";\n } else {\n start = '';\n }\n\n if (nextBlockType !== 'code-block') {\n end = '</code></pre>';\n } else {\n end = '<br/>';\n }\n\n return { start: start, end: end };\n } else if (blocks[blockType]) {\n return {\n start: \"<\" + blocks[blockType] + blockStyle + attributeString + \">\",\n end: \"</\" + blocks[blockType] + \">\"\n };\n } else if (blockType === 'unordered-list-item') {\n return {\n start: \"<li\" + blockStyle + attributeString + \">\",\n end: '</li>',\n nest: _react2.default.createElement(\"ul\", null)\n };\n } else if (blockType === 'ordered-list-item') {\n return {\n start: \"<li\" + blockStyle + attributeString + \">\",\n end: '</li>',\n nest: _react2.default.createElement(\"ol\", null)\n };\n }\n };\n};\n\nvar htmlToStyle = function htmlToStyle(options, source) {\n return function (nodeName, node, currentStyle) {\n\n if (!node || !node.style) {\n return currentStyle;\n }\n\n var unitImportFn = options.unitImportFn || defaultUnitImportFn;\n var newStyle = currentStyle;\n\n [].forEach.call(node.style, function (style) {\n\n if (nodeName === 'span' && style === 'color') {\n var color = getHexColor(node.style.color);\n newStyle = color ? newStyle.add('COLOR-' + color.replace('#', '').toUpperCase()) : newStyle;\n } else if (nodeName === 'span' && style === 'background-color') {\n var _color = getHexColor(node.style.backgroundColor);\n newStyle = _color ? newStyle.add('BGCOLOR-' + _color.replace('#', '').toUpperCase()) : newStyle;\n } else if (nodeName === 'span' && style === 'font-size') {\n newStyle = newStyle.add('FONTSIZE-' + unitImportFn(node.style.fontSize, 'font-size', source));\n } else if (nodeName === 'span' && style === 'line-height' && !isNaN(parseFloat(node.style.lineHeight, 10))) {\n newStyle = newStyle.add('LINEHEIGHT-' + unitImportFn(node.style.lineHeight, 'line-height', source));\n } else if (nodeName === 'span' && style === 'letter-spacing' && !isNaN(parseFloat(node.style.letterSpacing, 10))) {\n newStyle = newStyle.add('LETTERSPACING-' + unitImportFn(node.style.letterSpacing, 'letter-spacing', source));\n } else if (nodeName === 'span' && style === 'text-decoration') {\n if (node.style.textDecoration === 'line-through') {\n newStyle = newStyle.add('STRIKETHROUGH');\n } else if (node.style.textDecoration === 'underline') {\n newStyle = newStyle.add('UNDERLINE');\n }\n } else if (nodeName === 'span' && style === 'font-family') {\n var fontFamily = options.fontFamilies.find(function (item) {\n return item.family.toLowerCase() === node.style.fontFamily.toLowerCase();\n });\n if (!fontFamily) return;\n newStyle = newStyle.add('FONTFAMILY-' + fontFamily.name.toUpperCase());\n }\n });\n\n if (nodeName === 'sup') {\n newStyle = newStyle.add('SUPERSCRIPT');\n } else if (nodeName === 'sub') {\n newStyle = newStyle.add('SUBSCRIPT');\n }\n\n options.styleImportFn && (newStyle = options.styleImportFn(nodeName, node, newStyle, source) || newStyle);\n return newStyle;\n };\n};\n\nvar htmlToEntity = function htmlToEntity(options, source) {\n return function (nodeName, node, createEntity) {\n\n if (options && options.entityImportFn) {\n var customInput = options.entityImportFn(nodeName, node, createEntity, source);\n if (customInput) {\n return customInput;\n }\n }\n\n nodeName = nodeName.toLowerCase();\n\n var alt = node.alt,\n title = node.title,\n id = node.id,\n controls = node.controls,\n autoplay = node.autoplay,\n loop = node.loop,\n poster = node.poster;\n\n var meta = {};\n var nodeAttributes = {};\n\n id && (meta.id = id);\n alt && (meta.alt = alt);\n title && (meta.title = title);\n controls && (meta.controls = controls);\n autoplay && (meta.autoPlay = autoplay);\n loop && (meta.loop = loop);\n poster && (meta.poster = poster);\n\n node.attributes && Object.keys(node.attributes).forEach(function (key) {\n var attr = node.attributes[key];\n ignoredEntityNodeAttributes.indexOf(attr.name) === -1 && (nodeAttributes[attr.name] = attr.value);\n });\n\n if (nodeName === 'a' && !node.querySelectorAll('img').length) {\n var href = node.getAttribute('href');\n var _target = node.getAttribute('target');\n return createEntity('LINK', 'MUTABLE', { href: href, target: _target, nodeAttributes: nodeAttributes });\n } else if (nodeName === 'audio') {\n return createEntity('AUDIO', 'IMMUTABLE', { url: node.getAttribute('src'), meta: meta, nodeAttributes: nodeAttributes });\n } else if (nodeName === 'video') {\n return createEntity('VIDEO', 'IMMUTABLE', { url: node.getAttribute('src'), meta: meta, nodeAttributes: nodeAttributes });\n } else if (nodeName === 'img') {\n\n var parentNode = node.parentNode;\n var entityData = { meta: meta };\n var _node$style = node.style,\n width = _node$style.width,\n height = _node$style.height;\n\n\n entityData.url = node.getAttribute('src');\n width && (entityData.width = width);\n height && (entityData.height = height);\n\n if (parentNode.nodeName.toLowerCase() === 'a') {\n entityData.link = parentNode.getAttribute('href');\n entityData.link_target = parentNode.getAttribute('target');\n }\n\n return createEntity('IMAGE', 'IMMUTABLE', entityData);\n } else if (nodeName === 'hr') {\n return createEntity('HR', 'IMMUTABLE', {});\n } else if (node.parentNode && node.parentNode.classList.contains('embed-wrap')) {\n\n var embedContent = node.innerHTML || node.outerHTML;\n\n if (embedContent) {\n return createEntity('EMBED', 'IMMUTABLE', {\n url: embedContent\n });\n }\n }\n };\n};\n\nvar htmlToBlock = function htmlToBlock(options, source) {\n return function (nodeName, node) {\n\n if (options && options.blockImportFn) {\n var customInput = options.blockImportFn(nodeName, node, source);\n if (customInput) {\n return customInput;\n }\n }\n\n var nodeAttributes = {};\n var nodeStyle = node.style || {};\n\n node.attributes && Object.keys(node.attributes).forEach(function (key) {\n var attr = node.attributes[key];\n ignoredNodeAttributes.indexOf(attr.name) === -1 && (nodeAttributes[attr.name] = attr.value);\n });\n\n if (node.classList && node.classList.contains('media-wrap')) {\n\n return {\n type: 'atomic',\n data: {\n nodeAttributes: nodeAttributes,\n float: nodeStyle.float,\n alignment: nodeStyle.textAlign\n }\n };\n } else if (nodeName === 'img') {\n\n return {\n type: 'atomic',\n data: {\n nodeAttributes: nodeAttributes,\n float: nodeStyle.float,\n alignment: nodeStyle.textAlign\n }\n };\n } else if (nodeName === 'hr') {\n\n return {\n type: 'atomic',\n data: { nodeAttributes: nodeAttributes }\n };\n } else if (nodeName === 'pre') {\n\n node.innerHTML = node.innerHTML.replace(/<code(.*?)>/g, '').replace(/<\\/code>/g, '');\n\n return {\n type: 'code-block',\n data: { nodeAttributes: nodeAttributes }\n };\n } else if (blockNames.indexOf(nodeName) !== -1) {\n\n var blockData = { nodeAttributes: nodeAttributes };\n\n if (nodeStyle.textAlign) {\n blockData.textAlign = nodeStyle.textAlign;\n }\n\n if (nodeStyle.textIndent) {\n blockData.textIndent = /^\\d+em$/.test(nodeStyle.textIndent) ? Math.ceil(parseInt(nodeStyle.textIndent, 10) / 2) : 1;\n }\n\n return {\n type: blockTypes[blockNames.indexOf(nodeName)],\n data: blockData\n };\n }\n };\n};\n\nvar getToHTMLConfig = exports.getToHTMLConfig = function getToHTMLConfig(options) {\n\n return {\n styleToHTML: styleToHTML(options),\n entityToHTML: entityToHTML(options),\n blockToHTML: blockToHTML(options)\n };\n};\n\nvar getFromHTMLConfig = exports.getFromHTMLConfig = function getFromHTMLConfig(options) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknow';\n\n\n return {\n htmlToStyle: htmlToStyle(options, source),\n htmlToEntity: htmlToEntity(options, source),\n htmlToBlock: htmlToBlock(options, source)\n };\n};\n//# sourceMappingURL=configs.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertRawToEditorState = exports.convertEditorStateToRaw = exports.convertHTMLToEditorState = exports.convertEditorStateToHTML = exports.convertHTMLToRaw = exports.convertRawToHTML = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _draftConvert = require('draft-convert');\n\nvar _configs = require('./configs');\n\nvar _draftJs = require('draft-js');\n\nvar defaultConvertOptions = {\n fontFamilies: _configs.defaultFontFamilies\n};\n\nvar convertRawToHTML = exports.convertRawToHTML = function convertRawToHTML(rawContent, options) {\n\n options = _extends({}, defaultConvertOptions, options);\n\n try {\n var contentState = (0, _draftJs.convertFromRaw)(rawContent);\n options.contentState = contentState;\n return (0, _draftConvert.convertToHTML)((0, _configs.getToHTMLConfig)(options))(contentState);\n } catch (error) {\n console.warn(error);\n return '';\n }\n};\n\nvar convertHTMLToRaw = exports.convertHTMLToRaw = function convertHTMLToRaw(HTMLString, options, source) {\n\n options = _extends({}, defaultConvertOptions, options);\n\n try {\n var contentState = (0, _draftConvert.convertFromHTML)((0, _configs.getFromHTMLConfig)(options, source))(HTMLString);\n return (0, _draftJs.convertToRaw)(contentState);\n } catch (error) {\n console.warn(error);\n return {};\n }\n};\n\nvar convertEditorStateToHTML = exports.convertEditorStateToHTML = function convertEditorStateToHTML(editorState, options) {\n\n options = _extends({}, defaultConvertOptions, options);\n\n try {\n var contentState = editorState.getCurrentContent();\n options.contentState = contentState;\n return (0, _draftConvert.convertToHTML)((0, _configs.getToHTMLConfig)(options))(contentState);\n } catch (error) {\n console.warn(error);\n return '';\n }\n};\n\nvar convertHTMLToEditorState = exports.convertHTMLToEditorState = function convertHTMLToEditorState(HTMLString, editorDecorators, options, source) {\n\n options = _extends({}, defaultConvertOptions, options);\n\n try {\n return _draftJs.EditorState.createWithContent((0, _draftConvert.convertFromHTML)((0, _configs.getFromHTMLConfig)(options, source))(HTMLString), editorDecorators);\n } catch (error) {\n console.warn(error);\n return _draftJs.EditorState.createEmpty(editorDecorators);\n }\n};\n\nvar convertEditorStateToRaw = exports.convertEditorStateToRaw = function convertEditorStateToRaw(editorState) {\n return (0, _draftJs.convertToRaw)(editorState.getCurrentContent());\n};\n\nvar convertRawToEditorState = exports.convertRawToEditorState = function convertRawToEditorState(rawContent, editorDecorators) {\n\n try {\n return _draftJs.EditorState.createWithContent((0, _draftJs.convertFromRaw)(rawContent), editorDecorators);\n } catch (error) {\n console.warn(error);\n return _draftJs.EditorState.createEmpty(editorDecorators);\n }\n};\n//# sourceMappingURL=index.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.redo = exports.undo = exports.handleKeyCommand = exports.clear = exports.setMediaPosition = exports.removeMedia = exports.setMediaData = exports.insertMedias = exports.insertHorizontalLine = exports.insertAtomicBlock = exports.insertHTML = exports.insertText = exports.toggleSelectionLetterSpacing = exports.toggleSelectionFontFamily = exports.toggleSelectionLineHeight = exports.toggleSelectionFontSize = exports.toggleSelectionBackgroundColor = exports.toggleSelectionColor = exports.decreaseSelectionIndent = exports.increaseSelectionIndent = exports.toggleSelectionIndent = exports.toggleSelectionAlignment = exports.removeSelectionInlineStyles = exports.toggleSelectionInlineStyle = exports.selectionHasInlineStyle = exports.getSelectionInlineStyle = exports.toggleSelectionLink = exports.toggleSelectionEntity = exports.getSelectionEntityData = exports.getSelectionEntityType = exports.toggleSelectionBlockType = exports.getSelectionText = exports.getSelectionBlockType = exports.getSelectionBlockData = exports.setSelectionBlockData = exports.getSelectedBlocks = exports.updateEachCharacterOfSelection = exports.getSelectionBlock = exports.removeBlock = exports.selectNextBlock = exports.selectBlock = exports.selectionContainsStrictBlock = exports.selectionContainsBlockType = exports.isSelectionCollapsed = exports.createEditorState = exports.createEmptyEditorState = exports.isEditorState = exports.registerStrictBlockType = undefined;\n\nvar _draftJs = require('draft-js');\n\nvar _draftjsUtils = require('draftjs-utils');\n\nvar _braftConvert = require('braft-convert');\n\nvar _immutable = require('immutable');\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar strictBlockTypes = ['atomic'];\n\nvar registerStrictBlockType = exports.registerStrictBlockType = function registerStrictBlockType(blockType) {\n strictBlockTypes.indexOf(blockType) === -1 && strictBlockTypes.push(blockType);\n};\n\nvar isEditorState = exports.isEditorState = function isEditorState(editorState) {\n return editorState instanceof _draftJs.EditorState;\n};\n\nvar createEmptyEditorState = exports.createEmptyEditorState = function createEmptyEditorState(editorDecorators) {\n return _draftJs.EditorState.createEmpty(editorDecorators);\n};\n\nvar createEditorState = exports.createEditorState = function createEditorState(contentState, editorDecorators) {\n return _draftJs.EditorState.createWithContent(contentState, editorDecorators);\n};\n\nvar isSelectionCollapsed = exports.isSelectionCollapsed = function isSelectionCollapsed(editorState) {\n return editorState.getSelection().isCollapsed();\n};\n\nvar selectionContainsBlockType = exports.selectionContainsBlockType = function selectionContainsBlockType(editorState, blockType) {\n return getSelectedBlocks(editorState).find(function (block) {\n return block.getType() === blockType;\n });\n};\n\nvar selectionContainsStrictBlock = exports.selectionContainsStrictBlock = function selectionContainsStrictBlock(editorState) {\n return getSelectedBlocks(editorState).find(function (block) {\n return ~strictBlockTypes.indexOf(block.getType());\n });\n};\n\nvar selectBlock = exports.selectBlock = function selectBlock(editorState, block) {\n\n var blockKey = block.getKey();\n\n return _draftJs.EditorState.forceSelection(editorState, new _draftJs.SelectionState({\n anchorKey: blockKey,\n anchorOffset: 0,\n focusKey: blockKey,\n focusOffset: block.getLength()\n }));\n};\n\nvar selectNextBlock = exports.selectNextBlock = function selectNextBlock(editorState, block) {\n var nextBlock = editorState.getCurrentContent().getBlockAfter(block.getKey());\n return nextBlock ? selectBlock(editorState, nextBlock) : editorState;\n};\n\nvar removeBlock = exports.removeBlock = function removeBlock(editorState, block) {\n var lastSelection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n\n var nextContentState = void 0,\n nextEditorState = void 0;\n var blockKey = block.getKey();\n\n nextContentState = _draftJs.Modifier.removeRange(editorState.getCurrentContent(), new _draftJs.SelectionState({\n anchorKey: blockKey,\n anchorOffset: 0,\n focusKey: blockKey,\n focusOffset: block.getLength()\n }), 'backward');\n\n nextContentState = _draftJs.Modifier.setBlockType(nextContentState, nextContentState.getSelectionAfter(), 'unstyled');\n nextEditorState = _draftJs.EditorState.push(editorState, nextContentState, 'remove-range');\n return _draftJs.EditorState.forceSelection(nextEditorState, lastSelection || nextContentState.getSelectionAfter());\n};\n\nvar getSelectionBlock = exports.getSelectionBlock = function getSelectionBlock(editorState) {\n return editorState.getCurrentContent().getBlockForKey(editorState.getSelection().getAnchorKey());\n};\n\nvar updateEachCharacterOfSelection = exports.updateEachCharacterOfSelection = function updateEachCharacterOfSelection(editorState, callback) {\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n var contentBlocks = contentState.getBlockMap();\n var selectedBlocks = getSelectedBlocks(editorState);\n\n if (selectedBlocks.length === 0) {\n return editorState;\n }\n\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n\n var nextContentBlocks = contentBlocks.map(function (block) {\n\n if (selectedBlocks.indexOf(block) === -1) {\n return block;\n }\n\n var blockKey = block.getKey();\n var charactersList = block.getCharacterList();\n var nextCharactersList = null;\n\n if (blockKey === startKey && blockKey === endKey) {\n nextCharactersList = charactersList.map(function (character, index) {\n if (index >= startOffset && index < endOffset) {\n return callback(character);\n }\n return character;\n });\n } else if (blockKey === startKey) {\n nextCharactersList = charactersList.map(function (character, index) {\n if (index >= startOffset) {\n return callback(character);\n }\n return character;\n });\n } else if (blockKey === endKey) {\n nextCharactersList = charactersList.map(function (character, index) {\n if (index < endOffset) {\n return callback(character);\n }\n return character;\n });\n } else {\n nextCharactersList = charactersList.map(function (character) {\n return callback(character);\n });\n }\n\n return block.merge({\n 'characterList': nextCharactersList\n });\n });\n\n return _draftJs.EditorState.push(editorState, contentState.merge({\n blockMap: nextContentBlocks,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n }), 'update-selection-character-list');\n};\n\nvar getSelectedBlocks = exports.getSelectedBlocks = function getSelectedBlocks(editorState) {\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n\n var startKey = selectionState.getStartKey();\n var endKey = selectionState.getEndKey();\n var isSameBlock = startKey === endKey;\n var startingBlock = contentState.getBlockForKey(startKey);\n var selectedBlocks = [startingBlock];\n\n if (!isSameBlock) {\n var blockKey = startKey;\n\n while (blockKey !== endKey) {\n var nextBlock = contentState.getBlockAfter(blockKey);\n selectedBlocks.push(nextBlock);\n blockKey = nextBlock.getKey();\n }\n }\n\n return selectedBlocks;\n};\n\nvar setSelectionBlockData = exports.setSelectionBlockData = function setSelectionBlockData(editorState, blockData, override) {\n\n var newBlockData = override ? blockData : Object.assign({}, getSelectionBlockData(editorState).toJS(), blockData);\n\n Object.keys(newBlockData).forEach(function (key) {\n if (newBlockData.hasOwnProperty(key) && newBlockData[key] === undefined) {\n delete newBlockData[key];\n }\n });\n\n return (0, _draftjsUtils.setBlockData)(editorState, newBlockData);\n};\n\nvar getSelectionBlockData = exports.getSelectionBlockData = function getSelectionBlockData(editorState, name) {\n var blockData = getSelectionBlock(editorState).getData();\n return name ? blockData.get(name) : blockData;\n};\n\nvar getSelectionBlockType = exports.getSelectionBlockType = function getSelectionBlockType(editorState) {\n return getSelectionBlock(editorState).getType();\n};\n\nvar getSelectionText = exports.getSelectionText = function getSelectionText(editorState) {\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n\n if (selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return '';\n }\n\n var anchorKey = selectionState.getAnchorKey();\n var currentContentBlock = contentState.getBlockForKey(anchorKey);\n var start = selectionState.getStartOffset();\n var end = selectionState.getEndOffset();\n\n return currentContentBlock.getText().slice(start, end);\n};\n\nvar toggleSelectionBlockType = exports.toggleSelectionBlockType = function toggleSelectionBlockType(editorState, blockType) {\n\n if (selectionContainsStrictBlock(editorState)) {\n return editorState;\n }\n\n return _draftJs.RichUtils.toggleBlockType(editorState, blockType);\n};\n\nvar getSelectionEntityType = exports.getSelectionEntityType = function getSelectionEntityType(editorState) {\n\n var entityKey = (0, _draftjsUtils.getSelectionEntity)(editorState);\n\n if (entityKey) {\n var entity = editorState.getCurrentContent().getEntity(entityKey);\n return entity ? entity.get('type') : null;\n }\n\n return null;\n};\n\nvar getSelectionEntityData = exports.getSelectionEntityData = function getSelectionEntityData(editorState, type) {\n\n var entityKey = (0, _draftjsUtils.getSelectionEntity)(editorState);\n\n if (entityKey) {\n var entity = editorState.getCurrentContent().getEntity(entityKey);\n if (entity && entity.get('type') === type) {\n return entity.getData();\n } else {\n return {};\n }\n } else {\n return {};\n }\n};\n\nvar toggleSelectionEntity = exports.toggleSelectionEntity = function toggleSelectionEntity(editorState, entity) {\n\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n\n if (selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return editorState;\n }\n\n if (!entity || !entity.type || getSelectionEntityType(editorState) === entity.type) {\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.applyEntity(contentState, selectionState, null), 'apply-entity');\n }\n\n try {\n\n var nextContentState = contentState.createEntity(entity.type, entity.mutability, entity.data);\n var entityKey = nextContentState.getLastCreatedEntityKey();\n\n var nextEditorState = _draftJs.EditorState.set(editorState, {\n currentContent: nextContentState\n });\n\n return _draftJs.EditorState.push(nextEditorState, _draftJs.Modifier.applyEntity(nextContentState, selectionState, entityKey), 'apply-entity');\n } catch (error) {\n console.warn(error);\n return editorState;\n }\n};\n\nvar toggleSelectionLink = exports.toggleSelectionLink = function toggleSelectionLink(editorState, href, target) {\n\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n\n var entityData = { href: href, target: target };\n\n if (selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return editorState;\n }\n\n if (href === false) {\n return _draftJs.RichUtils.toggleLink(editorState, selectionState, null);\n }\n\n if (href === null) {\n delete entityData.href;\n }\n\n try {\n\n var nextContentState = contentState.createEntity('LINK', 'MUTABLE', entityData);\n var entityKey = nextContentState.getLastCreatedEntityKey();\n\n var nextEditorState = _draftJs.EditorState.set(editorState, {\n currentContent: nextContentState\n });\n\n nextEditorState = _draftJs.RichUtils.toggleLink(nextEditorState, selectionState, entityKey);\n nextEditorState = _draftJs.EditorState.forceSelection(nextEditorState, selectionState.merge({\n anchorOffset: selectionState.getEndOffset(),\n focusOffset: selectionState.getEndOffset()\n }));\n\n nextEditorState = _draftJs.EditorState.push(nextEditorState, _draftJs.Modifier.insertText(nextEditorState.getCurrentContent(), nextEditorState.getSelection(), ''), 'insert-text');\n\n return nextEditorState;\n } catch (error) {\n console.warn(error);\n return editorState;\n }\n};\n\nvar getSelectionInlineStyle = exports.getSelectionInlineStyle = function getSelectionInlineStyle(editorState) {\n return editorState.getCurrentInlineStyle();\n};\n\nvar selectionHasInlineStyle = exports.selectionHasInlineStyle = function selectionHasInlineStyle(editorState, style) {\n return getSelectionInlineStyle(editorState).has(style.toUpperCase());\n};\n\nvar toggleSelectionInlineStyle = exports.toggleSelectionInlineStyle = function toggleSelectionInlineStyle(editorState, style) {\n var prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n\n var nextEditorState = editorState;\n style = prefix + style.toUpperCase();\n\n if (prefix) {\n\n nextEditorState = updateEachCharacterOfSelection(nextEditorState, function (characterMetadata) {\n\n return characterMetadata.toJS().style.reduce(function (characterMetadata, characterStyle) {\n if (characterStyle.indexOf(prefix) === 0 && style !== characterStyle) {\n return _draftJs.CharacterMetadata.removeStyle(characterMetadata, characterStyle);\n } else {\n return characterMetadata;\n }\n }, characterMetadata);\n });\n }\n\n return _draftJs.RichUtils.toggleInlineStyle(nextEditorState, style);\n};\n\nvar removeSelectionInlineStyles = exports.removeSelectionInlineStyles = function removeSelectionInlineStyles(editorState) {\n\n return updateEachCharacterOfSelection(editorState, function (characterMetadata) {\n return characterMetadata.merge({\n style: _immutable2.default.OrderedSet([])\n });\n });\n};\n\nvar toggleSelectionAlignment = exports.toggleSelectionAlignment = function toggleSelectionAlignment(editorState, alignment) {\n return setSelectionBlockData(editorState, {\n textAlign: getSelectionBlockData(editorState, 'textAlign') !== alignment ? alignment : undefined\n });\n};\n\nvar toggleSelectionIndent = exports.toggleSelectionIndent = function toggleSelectionIndent(editorState, textIndent) {\n var maxIndent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 6;\n\n return textIndent < 0 || textIndent > maxIndent || isNaN(textIndent) ? editorState : setSelectionBlockData(editorState, {\n textIndent: textIndent || undefined\n });\n};\n\nvar increaseSelectionIndent = exports.increaseSelectionIndent = function increaseSelectionIndent(editorState) {\n var maxIndent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n\n var currentIndent = getSelectionBlockData(editorState, 'textIndent') || 0;\n return toggleSelectionIndent(editorState, currentIndent + 1, maxIndent);\n};\n\nvar decreaseSelectionIndent = exports.decreaseSelectionIndent = function decreaseSelectionIndent(editorState) {\n var currentIndent = getSelectionBlockData(editorState, 'textIndent') || 0;\n return toggleSelectionIndent(editorState, currentIndent - 1);\n};\n\nvar toggleSelectionColor = exports.toggleSelectionColor = function toggleSelectionColor(editorState, color) {\n return toggleSelectionInlineStyle(editorState, color.replace('#', ''), 'COLOR-');\n};\n\nvar toggleSelectionBackgroundColor = exports.toggleSelectionBackgroundColor = function toggleSelectionBackgroundColor(editorState, color) {\n return toggleSelectionInlineStyle(editorState, color.replace('#', ''), 'BGCOLOR-');\n};\n\nvar toggleSelectionFontSize = exports.toggleSelectionFontSize = function toggleSelectionFontSize(editorState, fontSize) {\n return toggleSelectionInlineStyle(editorState, fontSize, 'FONTSIZE-');\n};\n\nvar toggleSelectionLineHeight = exports.toggleSelectionLineHeight = function toggleSelectionLineHeight(editorState, lineHeight) {\n return toggleSelectionInlineStyle(editorState, lineHeight, 'LINEHEIGHT-');\n};\n\nvar toggleSelectionFontFamily = exports.toggleSelectionFontFamily = function toggleSelectionFontFamily(editorState, fontFamily) {\n return toggleSelectionInlineStyle(editorState, fontFamily, 'FONTFAMILY-');\n};\n\nvar toggleSelectionLetterSpacing = exports.toggleSelectionLetterSpacing = function toggleSelectionLetterSpacing(editorState, letterSpacing) {\n return toggleSelectionInlineStyle(editorState, letterSpacing, 'LETTERSPACING-');\n};\n\nvar insertText = exports.insertText = function insertText(editorState, text, inlineStyle, entity) {\n\n var selectionState = editorState.getSelection();\n var currentSelectedBlockType = getSelectionBlockType(editorState);\n\n if (currentSelectedBlockType === 'atomic') {\n return editorState;\n }\n\n var entityKey = void 0;\n var contentState = editorState.getCurrentContent();\n\n if (entity && entity.type) {\n contentState = contentState.createEntity(entity.type, entity.mutability || 'MUTABLE', entity.data || entityData);\n entityKey = contentState.getLastCreatedEntityKey();\n }\n\n if (!selectionState.isCollapsed()) {\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.replaceText(contentState, selectionState, text, inlineStyle, entityKey), 'replace-text');\n } else {\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.insertText(contentState, selectionState, text, inlineStyle, entityKey), 'insert-text');\n }\n};\n\nvar insertHTML = exports.insertHTML = function insertHTML(editorState, htmlString, source) {\n\n if (!htmlString) {\n return editorState;\n }\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n var options = editorState.convertOptions || {};\n\n try {\n var _convertFromRaw = (0, _draftJs.convertFromRaw)((0, _braftConvert.convertHTMLToRaw)(htmlString, options, source)),\n blockMap = _convertFromRaw.blockMap;\n\n return _draftJs.EditorState.push(editorState, _draftJs.Modifier.replaceWithFragment(contentState, selectionState, blockMap), 'insert-fragment');\n } catch (error) {\n console.warn(error);\n return editorState;\n }\n};\n\nvar insertAtomicBlock = exports.insertAtomicBlock = function insertAtomicBlock(editorState, type) {\n var immutable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n\n if (selectionContainsStrictBlock(editorState)) {\n return insertAtomicBlock(selectNextBlock(editorState, getSelectionBlock(editorState)), type, immutable, data);\n }\n\n var selectionState = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n\n if (!selectionState.isCollapsed() || getSelectionBlockType(editorState) === 'atomic') {\n return editorState;\n }\n\n var contentStateWithEntity = contentState.createEntity(type, immutable ? 'IMMUTABLE' : 'MUTABLE', data);\n var entityKey = contentStateWithEntity.getLastCreatedEntityKey();\n var newEditorState = _draftJs.AtomicBlockUtils.insertAtomicBlock(editorState, entityKey, ' ');\n\n return newEditorState;\n};\n\nvar insertHorizontalLine = exports.insertHorizontalLine = function insertHorizontalLine(editorState) {\n return insertAtomicBlock(editorState, 'HR');\n};\n\nvar insertMedias = exports.insertMedias = function insertMedias(editorState) {\n var medias = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n\n if (!medias.length) {\n return editorState;\n }\n\n return medias.reduce(function (editorState, media) {\n var url = media.url,\n link = media.link,\n link_target = media.link_target,\n name = media.name,\n type = media.type,\n width = media.width,\n height = media.height,\n meta = media.meta;\n\n return insertAtomicBlock(editorState, type, true, { url: url, link: link, link_target: link_target, name: name, type: type, width: width, height: height, meta: meta });\n }, editorState);\n};\n\nvar setMediaData = exports.setMediaData = function setMediaData(editorState, entityKey, data) {\n return _draftJs.EditorState.push(editorState, editorState.getCurrentContent().mergeEntityData(entityKey, data), 'change-block-data');\n};\n\nvar removeMedia = exports.removeMedia = function removeMedia(editorState, mediaBlock) {\n return removeBlock(editorState, mediaBlock);\n};\n\nvar setMediaPosition = exports.setMediaPosition = function setMediaPosition(editorState, mediaBlock, position) {\n\n var newPosition = {};\n var float = position.float,\n alignment = position.alignment;\n\n\n if (typeof float !== 'undefined') {\n newPosition.float = mediaBlock.getData().get('float') === float ? null : float;\n }\n\n if (typeof alignment !== 'undefined') {\n newPosition.alignment = mediaBlock.getData().get('alignment') === alignment ? null : alignment;\n }\n\n return setSelectionBlockData(selectBlock(editorState, mediaBlock), newPosition);\n};\n\nvar clear = exports.clear = function clear(editorState) {\n\n var contentState = editorState.getCurrentContent();\n\n var firstBlock = contentState.getFirstBlock();\n var lastBlock = contentState.getLastBlock();\n\n var allSelected = new _draftJs.SelectionState({\n anchorKey: firstBlock.getKey(),\n anchorOffset: 0,\n focusKey: lastBlock.getKey(),\n focusOffset: lastBlock.getLength(),\n hasFocus: true\n });\n\n return _draftJs.RichUtils.toggleBlockType(_draftJs.EditorState.push(editorState, _draftJs.Modifier.removeRange(contentState, allSelected, 'backward'), 'remove-range'), 'unstyled');\n};\n\nvar handleKeyCommand = exports.handleKeyCommand = function handleKeyCommand(editorState, command) {\n return _draftJs.RichUtils.handleKeyCommand(editorState, command);\n};\n\nvar undo = exports.undo = function undo(editorState) {\n return _draftJs.EditorState.undo(editorState);\n};\n\nvar redo = exports.redo = function redo(editorState) {\n return _draftJs.EditorState.redo(editorState);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar braftUniqueIndex = 0;\n\nvar UniqueIndex = exports.UniqueIndex = function UniqueIndex() {\n return braftUniqueIndex += 1;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _namedColors = {\n \"aliceblue\": \"#f0f8ff\",\n \"antiquewhite\": \"#faebd7\",\n \"aqua\": \"#00ffff\",\n \"aquamarine\": \"#7fffd4\",\n \"azure\": \"#f0ffff\",\n \"beige\": \"#f5f5dc\",\n \"bisque\": \"#ffe4c4\",\n \"black\": \"#000000\",\n \"blanchedalmond\": \"#ffebcd\",\n \"blue\": \"#0000ff\",\n \"blueviolet\": \"#8a2be2\",\n \"brown\": \"#a52a2a\",\n \"burlywood\": \"#deb887\",\n \"cadetblue\": \"#5f9ea0\",\n \"chartreuse\": \"#7fff00\",\n \"chocolate\": \"#d2691e\",\n \"coral\": \"#ff7f50\",\n \"cornflowerblue\": \"#6495ed\",\n \"cornsilk\": \"#fff8dc\",\n \"crimson\": \"#dc143c\",\n \"cyan\": \"#00ffff\",\n \"darkblue\": \"#00008b\",\n \"darkcyan\": \"#008b8b\",\n \"darkgoldenrod\": \"#b8860b\",\n \"darkgray\": \"#a9a9a9\",\n \"darkgreen\": \"#006400\",\n \"darkkhaki\": \"#bdb76b\",\n \"darkmagenta\": \"#8b008b\",\n \"darkolivegreen\": \"#556b2f\",\n \"darkorange\": \"#ff8c00\",\n \"darkorchid\": \"#9932cc\",\n \"darkred\": \"#8b0000\",\n \"darksalmon\": \"#e9967a\",\n \"darkseagreen\": \"#8fbc8f\",\n \"darkslateblue\": \"#483d8b\",\n \"darkslategray\": \"#2f4f4f\",\n \"darkturquoise\": \"#00ced1\",\n \"darkviolet\": \"#9400d3\",\n \"deeppink\": \"#ff1493\",\n \"deepskyblue\": \"#00bfff\",\n \"dimgray\": \"#696969\",\n \"dodgerblue\": \"#1e90ff\",\n \"firebrick\": \"#b22222\",\n \"floralwhite\": \"#fffaf0\",\n \"forestgreen\": \"#228b22\",\n \"fuchsia\": \"#ff00ff\",\n \"gainsboro\": \"#dcdcdc\",\n \"ghostwhite\": \"#f8f8ff\",\n \"gold\": \"#ffd700\",\n \"goldenrod\": \"#daa520\",\n \"gray\": \"#808080\",\n \"green\": \"#008000\",\n \"greenyellow\": \"#adff2f\",\n \"honeydew\": \"#f0fff0\",\n \"hotpink\": \"#ff69b4\",\n \"indianred \": \"#cd5c5c\",\n \"indigo\": \"#4b0082\",\n \"ivory\": \"#fffff0\",\n \"khaki\": \"#f0e68c\",\n \"lavender\": \"#e6e6fa\",\n \"lavenderblush\": \"#fff0f5\",\n \"lawngreen\": \"#7cfc00\",\n \"lemonchiffon\": \"#fffacd\",\n \"lightblue\": \"#add8e6\",\n \"lightcoral\": \"#f08080\",\n \"lightcyan\": \"#e0ffff\",\n \"lightgoldenrodyellow\": \"#fafad2\",\n \"lightgrey\": \"#d3d3d3\",\n \"lightgreen\": \"#90ee90\",\n \"lightpink\": \"#ffb6c1\",\n \"lightsalmon\": \"#ffa07a\",\n \"lightseagreen\": \"#20b2aa\",\n \"lightskyblue\": \"#87cefa\",\n \"lightslategray\": \"#778899\",\n \"lightsteelblue\": \"#b0c4de\",\n \"lightyellow\": \"#ffffe0\",\n \"lime\": \"#00ff00\",\n \"limegreen\": \"#32cd32\",\n \"linen\": \"#faf0e6\",\n \"magenta\": \"#ff00ff\",\n \"maroon\": \"#800000\",\n \"mediumaquamarine\": \"#66cdaa\",\n \"mediumblue\": \"#0000cd\",\n \"mediumorchid\": \"#ba55d3\",\n \"mediumpurple\": \"#9370d8\",\n \"mediumseagreen\": \"#3cb371\",\n \"mediumslateblue\": \"#7b68ee\",\n \"mediumspringgreen\": \"#00fa9a\",\n \"mediumturquoise\": \"#48d1cc\",\n \"mediumvioletred\": \"#c71585\",\n \"midnightblue\": \"#191970\",\n \"mintcream\": \"#f5fffa\",\n \"mistyrose\": \"#ffe4e1\",\n \"moccasin\": \"#ffe4b5\",\n \"navajowhite\": \"#ffdead\",\n \"navy\": \"#000080\",\n \"oldlace\": \"#fdf5e6\",\n \"olive\": \"#808000\",\n \"olivedrab\": \"#6b8e23\",\n \"orange\": \"#ffa500\",\n \"orangered\": \"#ff4500\",\n \"orchid\": \"#da70d6\",\n \"palegoldenrod\": \"#eee8aa\",\n \"palegreen\": \"#98fb98\",\n \"paleturquoise\": \"#afeeee\",\n \"palevioletred\": \"#d87093\",\n \"papayawhip\": \"#ffefd5\",\n \"peachpuff\": \"#ffdab9\",\n \"peru\": \"#cd853f\",\n \"pink\": \"#ffc0cb\",\n \"plum\": \"#dda0dd\",\n \"powderblue\": \"#b0e0e6\",\n \"purple\": \"#800080\",\n \"rebeccapurple\": \"#663399\",\n \"red\": \"#ff0000\",\n \"rosybrown\": \"#bc8f8f\",\n \"royalblue\": \"#4169e1\",\n \"saddlebrown\": \"#8b4513\",\n \"salmon\": \"#fa8072\",\n \"sandybrown\": \"#f4a460\",\n \"seagreen\": \"#2e8b57\",\n \"seashell\": \"#fff5ee\",\n \"sienna\": \"#a0522d\",\n \"silver\": \"#c0c0c0\",\n \"skyblue\": \"#87ceeb\",\n \"slateblue\": \"#6a5acd\",\n \"slategray\": \"#708090\",\n \"snow\": \"#fffafa\",\n \"springgreen\": \"#00ff7f\",\n \"steelblue\": \"#4682b4\",\n \"tan\": \"#d2b48c\",\n \"teal\": \"#008080\",\n \"thistle\": \"#d8bfd8\",\n \"tomato\": \"#ff6347\",\n \"turquoise\": \"#40e0d0\",\n \"violet\": \"#ee82ee\",\n \"wheat\": \"#f5deb3\",\n \"white\": \"#ffffff\",\n \"whitesmoke\": \"#f5f5f5\",\n \"yellow\": \"#ffff00\",\n \"yellowgreen\": \"#9acd32\"\n};\n\nvar _getHexColor = function _getHexColor(color) {\n\n color = color.replace('color:', '').replace(';', '').replace(' ', '');\n\n if (/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(color)) {\n return color;\n } else if (namedColors[color]) {\n return namedColors[color];\n } else if (color.indexOf('rgb') === 0) {\n\n var rgbArray = color.split(',');\n var convertedColor = rgbArray.length < 3 ? null : '#' + [rgbArray[0], rgbArray[1], rgbArray[2]].map(function (x) {\n var hex = parseInt(x.replace(/\\D/g, ''), 10).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n\n return (/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(convertedColor) ? convertedColor : null\n );\n } else {\n return null;\n }\n};\n\nvar namedColors = exports.namedColors = _namedColors;\nvar getHexColor = exports.getHexColor = _getHexColor;\n\nvar detectColorsFromHTMLString = exports.detectColorsFromHTMLString = function detectColorsFromHTMLString(html) {\n return typeof html !== 'string' ? [] : (html.match(/color:[^;]{3,24};/g) || []).map(getHexColor).filter(function (color) {\n return color;\n });\n};\n\nvar detectColorsFromDraftState = exports.detectColorsFromDraftState = function detectColorsFromDraftState(draftState) {\n\n var result = [];\n\n if (!draftState || !draftState.blocks || !draftState.blocks.length) {\n return result;\n }\n\n draftState.blocks.forEach(function (block) {\n if (block && block.inlineStyleRanges && block.inlineStyleRanges.length) {\n block.inlineStyleRanges.forEach(function (inlineStyle) {\n if (inlineStyle.style && inlineStyle.style.indexOf('COLOR-') >= 0) {\n result.push('#' + inlineStyle.style.split('COLOR-')[1]);\n }\n });\n }\n });\n\n return result.filter(function (color) {\n return color;\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorUtils = exports.BaseUtils = exports.ContentUtils = undefined;\n\nvar _content = require('./content');\n\nvar _ContentUtils = _interopRequireWildcard(_content);\n\nvar _base = require('./base');\n\nvar _BaseUtils = _interopRequireWildcard(_base);\n\nvar _color = require('./color');\n\nvar _ColorUtils = _interopRequireWildcard(_color);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar ContentUtils = exports.ContentUtils = _ContentUtils;\nvar BaseUtils = exports.BaseUtils = _BaseUtils;\nvar ColorUtils = exports.ColorUtils = _ColorUtils;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.Immutable = factory();\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step > 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n findEntry: function(predicate, context) {\n var found;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findLastEntry: function(predicate, context) {\n return this.toSeq().reverse().findEntry(predicate, context);\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n // Temporary warning about using length\n (function () {\n try {\n Object.defineProperty(IterablePrototype, 'length', {\n get: function () {\n if (!Iterable.noLengthWarning) {\n var stack;\n try {\n throw new Error();\n } catch (error) {\n stack = error.stack;\n }\n if (stack.indexOf('_wrapObject') === -1) {\n console && console.warn && console.warn(\n 'iterable.length has been deprecated, '+\n 'use iterable.size or iterable.count(). '+\n 'This warning will become a silent error in a future version. ' +\n stack\n );\n return this.size;\n }\n }\n }\n });\n } catch (e) {}\n })();\n\n\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLastKey: function(predicate, context) {\n return this.toSeq().reverse().findKey(predicate, context);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n lastKeyOf: function(searchValue) {\n return this.findLastKey(function(value ) {return is(value, searchValue)});\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.toKeyedSeq().keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.toKeyedSeq().reverse().keyOf(searchValue);\n return key === undefined ? -1 : key;\n\n // var index =\n // return this.toSeq().reverse().indexOf(searchValue);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var key = this.toKeyedSeq().findLastKey(predicate, context);\n return key === undefined ? -1 : key;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : value;\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"react\")) : factory(root[\"react\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 20);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar compressImage = exports.compressImage = function compressImage(url) {\n var width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1280;\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 800;\n\n\n return new Promise(function (resolve, reject) {\n\n var image = new Image();\n\n image.src = url;\n\n image.onerror = function (error) {\n reject(error);\n };\n\n image.onload = function () {\n\n try {\n\n var compressCanvas = document.createElement('canvas');\n var scale = this.width > width || this.height > height ? this.width > this.height ? width / this.width : height / this.height : 1;\n\n compressCanvas.width = this.width * scale;\n compressCanvas.height = this.height * scale;\n\n var canvasContext = compressCanvas.getContext('2d');\n canvasContext.drawImage(this, 0, 0, compressCanvas.width, compressCanvas.height);\n\n resolve({\n url: compressCanvas.toDataURL('image/png', 1),\n width: compressCanvas.width,\n height: compressCanvas.height\n });\n } catch (error) {\n reject(error);\n }\n };\n });\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar UniqueIndex = exports.UniqueIndex = function UniqueIndex() {\n\n if (isNaN(window.__BRAFT_MM_UNIQUE_INDEX__)) {\n window.__BRAFT_MM_UNIQUE_INDEX__ = 1;\n } else {\n window.__BRAFT_MM_UNIQUE_INDEX__ += 1;\n }\n\n return window.__BRAFT_MM_UNIQUE_INDEX__;\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__2__;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: 'Kaldır',\n cancel: 'İptal',\n confirm: 'Onayla',\n insert: 'Seçilenleri ekle',\n width: 'Genişlik',\n height: 'Yükseklik',\n image: 'Resim',\n video: 'Görüntü',\n audio: 'Ses',\n embed: 'Nesne göm',\n caption: 'Kitaplık',\n dragTip: 'Tıkla ya da dosya sürükle',\n dropTip: 'Yüklemek için sürükleyin',\n selectAll: 'Tümünü seç',\n deselect: 'Seçimi kaldır',\n removeSelected: 'Seçilenleri kaldır',\n externalInputPlaceHolder: 'Kaynak adı|Kaynak bağlantısı',\n externalInputTip: 'Kaynak asını ve bağlantısını \"|\" ile ayırın ve Enter\\' a basın.',\n addLocalFile: 'Yerel\\' den ekle',\n addExternalSource: 'Harici kaynaktan ekle',\n unnamedItem: 'Adlandırılmamış giriş',\n confirmInsert: 'Seçilenleri ekle'\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: '削除する',\n cancel: 'キャンセル',\n confirm: '確認する',\n insert: '選択したアイテムを挿入',\n width: '幅',\n height: '身長',\n image: '絵',\n video: 'ビデオ',\n audio: '音声',\n embed: '埋め込みメディア',\n caption: 'メディアライブラリー',\n dragTip: 'ファイルをこの位置までクリックまたはドラッグします',\n dropTip: 'アップロードするマウスを放します',\n selectAll: 'すべて選択',\n deselect: '選択を解除',\n removeSelected: '選択したアイテムを削除',\n externalInputPlaceHolder: 'リソース名|リソースアドレス',\n externalInputTip: 'リソース名とリソースアドレスは \"|\"で区切ります。',\n addLocalFile: 'ローカルリソースを追加する',\n addExternalSource: 'ネットワークリソースを追加する',\n unnamedItem: '名前のないアイテム',\n confirmInsert: '選択したアイテムを挿入'\n};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: '삭제',\n cancel: '취소',\n confirm: '확인',\n insert: '선택한항목삽입',\n width: '너비',\n height: '높이',\n image: '그림',\n video: '비디오',\n audio: '오디오',\n embed: '임베디드미디어',\n caption: '미디어라이브러리',\n dragTip: '파일을 클릭하거나이 지점으로 드래그하십시오.',\n dropTip: '업로드하려면마우스를놓으십시오.',\n selectAll: '모두 선택',\n deselect: '선택 취소',\n removeSelected: '선택한 항목 삭제',\n externalInputPlaceHolder: '리소스 이름 | 리소스 주소',\n externalInputTip: '자원 이름과 자원 주소를 \"|\"',\n addLocalFile: '로컬 리소스 추가',\n addExternalSource: '네트워크 리소스 추가',\n unnamedItem: '이름없는 항목',\n confirmInsert: '선택한 항목 삽입'\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: 'Usuń',\n cancel: 'Anuluj',\n confirm: 'Potwierdź',\n insert: 'Wstaw wybrane elementy',\n width: 'Szerokość',\n height: 'Wysokość',\n image: 'Obraz',\n video: 'Wideo',\n audio: 'Dźwięk',\n embed: 'Obiekt',\n caption: 'Biblioteka mediów',\n dragTip: 'Kliknij lub przenieś tu pliki',\n dropTip: 'Upuść aby dodać plik',\n selectAll: 'Zaznacz wszystko',\n deselect: 'Odznacz',\n removeSelected: 'Usuń wybrane',\n externalInputPlaceHolder: 'Nazwa źródła|Adres URL',\n externalInputTip: 'Oddziel nazwę i adres URL źródła z pomocą \"|\", Potwierdź Enter-em',\n addLocalFile: 'Dodaj z komputera',\n addExternalSource: 'Dodaj z Internetu',\n unnamedItem: 'Bez nazwy',\n confirmInsert: 'Dodaj wybrane elementy'\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: '删除',\n cancel: '取消',\n confirm: '确认',\n insert: '插入所选项目',\n width: '宽度',\n height: '高度',\n image: '图片',\n video: '视频',\n audio: '音频',\n embed: '嵌入式媒体',\n caption: '媒体库',\n dragTip: '点击或拖动文件至此',\n dropTip: '放开鼠标以上传',\n selectAll: '选择全部',\n deselect: '取消选择',\n removeSelected: '删除选中项目',\n externalInputPlaceHolder: '资源名称|资源地址',\n externalInputTip: '使用“|”分隔资源名称和资源地址',\n addLocalFile: '添加本地资源',\n addExternalSource: '添加网络资源',\n unnamedItem: '未命名项目',\n confirmInsert: '插入选中项目'\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: '删除',\n cancel: '取消',\n confirm: '确认',\n insert: '插入所选项目',\n width: '宽度',\n height: '高度',\n image: '图片',\n video: '视频',\n audio: '音频',\n embed: '嵌入式媒体',\n caption: '媒体库',\n dragTip: '点击或拖动文件至此',\n dropTip: '放开鼠标以上传',\n selectAll: '选择全部',\n deselect: '取消选择',\n removeSelected: '删除选中项目',\n externalInputPlaceHolder: '资源名称|资源地址',\n externalInputTip: '使用“|”分隔资源名称和资源地址',\n addLocalFile: '添加本地资源',\n addExternalSource: '添加网络资源',\n unnamedItem: '未命名项目',\n confirmInsert: '插入选中项目'\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n remove: 'Remove',\n cancel: 'Cancel',\n confirm: 'Confirm',\n insert: 'Insert Selected Items',\n width: 'Width',\n height: 'Height',\n image: 'Image',\n video: 'Video',\n audio: 'Audio',\n embed: 'Embed',\n caption: 'Media Library',\n dragTip: 'Click Or Drag Files Here',\n dropTip: 'Drop To Upload',\n selectAll: 'Select All',\n deselect: 'Deselect',\n removeSelected: 'Remove Selected Items',\n externalInputPlaceHolder: 'Source Name|Source URL',\n externalInputTip: 'Split source name and source URL with \"|\", confirm by hit Enter.',\n addLocalFile: 'Add from local',\n addExternalSource: 'Add from Internet',\n unnamedItem: 'Unnamed Item',\n confirmInsert: 'Insert selected items'\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _en = __webpack_require__(9);\n\nvar _en2 = _interopRequireDefault(_en);\n\nvar _zh = __webpack_require__(8);\n\nvar _zh2 = _interopRequireDefault(_zh);\n\nvar _zhHant = __webpack_require__(7);\n\nvar _zhHant2 = _interopRequireDefault(_zhHant);\n\nvar _pl = __webpack_require__(6);\n\nvar _pl2 = _interopRequireDefault(_pl);\n\nvar _kr = __webpack_require__(5);\n\nvar _kr2 = _interopRequireDefault(_kr);\n\nvar _jpn = __webpack_require__(4);\n\nvar _jpn2 = _interopRequireDefault(_jpn);\n\nvar _tr = __webpack_require__(3);\n\nvar _tr2 = _interopRequireDefault(_tr);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n \"en\": _en2.default,\n \"zh\": _zh2.default,\n \"zh-hant\": _zhHant2.default,\n \"pl\": _pl2.default,\n \"kr\": _kr2.default,\n \"jpn\": _jpn2.default,\n \"tr\": _tr2.default\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(11);\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = options.transform(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:font/ttf;base64,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\"\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nmodule.exports = function escape(url) {\n if (typeof url !== 'string') {\n return url\n }\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]/.test(url)) {\n return '\"' + url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') + '\"'\n }\n\n return url\n}\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar escape = __webpack_require__(15);\nexports = module.exports = __webpack_require__(14)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"@font-face {\\n font-family: 'bf-icons';\\n src: url(\" + escape(__webpack_require__(13)) + \") format(\\\"truetype\\\");\\n font-weight: normal;\\n font-style: normal; }\\n\\n.braft-finder [class^=\\\"braft-icon-\\\"], .braft-finder [class*=\\\" braft-icon-\\\"] {\\n /* use !important to prevent issues with browser extensions that change fonts */\\n font-family: 'bf-icons' !important;\\n font-style: normal;\\n font-weight: normal;\\n font-variant: normal;\\n text-transform: none;\\n /* Better Font Rendering =========== */\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale; }\\n\\n.braft-finder .braft-icon-code:before {\\n content: \\\"\\\\E903\\\"; }\\n\\n.braft-finder .braft-icon-pause:before {\\n content: \\\"\\\\E034\\\"; }\\n\\n.braft-finder .braft-icon-play_arrow:before {\\n content: \\\"\\\\E037\\\"; }\\n\\n.braft-finder .braft-icon-bin:before {\\n content: \\\"\\\\E9AC\\\"; }\\n\\n.braft-finder .braft-icon-replay:before {\\n content: \\\"\\\\E042\\\"; }\\n\\n.braft-finder .braft-icon-close:before {\\n content: \\\"\\\\E913\\\"; }\\n\\n.braft-finder .braft-icon-music:before {\\n content: \\\"\\\\E90E\\\"; }\\n\\n.braft-finder .braft-icon-camera:before {\\n content: \\\"\\\\E911\\\"; }\\n\\n.braft-finder .braft-icon-file-text:before {\\n content: \\\"\\\\E926\\\"; }\\n\\n.braft-finder .braft-icon-film:before {\\n content: \\\"\\\\E91C\\\"; }\\n\\n.braft-finder .braft-icon-paste:before {\\n content: \\\"\\\\E92D\\\"; }\\n\\n.braft-finder .braft-icon-spinner:before {\\n content: \\\"\\\\E980\\\"; }\\n\\n.braft-finder .braft-icon-media:before {\\n content: \\\"\\\\E90F\\\"; }\\n\\n.braft-finder .braft-icon-add:before {\\n content: \\\"\\\\E918\\\"; }\\n\\n.braft-finder .braft-icon-done:before {\\n content: \\\"\\\\E912\\\"; }\\n\\n.braft-finder .braft-icon-drop-down:before {\\n content: \\\"\\\\E906\\\"; }\\n\\n.braft-finder .braft-icon-drop-up:before {\\n content: \\\"\\\\E909\\\"; }\\n\\n.braft-finder .braft-icon-help:before {\\n content: \\\"\\\\E902\\\"; }\\n\\n.braft-finder .braft-icon-info:before {\\n content: \\\"\\\\E901\\\"; }\\n\\n.braft-finder .braft-icon-menu:before {\\n content: \\\"\\\\E908\\\"; }\\n\\n.pull-left {\\n float: left; }\\n\\n.pull-right {\\n float: right; }\\n\\n.braft-finder .bf-uploader {\\n position: relative;\\n height: 370px;\\n margin: 0; }\\n .braft-finder .bf-uploader.draging .bf-list-wrap,\\n .braft-finder .bf-uploader.draging .bf-add-external {\\n pointer-events: none; }\\n .braft-finder .bf-uploader input::-webkit-input-placeholder {\\n color: #ccc; }\\n .braft-finder .bf-uploader input::-moz-placeholder {\\n color: #ccc; }\\n .braft-finder .bf-uploader input::-ms-input-placeholder {\\n color: #ccc; }\\n\\n.braft-finder .bf-list-wrap {\\n position: relative;\\n height: 370px; }\\n\\n.braft-finder .bf-list-tools {\\n z-index: 1;\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: 0;\\n height: 20px;\\n padding: 0 15px;\\n background-color: #fff; }\\n .braft-finder .bf-list-tools span {\\n height: 26px;\\n font-size: 12px;\\n line-height: 20px;\\n cursor: pointer;\\n user-select: none; }\\n .braft-finder .bf-list-tools span[disabled] {\\n opacity: .3;\\n pointer-events: none; }\\n .braft-finder .bf-list-tools .bf-select-all,\\n .braft-finder .bf-list-tools .bf-deselect-all {\\n float: left;\\n margin-right: 5px;\\n color: #bbb; }\\n .braft-finder .bf-list-tools .bf-select-all:hover,\\n .braft-finder .bf-list-tools .bf-deselect-all:hover {\\n color: #3498db; }\\n .braft-finder .bf-list-tools .bf-remove-selected {\\n float: right;\\n color: #e74c3c; }\\n .braft-finder .bf-list-tools .bf-remove-selected:hover {\\n color: #c92e1e; }\\n\\n.braft-finder .bf-list {\\n position: absolute;\\n z-index: 1;\\n top: 30px;\\n right: 0;\\n left: 0;\\n bottom: 0;\\n margin: 0;\\n padding: 0 10px;\\n list-style: none;\\n overflow: auto; }\\n .braft-finder .bf-list::-webkit-scrollbar {\\n width: 5px;\\n height: 5px;\\n background-color: #fff; }\\n .braft-finder .bf-list::-webkit-scrollbar-track {\\n background-color: #fff; }\\n .braft-finder .bf-list::-webkit-scrollbar-thumb {\\n background-color: rgba(0, 0, 0, 0.1); }\\n\\n.braft-finder .bf-item,\\n.braft-finder .bf-add-item {\\n position: relative;\\n display: block;\\n float: left;\\n width: 113px;\\n height: 113px;\\n margin: 5px;\\n overflow: hidden;\\n border-radius: 3px; }\\n\\n.braft-finder .bf-item.uploading {\\n pointer-events: none; }\\n\\n.braft-finder .bf-item.error::before {\\n display: block;\\n content: \\\"\\\\E901\\\"; }\\n\\n.braft-finder .bf-item.error::after {\\n position: absolute;\\n z-index: 1;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: rgba(231, 76, 60, 0.8);\\n content: ''; }\\n\\n.braft-finder .bf-item.error:hover::after {\\n background-color: rgba(231, 76, 60, 0.9); }\\n\\n.braft-finder .bf-item.error .bf-item-uploading {\\n display: none; }\\n\\n.braft-finder .bf-add-item {\\n background-color: #ecedef;\\n color: #999; }\\n .braft-finder .bf-add-item:hover {\\n background-color: #e1e2e3; }\\n .braft-finder .bf-add-item i {\\n display: block;\\n width: 113px;\\n height: 113px;\\n font-size: 48px;\\n line-height: 113px;\\n text-align: center; }\\n .braft-finder .bf-add-item input {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n opacity: 0;\\n cursor: pointer; }\\n\\n.braft-finder .bf-item::before {\\n display: none;\\n position: absolute;\\n z-index: 2;\\n top: 0;\\n left: 0;\\n width: 113px;\\n height: 113px;\\n color: #fff;\\n font-size: 48px;\\n font-family: 'bf-icons';\\n line-height: 113px;\\n text-align: center; }\\n\\n.braft-finder .bf-item::after {\\n position: absolute;\\n z-index: 1;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: rgba(52, 152, 219, 0);\\n content: ''; }\\n\\n.braft-finder .bf-item:hover::after {\\n background-color: rgba(52, 152, 219, 0.3); }\\n\\n.braft-finder .bf-item:hover .bf-item-remove {\\n display: block; }\\n\\n.braft-finder .bf-item.active::before {\\n display: block;\\n content: \\\"\\\\E912\\\"; }\\n\\n.braft-finder .bf-item.active::after {\\n background-color: rgba(52, 152, 219, 0.6); }\\n\\n.braft-finder .bf-item.active:hover::after {\\n background-color: rgba(52, 152, 219, 0.8); }\\n\\n.braft-finder .bf-item.active:hover .bf-item-remove {\\n display: none; }\\n\\n.braft-finder .bf-item-uploading {\\n box-sizing: border-box;\\n position: absolute;\\n z-index: 3;\\n top: 52px;\\n left: 10px;\\n width: 93px;\\n height: 10px;\\n overflow: hidden;\\n background-color: rgba(255, 255, 255, 0.3);\\n border-radius: 5px;\\n box-shadow: 0 0 0 100px rgba(0, 0, 0, 0.5); }\\n\\n.braft-finder .bf-item-uploading-bar {\\n height: 10px;\\n background-color: #3498db;\\n border-radius: 0; }\\n\\n.braft-finder .bf-item-remove {\\n display: none;\\n position: absolute;\\n z-index: 2;\\n top: 0;\\n right: 0;\\n width: 28px;\\n height: 28px;\\n color: #fff;\\n font-size: 18px;\\n line-height: 28px;\\n text-align: center;\\n cursor: pointer; }\\n .braft-finder .bf-item-remove:hover {\\n color: #e74c3c; }\\n\\n.braft-finder .bf-item-title {\\n display: none;\\n box-sizing: border-box;\\n position: absolute;\\n z-index: 2;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 40px;\\n padding: 0 5px;\\n overflow: hidden;\\n background-image: linear-gradient(rgba(0, 0, 0, 0), black);\\n color: #fff;\\n font-size: 12px;\\n line-height: 55px;\\n text-align: center;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n.braft-finder .bf-image {\\n width: 100%;\\n height: 100%;\\n background-color: #eee;\\n user-select: none; }\\n .braft-finder .bf-image img {\\n display: block;\\n width: 100%;\\n height: 100%;\\n object-fit: cover; }\\n\\n.braft-finder .bf-video {\\n background-color: #8e44ad; }\\n\\n.braft-finder .bf-audio {\\n background-color: #f39c12; }\\n\\n.braft-finder .bf-embed {\\n background-color: #f1c40f; }\\n\\n.braft-finder .bf-icon {\\n display: block;\\n width: 113px;\\n height: 113px;\\n overflow: hidden;\\n color: #fff;\\n text-align: center;\\n text-decoration: none; }\\n .braft-finder .bf-icon i, .braft-finder .bf-icon span {\\n display: block; }\\n .braft-finder .bf-icon i {\\n margin-top: 35px;\\n font-size: 24px; }\\n .braft-finder .bf-icon span {\\n width: 103px;\\n margin: 10px auto;\\n overflow: hidden;\\n font-size: 12px;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n.braft-finder .bf-drag-uploader {\\n box-sizing: border-box;\\n position: absolute;\\n z-index: 2;\\n top: 0;\\n right: 15px;\\n left: 15px;\\n height: 100%;\\n background-color: #fff;\\n border: dashed 1px #bbb;\\n text-align: center;\\n opacity: 0;\\n pointer-events: none; }\\n .braft-finder .bf-drag-uploader:hover, .braft-finder .bf-drag-uploader.draging {\\n background-color: #f1f2f3; }\\n .braft-finder .bf-drag-uploader.active {\\n opacity: 1;\\n pointer-events: auto; }\\n\\n.braft-finder .bf-uploader-buttons {\\n height: 370px;\\n margin: auto;\\n text-align: center; }\\n\\n.braft-finder .bf-drag-tip {\\n display: inline-block;\\n margin-top: 150px;\\n color: #ccc;\\n text-align: center;\\n font-size: 28px;\\n font-weight: normal;\\n line-height: 40px; }\\n .braft-finder .bf-drag-tip input {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n opacity: 0;\\n color: #fff;\\n text-indent: -100px;\\n cursor: pointer; }\\n\\n.braft-finder .bf-manager-footer {\\n height: 36px;\\n margin: 10px 0;\\n padding: 0 15px; }\\n .braft-finder .bf-manager-footer .button {\\n float: right;\\n height: 36px;\\n margin-left: 5px;\\n padding: 0 35px;\\n font-size: 12px;\\n font-weight: 700;\\n border: none;\\n border-radius: 3px;\\n cursor: pointer; }\\n .braft-finder .bf-manager-footer .button-insert {\\n color: #fff;\\n background-color: #3498db; }\\n .braft-finder .bf-manager-footer .button-insert:hover {\\n background-color: #2084c7; }\\n .braft-finder .bf-manager-footer .button-insert[disabled] {\\n opacity: .3;\\n pointer-events: none;\\n filter: grayscale(0.4); }\\n .braft-finder .bf-manager-footer .button-cancel {\\n color: #999;\\n background-color: #e8e8e9; }\\n .braft-finder .bf-manager-footer .button-cancel:hover {\\n background-color: #d8d8d9; }\\n\\n.braft-finder .bf-toggle-external-form {\\n color: #666;\\n font-size: 12px;\\n line-height: 36px; }\\n .braft-finder .bf-toggle-external-form span {\\n color: #bbb;\\n line-height: 16px;\\n cursor: pointer;\\n user-select: none; }\\n .braft-finder .bf-toggle-external-form span:hover {\\n color: #3498db; }\\n .braft-finder .bf-toggle-external-form span i {\\n position: relative;\\n top: 2px;\\n font-size: 16px; }\\n\\n.braft-finder .bf-add-external {\\n position: absolute;\\n z-index: 3;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: #fff; }\\n .braft-finder .bf-add-external input {\\n border: solid 1px rgba(0, 0, 0, 0.3);\\n border: solid 0.5px rgba(0, 0, 0, 0.3);\\n box-shadow: none; }\\n .braft-finder .bf-add-external input:focus {\\n border-color: #3498db;\\n box-shadow: none; }\\n\\n.braft-finder .bf-external-form {\\n width: 500px;\\n max-width: 90%;\\n margin: 91px auto 0 auto; }\\n\\n.braft-finder .bf-external-input {\\n position: relative;\\n width: 100%;\\n height: 40px;\\n margin-bottom: 10px; }\\n .braft-finder .bf-external-input div {\\n position: absolute;\\n top: 0;\\n right: 85px;\\n left: 0;\\n height: 40px; }\\n .braft-finder .bf-external-input input,\\n .braft-finder .bf-external-input textarea {\\n display: block;\\n box-sizing: border-box;\\n width: 100%;\\n height: 40px;\\n padding: 0 10px;\\n border: none;\\n border-radius: 3px;\\n outline: none;\\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.3);\\n color: #999;\\n font-size: 18px; }\\n .braft-finder .bf-external-input input:focus,\\n .braft-finder .bf-external-input textarea:focus {\\n box-shadow: inset 0 0 0 1px #3498db; }\\n .braft-finder .bf-external-input textarea {\\n height: 100px;\\n font-size: 14px; }\\n .braft-finder .bf-external-input button {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 80px;\\n height: 40px;\\n background-color: #3498db;\\n border: none;\\n border-radius: 3px;\\n color: #fff;\\n font-size: 14px;\\n font-weight: bold;\\n cursor: pointer; }\\n .braft-finder .bf-external-input button:disabled {\\n opacity: .3;\\n pointer-events: none;\\n filter: grayscale(0.4); }\\n .braft-finder .bf-external-input button:hover {\\n background-color: #2084c7; }\\n\\n.braft-finder .bf-switch-external-type {\\n overflow: hidden;\\n text-align: center; }\\n .braft-finder .bf-switch-external-type button {\\n width: auto;\\n height: 30px;\\n margin: 10px 5px;\\n padding: 0 10px;\\n background-color: #e8e9ea;\\n border: none;\\n border-radius: 3px;\\n color: #999;\\n font-size: 12px;\\n cursor: pointer; }\\n .braft-finder .bf-switch-external-type button:hover {\\n background-color: #d8d9da; }\\n .braft-finder .bf-switch-external-type button:only-child {\\n display: none; }\\n .braft-finder .bf-switch-external-type[data-type=\\\"IMAGE\\\"] [data-type=\\\"IMAGE\\\"],\\n .braft-finder .bf-switch-external-type[data-type=\\\"VIDEO\\\"] [data-type=\\\"VIDEO\\\"],\\n .braft-finder .bf-switch-external-type[data-type=\\\"AUDIO\\\"] [data-type=\\\"AUDIO\\\"],\\n .braft-finder .bf-switch-external-type[data-type=\\\"EMBED\\\"] [data-type=\\\"EMBED\\\"],\\n .braft-finder .bf-switch-external-type[data-type=\\\"FILE\\\"] [data-type=\\\"FILE\\\"] {\\n background-color: #3498db;\\n color: #fff; }\\n\\n.braft-finder .bf-external-tip {\\n display: block;\\n margin-top: 15px;\\n color: #ccc;\\n font-size: 12px;\\n text-align: center; }\\n\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(16);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(12)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {}\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(17);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _base = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaultAccepts = {\n image: 'image/png,image/jpeg,image/gif,image/webp,image/apng,image/svg',\n video: 'video/mp4',\n audio: 'audio/mp3'\n};\n\nvar BraftFinderView = function (_React$Component) {\n _inherits(BraftFinderView, _React$Component);\n\n function BraftFinderView(props) {\n _classCallCheck(this, BraftFinderView);\n\n var _this = _possibleConstructorReturn(this, (BraftFinderView.__proto__ || Object.getPrototypeOf(BraftFinderView)).call(this, props));\n\n _this.toggleSelectItem = function (event) {\n\n var itemId = event.currentTarget.dataset.id;\n var item = _this.controller.getMediaItem(itemId);\n\n if (!item) {\n return false;\n }\n\n if (item.selected) {\n\n if (!_this.props.onBeforeDeselect || _this.props.onBeforeDeselect([item], _this.controller.getItems()) !== false) {\n _this.controller.deselectMediaItem(itemId);\n _this.props.onDeselect && _this.props.onDeselect([item], _this.controller.getItems());\n }\n } else {\n\n if (!_this.props.onBeforeSelect || _this.props.onBeforeSelect([item], _this.controller.getItems()) !== false) {\n _this.controller.selectMediaItem(itemId);\n _this.props.onSelect && _this.props.onSelect([item], _this.controller.getItems());\n }\n }\n };\n\n _this.removeItem = function (event) {\n\n var itemId = event.currentTarget.dataset.id;\n var item = _this.controller.getMediaItem(itemId);\n\n if (!item) {\n return false;\n }\n\n if (!_this.props.onBeforeRemove || _this.props.onBeforeRemove([item], _this.controller.getItems()) !== false) {\n _this.controller.removeMediaItem(itemId);\n _this.props.onRemove && _this.props.onRemove([item], _this.controller.getItems());\n }\n\n event.stopPropagation();\n };\n\n _this.selectAllItems = function () {\n\n var allItems = _this.controller.getItems();\n\n if (!_this.props.onBeforeSelect || _this.props.onBeforeSelect(allItems, allItems) !== false) {\n _this.controller.selectAllItems();\n _this.props.onSelect && _this.props.onSelect(allItems, allItems);\n }\n };\n\n _this.deselectAllItems = function () {\n\n var allItems = _this.controller.getItems();\n\n if (!_this.props.onBeforeDeselect || _this.props.onBeforeDeselect(allItems, allItems) !== false) {\n _this.controller.deselectAllItems();\n _this.props.onDeselect && _this.props.onDeselect(allItems, allItems);\n }\n };\n\n _this.removeSelectedItems = function () {\n\n var selectedItems = _this.controller.getSelectedItems();\n\n if (!_this.props.onBeforeRemove || _this.props.onBeforeRemove(selectedItems, _this.controller.getItems()) !== false) {\n _this.controller.removeSelectedItems();\n _this.props.onRemove && _this.props.onRemove(selectedItems, _this.controller.getItems());\n }\n };\n\n _this.handleDragLeave = function (event) {\n event.preventDefault();\n _this.dragCounter--;\n _this.dragCounter === 0 && _this.setState({\n draging: false\n });\n };\n\n _this.handleDragDrop = function (event) {\n event.preventDefault();\n _this.dragCounter = 0;\n _this.setState({ draging: false });\n _this.reslovePickedFiles(event);\n };\n\n _this.handleDragEnter = function (event) {\n event.preventDefault();\n _this.dragCounter++;\n _this.setState({ draging: true });\n };\n\n _this.reslovePickedFiles = function (event) {\n\n event.persist();\n\n var _ref = event.type === 'drop' ? event.dataTransfer : event.target,\n files = _ref.files;\n\n if (_this.props.onFileSelect) {\n var result = _this.props.onFileSelect(files);\n if (result === false) {\n return false;\n } else if (result instanceof FileList || result instanceof Array) {\n files = result;\n }\n }\n\n var accepts = _extends({}, defaultAccepts, _this.props.accepts);\n\n _this.controller.resolveFiles({\n files: files,\n onItemReady: function onItemReady(_ref2) {\n var id = _ref2.id;\n return _this.controller.selectMediaItem(id);\n },\n onAllReady: function onAllReady() {\n return event.target.value = null;\n }\n }, 0, accepts);\n };\n\n _this.inputExternal = function (event) {\n _this.setState({\n external: _extends({}, _this.state.external, {\n url: event.target.value\n })\n });\n };\n\n _this.switchExternalType = function (event) {\n _this.setState({\n external: _extends({}, _this.state.external, { type: event.target.dataset.type })\n });\n };\n\n _this.confirmAddExternal = function (event) {\n\n if (event.target.nodeName.toLowerCase() === 'button' || event.keyCode === 13) {\n var _this$state$external = _this.state.external,\n url = _this$state$external.url,\n type = _this$state$external.type;\n\n url = url.split('|');\n var name = url.length > 1 ? url[0] : _this.props.language.unnamedItem;\n url = url.length > 1 ? url[1] : url[0];\n var thumbnail = type === 'IMAGE' ? url : null;\n\n _this.controller.addItems([{\n thumbnail: thumbnail, url: url, name: name, type: type,\n id: new Date().getTime() + '_' + (0, _base.UniqueIndex)(),\n uploading: false,\n uploadProgress: 1,\n selected: true\n }]);\n\n _this.setState({\n showExternalForm: false,\n external: {\n url: '',\n type: 'IMAGE'\n }\n });\n }\n };\n\n _this.toggleExternalForm = function () {\n _this.setState({\n showExternalForm: !_this.state.showExternalForm\n });\n };\n\n _this.cancelInsert = function () {\n _this.props.onCancel && _this.props.onCancel();\n };\n\n _this.confirmInsert = function () {\n\n var selectedItems = _this.controller.getSelectedItems();\n\n if (_this.props.onBeforeInsert) {\n\n var filteredItems = _this.props.onBeforeInsert(selectedItems);\n\n if (filteredItems && filteredItems instanceof Array) {\n _this.controller.deselectAllItems();\n _this.props.onInsert && _this.props.onInsert(filteredItems);\n } else if (filteredItems !== false) {\n _this.controller.deselectAllItems();\n _this.props.onInsert && _this.props.onInsert(selectedItems);\n }\n } else {\n _this.controller.deselectAllItems();\n _this.props.onInsert && _this.props.onInsert(selectedItems);\n }\n };\n\n _this.dragCounter = 0;\n _this.controller = _this.props.controller;\n var initialItems = _this.controller.getItems();\n\n _this.state = {\n draging: false,\n error: false,\n confirmable: initialItems.find(function (_ref3) {\n var selected = _ref3.selected;\n return selected;\n }),\n external: {\n url: '',\n type: 'IMAGE'\n },\n fileAccept: '',\n showExternalForm: false,\n allowExternal: false,\n items: initialItems\n };\n\n _this.changeListenerId = _this.controller.onChange(function (items) {\n _this.setState({ items: items, confirmable: items.find(function (_ref4) {\n var selected = _ref4.selected;\n return selected;\n }) });\n _this.props.onChange && _this.props.onChange(items);\n });\n\n return _this;\n }\n\n _createClass(BraftFinderView, [{\n key: 'mapPropsToState',\n value: function mapPropsToState(props) {\n var accepts = props.accepts,\n externals = props.externals;\n\n\n accepts = _extends({}, defaultAccepts, accepts);\n\n var fileAccept = !accepts ? [defaultAccepts.image, defaultAccepts.video, defaultAccepts.audio].join(',') : [accepts.image, accepts.video, accepts.audio].filter(function (item) {\n return item;\n }).join(',');\n\n var external = {\n url: '',\n type: externals.image ? 'IMAGE' : externals.audio ? 'AUDIO' : externals.video ? 'VIDEO' : externals.embed ? 'EMBED' : ''\n };\n\n return {\n fileAccept: fileAccept,\n external: external,\n allowExternal: externals && (externals.image || externals.audio || externals.video || externals.embed)\n };\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.setState(this.mapPropsToState(this.props));\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n this.setState(this.mapPropsToState(nextProps));\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.controller.offChange(this.changeListenerId);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n language = _props.language,\n externals = _props.externals;\n var _state = this.state,\n items = _state.items,\n draging = _state.draging,\n confirmable = _state.confirmable,\n fileAccept = _state.fileAccept,\n external = _state.external,\n showExternalForm = _state.showExternalForm,\n allowExternal = _state.allowExternal;\n\n\n return _react2.default.createElement(\n 'div',\n { className: 'braft-finder' },\n _react2.default.createElement(\n 'div',\n {\n onDragEnter: this.handleDragEnter,\n onDragOver: this.handleDragEnter,\n onDragLeave: this.handleDragLeave,\n onDrop: this.handleDragDrop,\n className: 'bf-uploader'\n },\n _react2.default.createElement(\n 'div',\n { className: \"bf-drag-uploader \" + (draging || !items.length ? 'active ' : ' ') + (draging ? 'draging' : '') },\n _react2.default.createElement(\n 'span',\n { className: 'bf-drag-tip' },\n _react2.default.createElement('input', { accept: fileAccept, onChange: this.reslovePickedFiles, multiple: true, type: 'file' }),\n draging ? language.dropTip : language.dragTip\n )\n ),\n items.length ? _react2.default.createElement(\n 'div',\n { className: 'bf-list-wrap' },\n _react2.default.createElement(\n 'div',\n { className: 'bf-list-tools' },\n _react2.default.createElement(\n 'span',\n { onClick: this.selectAllItems, className: 'bf-select-all' },\n _react2.default.createElement('i', { className: 'braft-icon-done' }),\n ' ',\n language.selectAll\n ),\n _react2.default.createElement(\n 'span',\n { onClick: this.deselectAllItems, disabled: !confirmable, className: 'bf-deselect-all' },\n _react2.default.createElement('i', { className: 'braft-icon-close' }),\n ' ',\n language.deselect\n ),\n _react2.default.createElement(\n 'span',\n { onClick: this.removeSelectedItems, disabled: !confirmable, className: 'bf-remove-selected' },\n _react2.default.createElement('i', { className: 'braft-icon-bin' }),\n ' ',\n language.removeSelected\n )\n ),\n this.buildItemList()\n ) : null,\n showExternalForm && allowExternal ? _react2.default.createElement(\n 'div',\n { className: 'bf-add-external' },\n _react2.default.createElement(\n 'div',\n { className: 'bf-external-form' },\n _react2.default.createElement(\n 'div',\n { className: 'bf-external-input' },\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { onKeyDown: this.confirmAddExternal, value: external.url, onChange: this.inputExternal, placeholder: language.externalInputPlaceHolder })\n ),\n _react2.default.createElement(\n 'button',\n { type: 'button', onClick: this.confirmAddExternal, disabled: !external.url.trim().length },\n language.confirm\n )\n ),\n _react2.default.createElement(\n 'div',\n { 'data-type': external.type, className: 'bf-switch-external-type' },\n externals.image ? _react2.default.createElement(\n 'button',\n { type: 'button', onClick: this.switchExternalType, 'data-type': 'IMAGE' },\n language.image\n ) : null,\n externals.audio ? _react2.default.createElement(\n 'button',\n { type: 'button', onClick: this.switchExternalType, 'data-type': 'AUDIO' },\n language.audio\n ) : null,\n externals.video ? _react2.default.createElement(\n 'button',\n { type: 'button', onClick: this.switchExternalType, 'data-type': 'VIDEO' },\n language.video\n ) : null,\n externals.embed ? _react2.default.createElement(\n 'button',\n { type: 'button', onClick: this.switchExternalType, 'data-type': 'EMBED' },\n language.embed\n ) : null\n ),\n _react2.default.createElement(\n 'span',\n { className: 'bf-external-tip' },\n language.externalInputTip\n )\n )\n ) : null\n ),\n _react2.default.createElement(\n 'footer',\n { className: 'bf-manager-footer' },\n _react2.default.createElement(\n 'div',\n { className: 'pull-left' },\n allowExternal ? _react2.default.createElement(\n 'span',\n {\n onClick: this.toggleExternalForm,\n className: 'bf-toggle-external-form'\n },\n showExternalForm ? _react2.default.createElement(\n 'span',\n { className: 'bf-bottom-text' },\n _react2.default.createElement('i', { className: 'braft-icon-add' }),\n ' ',\n language.addLocalFile\n ) : _react2.default.createElement(\n 'span',\n { className: 'bf-bottom-text' },\n _react2.default.createElement('i', { className: 'braft-icon-add' }),\n ' ',\n language.addExternalSource\n )\n ) : null\n ),\n _react2.default.createElement(\n 'div',\n { className: 'pull-right' },\n _react2.default.createElement(\n 'button',\n { onClick: this.confirmInsert, className: 'button button-insert', disabled: !confirmable },\n language.insert\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this.cancelInsert, className: 'button button-cancel' },\n language.cancel\n )\n )\n )\n );\n }\n }, {\n key: 'buildItemList',\n value: function buildItemList() {\n var _this2 = this;\n\n return _react2.default.createElement(\n 'ul',\n { className: 'bf-list' },\n _react2.default.createElement(\n 'li',\n { className: 'bf-add-item' },\n _react2.default.createElement('i', { className: 'braft-icon-add' }),\n _react2.default.createElement('input', { accept: this.state.fileAccept, onChange: this.reslovePickedFiles, multiple: true, type: 'file' })\n ),\n this.state.items.map(function (item, index) {\n\n var previewerComponents = null;\n var progressMarker = item.uploading && !_this2.props.hideProgress ? _react2.default.createElement(\n 'div',\n { className: 'bf-item-uploading' },\n _react2.default.createElement('div', { className: 'bf-item-uploading-bar', style: { width: item.uploadProgress / 1 + '%' } })\n ) : '';\n\n switch (item.type) {\n case 'IMAGE':\n previewerComponents = _react2.default.createElement(\n 'div',\n { className: 'bf-image' },\n progressMarker,\n _react2.default.createElement('img', { src: item.thumbnail || item.url })\n );\n break;\n case 'VIDEO':\n previewerComponents = _react2.default.createElement(\n 'div',\n { className: 'bf-icon bf-video', title: item.url },\n progressMarker,\n _react2.default.createElement('i', { className: 'braft-icon-film' }),\n _react2.default.createElement(\n 'span',\n null,\n item.name || item.url\n )\n );\n break;\n case 'AUDIO':\n previewerComponents = _react2.default.createElement(\n 'div',\n { className: 'bf-icon bf-audio', title: item.url },\n progressMarker,\n _react2.default.createElement('i', { className: 'braft-icon-music' }),\n _react2.default.createElement(\n 'span',\n null,\n item.name || item.url\n )\n );\n break;\n case 'EMBED':\n previewerComponents = _react2.default.createElement(\n 'div',\n { className: 'bf-icon bf-embed', title: item.url },\n progressMarker,\n _react2.default.createElement('i', { className: 'braft-icon-code' }),\n _react2.default.createElement(\n 'span',\n null,\n item.name || _this2.props.language.embed\n )\n );\n break;\n default:\n previewerComponents = _react2.default.createElement(\n 'a',\n { className: 'bf-icon bf-file', title: item.url, href: item.url },\n progressMarker,\n _react2.default.createElement('i', { className: 'braft-icon-file-text' }),\n _react2.default.createElement(\n 'span',\n null,\n item.name || item.url\n )\n );\n break;\n }\n\n var className = ['bf-item'];\n item.selected && className.push('active');\n item.uploading && className.push('uploading');\n item.error && className.push('error');\n\n return _react2.default.createElement(\n 'li',\n {\n key: index,\n title: item.name,\n 'data-id': item.id,\n className: className.join(' '),\n onClick: _this2.toggleSelectItem\n },\n previewerComponents,\n _react2.default.createElement('span', { 'data-id': item.id, onClick: _this2.removeItem, className: 'bf-item-remove braft-icon-close' }),\n _react2.default.createElement(\n 'span',\n { className: 'bf-item-title' },\n item.name\n )\n );\n })\n );\n }\n }]);\n\n return BraftFinderView;\n}(_react2.default.Component);\n\nBraftFinderView.defaultProps = {\n accepts: defaultAccepts,\n externals: {\n image: true,\n video: true,\n audio: true,\n embed: true\n }\n};\nexports.default = BraftFinderView;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _base = __webpack_require__(1);\n\nvar _image = __webpack_require__(0);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultValidator = function defaultValidator() {\n return true;\n};\n\nvar BraftFinderController = function BraftFinderController() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, BraftFinderController);\n\n _initialiseProps.call(this);\n\n this.items = props.items || [];\n this.uploadFn = props.uploader;\n this.validateFn = props.validator || defaultValidator;\n\n this.changeListeners = [];\n}\n\n// resolvePastedFiles ({ clipboardData }, callback) {\n\n// if (clipboardData && clipboardData.items && clipboardData.items[0].type.indexOf('image') > -1) {\n// this.uploadImage(clipboardData.items[0].getAsFile(), callback)\n// }\n\n// }\n\n;\n\nvar _initialiseProps = function _initialiseProps() {\n var _this = this;\n\n this.setProps = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\n _this.items = props.items || _this.items || [];\n _this.uploadFn = props.uploader;\n _this.validateFn = props.validator || defaultValidator;\n };\n\n this.getMediaItem = function (id) {\n return _this.items.find(function (item) {\n return item.id === id;\n });\n };\n\n this.getSelectedItems = function () {\n return _this.items.filter(function (item) {\n return item.selected;\n });\n };\n\n this.getItems = function () {\n return _this.items;\n };\n\n this.setItems = function (items) {\n _this.items = items.map(function (item) {\n return _extends({}, item, { id: item.id.toString() });\n }) || [];\n _this.applyChange();\n _this.uploadItems();\n };\n\n this.addMediaItem = function (item) {\n _this.addItems([item]);\n };\n\n this.addItems = function (items) {\n _this.items = [].concat(_toConsumableArray(_this.items), _toConsumableArray(items.map(function (item) {\n return _extends({}, item, { id: item.id.toString() });\n })));\n _this.applyChange();\n _this.uploadItems();\n };\n\n this.selectMediaItem = function (id) {\n var item = _this.getMediaItem(id);\n if (item && (item.uploading || item.error)) {\n return false;\n }\n _this.setMediaItemState(id, {\n selected: true\n });\n };\n\n this.selectAllItems = function () {\n _this.items = _this.items.filter(function (item) {\n return !item.error && !item.uploading;\n }).map(function (item) {\n return _extends({}, item, { selected: true });\n });\n _this.applyChange();\n };\n\n this.deselectMediaItem = function (id) {\n _this.setMediaItemState(id, {\n selected: false\n });\n };\n\n this.deselectAllItems = function () {\n _this.items = _this.items.map(function (item) {\n return _extends({}, item, { selected: false });\n });\n _this.applyChange();\n };\n\n this.removeMediaItem = function (id) {\n _this.items = _this.items.filter(function (item) {\n return item.id !== id;\n });\n _this.applyChange();\n };\n\n this.removeItems = function () {\n var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n _this.items = _this.items.filter(function (item) {\n return !ids.includes(item.id);\n });\n _this.applyChange();\n };\n\n this.removeSelectedItems = function () {\n _this.items = _this.items.filter(function (item) {\n return !item.selected;\n });\n _this.applyChange();\n };\n\n this.removeErrorItems = function () {\n _this.items = _this.items.filter(function (item) {\n return !item.error;\n });\n _this.applyChange();\n };\n\n this.removeAllItems = function () {\n _this.items = [];\n _this.applyChange();\n };\n\n this.setMediaItemState = function (id, state) {\n _this.items = _this.items.map(function (item) {\n return item.id === id ? _extends({}, item, state) : item;\n });\n _this.applyChange();\n };\n\n this.reuploadErrorItems = function () {\n _this.uploadItems(true);\n };\n\n this.uploadItems = function () {\n var ignoreError = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\n _this.items.forEach(function (item, index) {\n\n if (item.uploading || item.url) {\n return false;\n }\n\n if (!ignoreError && item.error) {\n return false;\n }\n\n if (item.type === 'IMAGE') {\n _this.createThumbnail(item);\n _this.uploadFn = _this.uploadFn || _this.createInlineImage;\n } else if (!_this.uploadFn) {\n _this.setMediaItemState(item.id, { error: 1 });\n return false;\n }\n\n _this.setMediaItemState(item.id, {\n uploading: true,\n uploadProgress: 0,\n error: 0\n });\n\n _this.uploadFn({\n id: item.id,\n file: item.file,\n success: function success(res) {\n _this.handleUploadSuccess(item.id, res);\n },\n progress: function progress(_progress) {\n _this.setMediaItemState(item.id, {\n uploading: true,\n uploadProgress: _progress\n });\n },\n error: function error(_error) {\n _this.setMediaItemState(item.id, {\n uploading: false,\n error: 2\n });\n }\n });\n });\n };\n\n this.createThumbnail = function (_ref) {\n var id = _ref.id,\n file = _ref.file;\n\n\n (0, _image.compressImage)(URL.createObjectURL(file), 226, 226).then(function (result) {\n _this.setMediaItemState(id, { thumbnail: result.url });\n });\n };\n\n this.createInlineImage = function (param) {\n\n (0, _image.compressImage)(URL.createObjectURL(param.file), 1280, 800).then(function (result) {\n param.success({ url: result.url });\n }).catch(function (error) {\n param.error(error);\n });\n };\n\n this.handleUploadSuccess = function (id, data) {\n\n _this.setMediaItemState(id, _extends({}, data, {\n file: null,\n uploadProgress: 1,\n uploading: false,\n selected: false\n }));\n\n var item = _this.getMediaItem(data.id || id);\n item.onReady && item.onReady(item);\n };\n\n this.applyChange = function () {\n _this.changeListeners.forEach(function (_ref2) {\n var callback = _ref2.callback;\n return callback(_this.items);\n });\n };\n\n this.uploadImage = function (file, callback) {\n\n var fileId = new Date().getTime() + '_' + (0, _base.UniqueIndex)();\n\n _this.addMediaItem({\n type: 'IMAGE',\n id: fileId,\n file: file,\n name: fileId,\n size: file.size,\n uploadProgress: 0,\n uploading: false,\n selected: false,\n error: 0,\n onReady: callback\n });\n };\n\n this.uploadImageRecursively = function (files, callback) {\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n\n if (files[index] && files[index].type.indexOf('image') > -1) {\n _this.uploadImage(files[index], function (image) {\n callback && callback(image);\n index < files.length - 1 && _this.uploadImageRecursively(files, callback, index + 1);\n });\n } else {\n index < files.length - 1 && _this.uploadImageRecursively(files, callback, index + 1);\n }\n };\n\n this.addResolvedFiles = function (param, index, accepts) {\n\n var data = {\n id: new Date().getTime() + '_' + (0, _base.UniqueIndex)(),\n file: param.files[index],\n name: param.files[index].name,\n size: param.files[index].size,\n uploadProgress: 0,\n uploading: false,\n selected: false,\n error: 0,\n onReady: function onReady(item) {\n param.onItemReady && param.onItemReady(item);\n }\n };\n\n if (param.files[index].type.indexOf('image/') === 0 && accepts.image) {\n data.type = 'IMAGE';\n _this.addMediaItem(data);\n } else if (param.files[index].type.indexOf('video/') === 0 && accepts.video) {\n data.type = 'VIDEO';\n _this.addMediaItem(data);\n } else if (param.files[index].type.indexOf('audio/') === 0 && accepts.audio) {\n data.type = 'AUDIO';\n _this.addMediaItem(data);\n }\n\n setTimeout(function () {\n _this.resolveFiles(param, index + 1, accepts);\n }, 60);\n };\n\n this.resolveFiles = function (param, index, accepts) {\n\n if (index < param.files.length) {\n\n var validateResult = _this.validateFn(param.files[index]);\n\n if (validateResult instanceof Promise) {\n validateResult.then(function () {\n _this.addResolvedFiles(param, index, accepts);\n });\n } else if (validateResult) {\n _this.addResolvedFiles(param, index, accepts);\n }\n } else {\n param.onAllReady && param.onAllReady();\n }\n };\n\n this.onChange = function (callback) {\n\n var listenerId = (0, _base.UniqueIndex)();\n\n _this.changeListeners.push({\n id: listenerId,\n callback: callback\n });\n\n return listenerId;\n };\n\n this.offChange = function (listenerId) {\n _this.changeListeners = _this.changeListeners.filter(function (_ref3) {\n var id = _ref3.id;\n return id !== listenerId;\n });\n };\n};\n\nexports.default = BraftFinderController;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ImageUtils = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _controller = __webpack_require__(19);\n\nvar _controller2 = _interopRequireDefault(_controller);\n\nvar _view = __webpack_require__(18);\n\nvar _view2 = _interopRequireDefault(_view);\n\nvar _languages = __webpack_require__(10);\n\nvar _languages2 = _interopRequireDefault(_languages);\n\nvar _image = __webpack_require__(0);\n\nvar ImageUtils = _interopRequireWildcard(_image);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BraftFinder = function (_FinderController) {\n _inherits(BraftFinder, _FinderController);\n\n function BraftFinder(props) {\n _classCallCheck(this, BraftFinder);\n\n var _this = _possibleConstructorReturn(this, (BraftFinder.__proto__ || Object.getPrototypeOf(BraftFinder)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.superProps = props;\n return _this;\n }\n\n return BraftFinder;\n}(_controller2.default);\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.ReactComponent = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\n var componentProps = _extends({}, _this2.superProps, props);\n\n var language = (typeof componentProps.language === 'function' ? componentProps.language(_languages2.default, 'braft-finder') : _languages2.default[componentProps.language]) || _languages2.default['zh'];\n\n return _react2.default.createElement(_view2.default, _extends({}, componentProps, {\n language: language,\n controller: _this2\n }));\n };\n};\n\nexports.default = BraftFinder;\nexports.ImageUtils = ImageUtils;\n\n/***/ })\n/******/ ]);\n});","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"draft-js\"),require(\"immutable\")):\"function\"==typeof define&&define.amd?define([\"draft-js\",\"immutable\"],t):\"object\"==typeof exports?exports.draftjsUtils=t(require(\"draft-js\"),require(\"immutable\")):e.draftjsUtils=t(e[\"draft-js\"],e.immutable)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=3)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";function r(e){var t=e.getSelection(),n=e.getCurrentContent(),r=t.getStartKey(),o=t.getEndKey(),i=n.getBlockMap();return i.toSeq().skipUntil(function(e,t){return t===r}).takeUntil(function(e,t){return t===o}).concat([[o,i.get(o)]])}function o(e){return r(e).toList()}function i(e){if(e)return o(e).get(0)}function l(e){if(e){var t=i(e),n=e.getCurrentContent(),r=n.getBlockMap().toSeq().toList(),o=0;if(r.forEach(function(e,n){e.get(\"key\")===t.get(\"key\")&&(o=n-1)}),o>-1)return r.get(o)}}function c(e){return e?e.getCurrentContent().getBlockMap().toList():new v.List}function a(e){var t=o(e);if(!t.some(function(e){return e.type!==t.get(0).type}))return t.get(0).type}function f(e){var t=p.RichUtils.tryToRemoveBlockStyle(e);return t?p.EditorState.push(e,t,\"change-block-type\"):e}function u(e){var t=\"\",n=e.getSelection(),r=n.getAnchorOffset(),i=n.getFocusOffset(),l=o(e);if(l.size>0){if(n.getIsBackward()){var c=r;r=i,i=c}for(var a=0;a<l.size;a+=1){var f=0===a?r:0,u=a===l.size-1?i:l.get(a).getText().length;t+=l.get(a).getText().slice(f,u)}}return t}function s(e){var t=e.getCurrentContent(),n=e.getSelection(),r=p.Modifier.removeRange(t,n,\"forward\"),o=r.getSelectionAfter(),i=r.getBlockForKey(o.getStartKey());return r=p.Modifier.insertText(r,o,\"\\n\",i.getInlineStyleAt(o.getStartOffset()),null),p.EditorState.push(e,r,\"insert-fragment\")}function g(e){var t=p.Modifier.splitBlock(e.getCurrentContent(),e.getSelection());return f(p.EditorState.push(e,t,\"split-block\"))}function d(e){var t=e.getCurrentContent().getBlockMap().toList(),n=e.getSelection().merge({anchorKey:t.first().get(\"key\"),anchorOffset:0,focusKey:t.last().get(\"key\"),focusOffset:t.last().getLength()}),r=p.Modifier.removeRange(e.getCurrentContent(),n,\"forward\");return p.EditorState.push(e,r,\"remove-range\")}function S(e,t){var n=p.Modifier.setBlockData(e.getCurrentContent(),e.getSelection(),t);return p.EditorState.push(e,n,\"change-block-data\")}function y(e){var t=new v.Map({}),n=o(e);if(n&&n.size>0)for(var r=0;r<n.size;r+=1){var i=function(e){var r=n.get(e).getData();if(!r||0===r.size)return t=t.clear(),\"break\";if(0===e)t=r;else if(t.forEach(function(e,n){r.get(n)&&r.get(n)===e||(t=t.delete(n))}),0===t.size)return t=t.clear(),\"break\"}(r);if(\"break\"===i)break}return t}Object.defineProperty(t,\"__esModule\",{value:!0}),t.blockRenderMap=void 0,t.getSelectedBlocksMap=r,t.getSelectedBlocksList=o,t.getSelectedBlock=i,t.getBlockBeforeSelectedBlock=l,t.getAllBlocks=c,t.getSelectedBlocksType=a,t.removeSelectedBlocksStyle=f,t.getSelectionText=u,t.addLineBreakRemovingSelection=s,t.insertNewUnstyledBlock=g,t.clearEditorContent=d,t.setBlockData=S,t.getSelectedBlocksMetadata=y;var p=n(0),v=n(6),k=(0,v.Map)({code:{element:\"pre\"}});t.blockRenderMap=p.DefaultDraftBlockRenderMap.merge(k)},function(e,t,n){\"use strict\";function r(e){if(e){var t=e.getType();return\"unordered-list-item\"===t||\"ordered-list-item\"===t}return!1}function o(e,t,n){var r=e.getSelection(),o=e.getCurrentContent(),i=o.getBlockMap(),l=(0,c.getSelectedBlocksMap)(e).map(function(e){var r=e.getDepth()+t;return r=Math.max(0,Math.min(r,n)),e.set(\"depth\",r)});return i=i.merge(l),o.merge({blockMap:i,selectionBefore:r,selectionAfter:r})}function i(e,t,n){var r=e.getSelection(),i=void 0;i=r.getIsBackward()?r.getFocusKey():r.getAnchorKey();var c=e.getCurrentContent(),a=c.getBlockForKey(i),f=a.getType();if(\"unordered-list-item\"!==f&&\"ordered-list-item\"!==f)return e;var u=c.getBlockBefore(i);if(!u)return e;if(u.getType()!==f)return e;var s=a.getDepth();if(1===t&&s===n)return e;var g=Math.min(u.getDepth()+1,n),d=o(e,t,g);return l.EditorState.push(e,d,\"adjust-depth\")}Object.defineProperty(t,\"__esModule\",{value:!0}),t.isListBlock=r,t.changeDepth=i;var l=n(0),c=n(1)},function(e,t,n){e.exports=n(4)},function(e,t,n){\"use strict\";var r=n(5),o=n(1),i=n(7),l=function(e){return e&&e.__esModule?e:{default:e}}(i),c=n(2);e.exports={getSelectedBlocksMap:o.getSelectedBlocksMap,getSelectedBlocksList:o.getSelectedBlocksList,getSelectedBlock:o.getSelectedBlock,getBlockBeforeSelectedBlock:o.getBlockBeforeSelectedBlock,getAllBlocks:o.getAllBlocks,getSelectedBlocksType:o.getSelectedBlocksType,removeSelectedBlocksStyle:o.removeSelectedBlocksStyle,getSelectionText:o.getSelectionText,addLineBreakRemovingSelection:o.addLineBreakRemovingSelection,insertNewUnstyledBlock:o.insertNewUnstyledBlock,clearEditorContent:o.clearEditorContent,setBlockData:o.setBlockData,getSelectedBlocksMetadata:o.getSelectedBlocksMetadata,blockRenderMap:o.blockRenderMap,getEntityRange:r.getEntityRange,getCustomStyleMap:r.getCustomStyleMap,toggleCustomInlineStyle:r.toggleCustomInlineStyle,getSelectionEntity:r.getSelectionEntity,extractInlineStyle:r.extractInlineStyle,removeAllInlineStyles:r.removeAllInlineStyles,getSelectionInlineStyle:r.getSelectionInlineStyle,getSelectionCustomInlineStyle:r.getSelectionCustomInlineStyle,handleNewLine:l.default,isListBlock:c.isListBlock,changeDepth:c.changeDepth}},function(e,t,n){\"use strict\";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){var t=e.getSelection();if(t.isCollapsed()){var n={},r=e.getCurrentInlineStyle().toList().toJS();if(r)return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(e){n[e]=r.indexOf(e)>=0}),n}var o=t.getStartOffset(),i=t.getEndOffset(),l=(0,p.getSelectedBlocksList)(e);if(l.size>0){var c=function(){for(var e={BOLD:!0,ITALIC:!0,UNDERLINE:!0,STRIKETHROUGH:!0,CODE:!0,SUPERSCRIPT:!0,SUBSCRIPT:!0},t=0;t<l.size;t+=1){var n=0===t?o:0,r=t===l.size-1?i:l.get(t).getText().length;n===r&&0===n?(n=1,r=2):n===r&&(n-=1);for(var c=n;c<r;c+=1)!function(n){var r=l.get(t).getInlineStyleAt(n);[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(t){e[t]=e[t]&&r.get(t)===t})}(c)}return{v:e}}();if(\"object\"===(void 0===c?\"undefined\":S(c)))return c.v}return{}}function i(e){var t=void 0,n=e.getSelection(),r=n.getStartOffset(),o=n.getEndOffset();r===o&&0===r?o=1:r===o&&(r-=1);for(var i=(0,p.getSelectedBlock)(e),l=r;l<o;l+=1){var c=i.getEntityAt(l);if(!c){t=void 0;break}if(l===r)t=c;else if(t!==c){t=void 0;break}}return t}function l(e,t){var n=(0,p.getSelectedBlock)(e),r=void 0;return n.findEntityRanges(function(e){return e.get(\"entity\")===t},function(e,t){r={start:e,end:t,text:n.get(\"text\").slice(e,t)}}),r}function c(e,t,n){var r=e.getSelection(),o=Object.keys(v[t]).reduce(function(e,t){return y.Modifier.removeInlineStyle(e,r,t)},e.getCurrentContent()),i=y.EditorState.push(e,o,\"changeinline-style\"),l=e.getCurrentInlineStyle();if(r.isCollapsed()&&(i=l.reduce(function(e,t){return y.RichUtils.toggleInlineStyle(e,t)},i)),\"SUPERSCRIPT\"===t||\"SUBSCRIPT\"==t)l.has(n)||(i=y.RichUtils.toggleInlineStyle(i,n));else{var c=\"bgcolor\"===t?\"backgroundColor\":t;l.has(c+\"-\"+n)||(i=y.RichUtils.toggleInlineStyle(i,t.toLowerCase()+\"-\"+n),k(t,c,n))}return i}function a(e){if(e){e.getCurrentContent().getBlockMap().map(function(e){return e.get(\"characterList\")}).toList().flatten().forEach(function(e){e&&0===e.indexOf(\"color-\")?k(\"color\",\"color\",e.substr(6)):e&&0===e.indexOf(\"bgcolor-\")?k(\"bgcolor\",\"backgroundColor\",e.substr(8)):e&&0===e.indexOf(\"fontsize-\")?k(\"fontSize\",\"fontSize\",+e.substr(9)):e&&0===e.indexOf(\"fontfamily-\")&&k(\"fontFamily\",\"fontFamily\",e.substr(11))})}}function f(e,t,n){var r=e.getInlineStyleAt(n).toList(),o=r.filter(function(e){return e.startsWith(t.toLowerCase())});if(o&&o.size>0)return o.get(0)}function u(e,t){var n=e.getCurrentInlineStyle().toList(),r=n.filter(function(e){return e.startsWith(t.toLowerCase())});if(r&&r.size>0)return r.get(0)}function s(e,t){if(e&&t&&t.length>0){var n=function(){var n=e.getSelection(),r={};if(n.isCollapsed())return t.forEach(function(t){r[t]=u(e,t)}),{v:r};var o=n.getStartOffset(),i=n.getEndOffset(),l=(0,p.getSelectedBlocksList)(e);if(l.size>0){for(var c=0;c<l.size;c+=1)!function(e){var n=0===e?o:0,c=e===l.size-1?i:l.get(e).getText().length;n===c&&0===n?(n=1,c=2):n===c&&(n-=1);for(var a=n;a<c;a+=1)!function(o){o===n?t.forEach(function(t){r[t]=f(l.get(e),t,o)}):t.forEach(function(t){r[t]&&r[t]!==f(l.get(e),t,o)&&(r[t]=void 0)})}(a)}(c);return{v:r}}}();if(\"object\"===(void 0===n?\"undefined\":S(n)))return n.v}return{}}function g(e){var t=e.getCurrentInlineStyle(),n=e.getCurrentContent();return t.forEach(function(t){n=y.Modifier.removeInlineStyle(n,e.getSelection(),t)}),y.EditorState.push(e,n,\"change-inline-style\")}Object.defineProperty(t,\"__esModule\",{value:!0}),t.getCustomStyleMap=void 0;var d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},S=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};t.getSelectionInlineStyle=o,t.getSelectionEntity=i,t.getEntityRange=l,t.toggleCustomInlineStyle=c,t.extractInlineStyle=a,t.getSelectionCustomInlineStyle=s,t.removeAllInlineStyles=g;var y=n(0),p=n(1),v={color:{},bgcolor:{},fontSize:{},fontFamily:{},CODE:{fontFamily:\"monospace\",wordWrap:\"break-word\",background:\"#f1f1f1\",borderRadius:3,padding:\"1px 3px\"},SUPERSCRIPT:{fontSize:11,position:\"relative\",top:-8,display:\"inline-flex\"},SUBSCRIPT:{fontSize:11,position:\"relative\",bottom:-8,display:\"inline-flex\"}},k=function(e,t,n){v[e][e.toLowerCase()+\"-\"+n]=r({},\"\"+t,n)};t.getCustomStyleMap=function(){return d({},v.color,v.bgcolor,v.fontSize,v.fontFamily,{CODE:v.CODE,SUPERSCRIPT:v.SUPERSCRIPT,SUBSCRIPT:v.SUBSCRIPT})}},function(e,n){e.exports=t},function(e,t,n){\"use strict\";function r(e){var t=e.getSelection();if(t.isCollapsed()){var n=e.getCurrentContent(),r=t.getStartKey(),o=n.getBlockForKey(r);if(!(0,a.isListBlock)(o)&&\"unstyled\"!==o.getType()&&o.getLength()===t.getStartOffset())return(0,c.insertNewUnstyledBlock)(e);if((0,a.isListBlock)(o)&&0===o.getLength()){var i=o.getDepth();if(0===i)return(0,c.removeSelectedBlocksStyle)(e);if(i>0)return(0,a.changeDepth)(e,-1,i)}}}function o(e){return 13===e.which&&(e.getModifierState(\"Shift\")||e.getModifierState(\"Alt\")||e.getModifierState(\"Control\"))}function i(e,t){if(o(t)){return e.getSelection().isCollapsed()?l.RichUtils.insertSoftNewline(e):(0,c.addLineBreakRemovingSelection)(e)}return r(e)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=i;var l=n(0),c=n(1),a=n(2)}])});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"braft-utils\"), require(\"draft-js\"), require(\"immutable\"), require(\"braft-convert\"), require(\"react-dom\"), require(\"braft-finder\"), require(\"draftjs-utils\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"braft-utils\", \"draft-js\", \"immutable\", \"braft-convert\", \"react-dom\", \"braft-finder\", \"draftjs-utils\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"react\"), require(\"braft-utils\"), require(\"draft-js\"), require(\"immutable\"), require(\"braft-convert\"), require(\"react-dom\"), require(\"braft-finder\"), require(\"draftjs-utils\")) : factory(root[\"react\"], root[\"braft-utils\"], root[\"draft-js\"], root[\"immutable\"], root[\"braft-convert\"], root[\"react-dom\"], root[\"braft-finder\"], root[\"draftjs-utils\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__3__, __WEBPACK_EXTERNAL_MODULE__6__, __WEBPACK_EXTERNAL_MODULE__13__, __WEBPACK_EXTERNAL_MODULE__14__, __WEBPACK_EXTERNAL_MODULE__16__, __WEBPACK_EXTERNAL_MODULE__17__, __WEBPACK_EXTERNAL_MODULE__23__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 39);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__3__;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(2);\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(15);\n\nvar assertThisInitialized = __webpack_require__(1);\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nfunction _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar setPrototypeOf = __webpack_require__(26);\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\nfunction _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayWithoutHoles = __webpack_require__(27);\n\nvar iterableToArray = __webpack_require__(28);\n\nvar nonIterableSpread = __webpack_require__(29);\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__13__;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__14__;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nfunction _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__16__;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__17__;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Immutable = __webpack_require__(13);\n\nvar KEY_SEPARATOR = '-';\n\nfunction MultiDecorator(decorators) {\n this.decorators = Immutable.List(decorators);\n}\n\n/**\n Return list of decoration IDs per character\n\n @param {ContentBlock}\n @return {List<String>}\n*/\nMultiDecorator.prototype.getDecorations = function(block) {\n var decorations = Array(block.getText().length).fill(null);\n\n this.decorators.forEach(function(decorator, i) {\n var _decorations = decorator.getDecorations(block);\n\n _decorations.forEach(function(key, offset) {\n if (!key) {\n return;\n }\n\n key = i + KEY_SEPARATOR + key;\n\n decorations[offset] = key;\n });\n });\n\n return Immutable.List(decorations);\n};\n\n/**\n Return component to render a decoration\n\n @param {String}\n @return {Function}\n*/\nMultiDecorator.prototype.getComponentForKey = function(key) {\n var decorator = this.getDecoratorForKey(key);\n return decorator.getComponentForKey(\n this.getInnerKey(key)\n );\n};\n\n/**\n Return props to render a decoration\n\n @param {String}\n @return {Object}\n*/\nMultiDecorator.prototype.getPropsForKey = function(key) {\n var decorator = this.getDecoratorForKey(key);\n return decorator.getPropsForKey(\n this.getInnerKey(key)\n );\n};\n\n/**\n Return a decorator for a specific key\n\n @param {String}\n @return {Decorator}\n*/\nMultiDecorator.prototype.getDecoratorForKey = function(key) {\n var parts = key.split(KEY_SEPARATOR);\n var index = Number(parts[0]);\n\n return this.decorators.get(index);\n};\n\n/**\n Return inner key for a decorator\n\n @param {String}\n @return {String}\n*/\nMultiDecorator.prototype.getInnerKey = function(key) {\n var parts = key.split(KEY_SEPARATOR);\n return parts.slice(1).join(KEY_SEPARATOR);\n};\n\nmodule.exports = MultiDecorator;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CharacterMetadata\n * @format\n * \n */\n\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _require = __webpack_require__(13),\n Map = _require.Map,\n OrderedSet = _require.OrderedSet,\n Record = _require.Record;\n\n// Immutable.map is typed such that the value for every key in the map\n// must be the same type\n\n\nvar EMPTY_SET = OrderedSet();\n\nvar defaultRecord = {\n style: EMPTY_SET,\n entity: null\n};\n\nvar CharacterMetadataRecord = Record(defaultRecord);\n\nvar CharacterMetadata = function (_CharacterMetadataRec) {\n _inherits(CharacterMetadata, _CharacterMetadataRec);\n\n function CharacterMetadata() {\n _classCallCheck(this, CharacterMetadata);\n\n return _possibleConstructorReturn(this, _CharacterMetadataRec.apply(this, arguments));\n }\n\n CharacterMetadata.prototype.getStyle = function getStyle() {\n return this.get('style');\n };\n\n CharacterMetadata.prototype.getEntity = function getEntity() {\n return this.get('entity');\n };\n\n CharacterMetadata.prototype.hasStyle = function hasStyle(style) {\n return this.getStyle().includes(style);\n };\n\n CharacterMetadata.applyStyle = function applyStyle(record, style) {\n var withStyle = record.set('style', record.getStyle().add(style));\n return CharacterMetadata.create(withStyle);\n };\n\n CharacterMetadata.removeStyle = function removeStyle(record, style) {\n var withoutStyle = record.set('style', record.getStyle().remove(style));\n return CharacterMetadata.create(withoutStyle);\n };\n\n CharacterMetadata.applyEntity = function applyEntity(record, entityKey) {\n var withEntity = record.getEntity() === entityKey ? record : record.set('entity', entityKey);\n return CharacterMetadata.create(withEntity);\n };\n\n /**\n * Use this function instead of the `CharacterMetadata` constructor.\n * Since most content generally uses only a very small number of\n * style/entity permutations, we can reuse these objects as often as\n * possible.\n */\n\n\n CharacterMetadata.create = function create(config) {\n if (!config) {\n return EMPTY;\n }\n\n var defaultConfig = {\n style: EMPTY_SET,\n entity: null\n };\n\n // Fill in unspecified properties, if necessary.\n var configMap = Map(defaultConfig).merge(config);\n\n var existing = pool.get(configMap);\n if (existing) {\n return existing;\n }\n\n var newCharacter = new CharacterMetadata(configMap);\n pool = pool.set(configMap, newCharacter);\n return newCharacter;\n };\n\n return CharacterMetadata;\n}(CharacterMetadataRecord);\n\nvar EMPTY = new CharacterMetadata();\nvar pool = Map([[Map(defaultRecord), EMPTY]]);\n\nCharacterMetadata.EMPTY = EMPTY;\n\nmodule.exports = CharacterMetadata;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule findRangesImmutable\n * @format\n * \n */\n\n\n\n/**\n * Search through an array to find contiguous stretches of elements that\n * match a specified filter function.\n *\n * When ranges are found, execute a specified `found` function to supply\n * the values to the caller.\n */\nfunction findRangesImmutable(haystack, areEqualFn, filterFn, foundFn) {\n if (!haystack.size) {\n return;\n }\n\n var cursor = 0;\n\n haystack.reduce(function (value, nextValue, nextIndex) {\n if (!areEqualFn(value, nextValue)) {\n if (filterFn(value)) {\n foundFn(cursor, nextIndex);\n }\n cursor = nextIndex;\n }\n return nextValue;\n });\n\n filterFn(haystack.last()) && foundFn(cursor, haystack.count());\n}\n\nmodule.exports = findRangesImmutable;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar objectWithoutPropertiesLoose = __webpack_require__(25);\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getFragmentFromSelection\n * @format\n * \n */\n\n\n\nvar getContentStateFragment = __webpack_require__(30);\n\nfunction getFragmentFromSelection(editorState) {\n var selectionState = editorState.getSelection();\n\n if (selectionState.isCollapsed()) {\n return null;\n }\n\n return getContentStateFragment(editorState.getCurrentContent(), selectionState);\n}\n\nmodule.exports = getFragmentFromSelection;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__23__;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayWithHoles = __webpack_require__(36);\n\nvar iterableToArrayLimit = __webpack_require__(37);\n\nvar nonIterableRest = __webpack_require__(38);\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports) {\n\nfunction _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports) {\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports) {\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getContentStateFragment\n * @format\n * \n */\n\n\n\nvar randomizeBlockMapKeys = __webpack_require__(31);\nvar removeEntitiesAtEdges = __webpack_require__(34);\n\nvar getContentStateFragment = function getContentStateFragment(contentState, selectionState) {\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n\n // Edge entities should be stripped to ensure that we don't preserve\n // invalid partial entities when the fragment is reused. We do, however,\n // preserve entities that are entirely within the selection range.\n var contentWithoutEdgeEntities = removeEntitiesAtEdges(contentState, selectionState);\n\n var blockMap = contentWithoutEdgeEntities.getBlockMap();\n var blockKeys = blockMap.keySeq();\n var startIndex = blockKeys.indexOf(startKey);\n var endIndex = blockKeys.indexOf(endKey) + 1;\n\n return randomizeBlockMapKeys(blockMap.slice(startIndex, endIndex).map(function (block, blockKey) {\n var text = block.getText();\n var chars = block.getCharacterList();\n\n if (startKey === endKey) {\n return block.merge({\n text: text.slice(startOffset, endOffset),\n characterList: chars.slice(startOffset, endOffset)\n });\n }\n\n if (blockKey === startKey) {\n return block.merge({\n text: text.slice(startOffset),\n characterList: chars.slice(startOffset)\n });\n }\n\n if (blockKey === endKey) {\n return block.merge({\n text: text.slice(0, endOffset),\n characterList: chars.slice(0, endOffset)\n });\n }\n\n return block;\n }));\n};\n\nmodule.exports = getContentStateFragment;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule randomizeBlockMapKeys\n * @format\n * \n */\n\n\n\nvar ContentBlockNode = __webpack_require__(32);\nvar Immutable = __webpack_require__(13);\n\nvar generateRandomKey = __webpack_require__(33);\n\nvar OrderedMap = Immutable.OrderedMap;\n\n\nvar randomizeContentBlockNodeKeys = function randomizeContentBlockNodeKeys(blockMap) {\n var newKeysRef = {};\n\n // we keep track of root blocks in order to update subsequent sibling links\n var lastRootBlock = void 0;\n\n return OrderedMap(blockMap.withMutations(function (blockMapState) {\n blockMapState.forEach(function (block, index) {\n var oldKey = block.getKey();\n var nextKey = block.getNextSiblingKey();\n var prevKey = block.getPrevSiblingKey();\n var childrenKeys = block.getChildKeys();\n var parentKey = block.getParentKey();\n\n // new key that we will use to build linking\n var key = generateRandomKey();\n\n // we will add it here to re-use it later\n newKeysRef[oldKey] = key;\n\n if (nextKey) {\n var nextBlock = blockMapState.get(nextKey);\n if (nextBlock) {\n blockMapState.setIn([nextKey, 'prevSibling'], key);\n } else {\n // this can happen when generating random keys for fragments\n blockMapState.setIn([oldKey, 'nextSibling'], null);\n }\n }\n\n if (prevKey) {\n var prevBlock = blockMapState.get(prevKey);\n if (prevBlock) {\n blockMapState.setIn([prevKey, 'nextSibling'], key);\n } else {\n // this can happen when generating random keys for fragments\n blockMapState.setIn([oldKey, 'prevSibling'], null);\n }\n }\n\n if (parentKey && blockMapState.get(parentKey)) {\n var parentBlock = blockMapState.get(parentKey);\n var parentChildrenList = parentBlock.getChildKeys();\n blockMapState.setIn([parentKey, 'children'], parentChildrenList.set(parentChildrenList.indexOf(block.getKey()), key));\n } else {\n // blocks will then be treated as root block nodes\n blockMapState.setIn([oldKey, 'parent'], null);\n\n if (lastRootBlock) {\n blockMapState.setIn([lastRootBlock.getKey(), 'nextSibling'], key);\n blockMapState.setIn([oldKey, 'prevSibling'], newKeysRef[lastRootBlock.getKey()]);\n }\n\n lastRootBlock = blockMapState.get(oldKey);\n }\n\n childrenKeys.forEach(function (childKey) {\n var childBlock = blockMapState.get(childKey);\n if (childBlock) {\n blockMapState.setIn([childKey, 'parent'], key);\n } else {\n blockMapState.setIn([oldKey, 'children'], block.getChildKeys().filter(function (child) {\n return child !== childKey;\n }));\n }\n });\n });\n }).toArray().map(function (block) {\n return [newKeysRef[block.getKey()], block.set('key', newKeysRef[block.getKey()])];\n }));\n};\n\nvar randomizeContentBlockKeys = function randomizeContentBlockKeys(blockMap) {\n return OrderedMap(blockMap.toArray().map(function (block) {\n var key = generateRandomKey();\n return [key, block.set('key', key)];\n }));\n};\n\nvar randomizeBlockMapKeys = function randomizeBlockMapKeys(blockMap) {\n var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n\n if (!isTreeBasedBlockMap) {\n return randomizeContentBlockKeys(blockMap);\n }\n\n return randomizeContentBlockNodeKeys(blockMap);\n};\n\nmodule.exports = randomizeBlockMapKeys;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ContentBlockNode\n * @format\n * \n *\n * This file is a fork of ContentBlock adding support for nesting references by\n * providing links to children, parent, prevSibling, and nextSibling.\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = __webpack_require__(19);\nvar Immutable = __webpack_require__(13);\n\nvar findRangesImmutable = __webpack_require__(20);\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\n\n\nvar EMPTY_SET = OrderedSet();\n\nvar defaultRecord = {\n parent: null,\n characterList: List(),\n data: Map(),\n depth: 0,\n key: '',\n text: '',\n type: 'unstyled',\n children: List(),\n prevSibling: null,\n nextSibling: null\n};\n\nvar haveEqualStyle = function haveEqualStyle(charA, charB) {\n return charA.getStyle() === charB.getStyle();\n};\n\nvar haveEqualEntity = function haveEqualEntity(charA, charB) {\n return charA.getEntity() === charB.getEntity();\n};\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n if (!config) {\n return config;\n }\n\n var characterList = config.characterList,\n text = config.text;\n\n\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlockNode = function (_Record) {\n _inherits(ContentBlockNode, _Record);\n\n function ContentBlockNode() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultRecord;\n\n _classCallCheck(this, ContentBlockNode);\n\n return _possibleConstructorReturn(this, _Record.call(this, decorateCharacterList(props)));\n }\n\n ContentBlockNode.prototype.getKey = function getKey() {\n return this.get('key');\n };\n\n ContentBlockNode.prototype.getType = function getType() {\n return this.get('type');\n };\n\n ContentBlockNode.prototype.getText = function getText() {\n return this.get('text');\n };\n\n ContentBlockNode.prototype.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n ContentBlockNode.prototype.getLength = function getLength() {\n return this.getText().length;\n };\n\n ContentBlockNode.prototype.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n ContentBlockNode.prototype.getData = function getData() {\n return this.get('data');\n };\n\n ContentBlockNode.prototype.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n ContentBlockNode.prototype.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n };\n\n ContentBlockNode.prototype.getChildKeys = function getChildKeys() {\n return this.get('children');\n };\n\n ContentBlockNode.prototype.getParentKey = function getParentKey() {\n return this.get('parent');\n };\n\n ContentBlockNode.prototype.getPrevSiblingKey = function getPrevSiblingKey() {\n return this.get('prevSibling');\n };\n\n ContentBlockNode.prototype.getNextSiblingKey = function getNextSiblingKey() {\n return this.get('nextSibling');\n };\n\n ContentBlockNode.prototype.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n };\n\n ContentBlockNode.prototype.findEntityRanges = function findEntityRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n };\n\n return ContentBlockNode;\n}(Record(defaultRecord));\n\nmodule.exports = ContentBlockNode;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule generateRandomKey\n * @format\n * \n */\n\n\n\nvar seenKeys = {};\nvar MULTIPLIER = Math.pow(2, 24);\n\nfunction generateRandomKey() {\n var key = void 0;\n while (key === undefined || seenKeys.hasOwnProperty(key) || !isNaN(+key)) {\n key = Math.floor(Math.random() * MULTIPLIER).toString(32);\n }\n seenKeys[key] = true;\n return key;\n}\n\nmodule.exports = generateRandomKey;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule removeEntitiesAtEdges\n * @format\n * \n */\n\n\n\nvar CharacterMetadata = __webpack_require__(19);\n\nvar findRangesImmutable = __webpack_require__(20);\nvar invariant = __webpack_require__(35);\n\nfunction removeEntitiesAtEdges(contentState, selectionState) {\n var blockMap = contentState.getBlockMap();\n var entityMap = contentState.getEntityMap();\n\n var updatedBlocks = {};\n\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var startBlock = blockMap.get(startKey);\n var updatedStart = removeForBlock(entityMap, startBlock, startOffset);\n\n if (updatedStart !== startBlock) {\n updatedBlocks[startKey] = updatedStart;\n }\n\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var endBlock = blockMap.get(endKey);\n if (startKey === endKey) {\n endBlock = updatedStart;\n }\n\n var updatedEnd = removeForBlock(entityMap, endBlock, endOffset);\n\n if (updatedEnd !== endBlock) {\n updatedBlocks[endKey] = updatedEnd;\n }\n\n if (!Object.keys(updatedBlocks).length) {\n return contentState.set('selectionAfter', selectionState);\n }\n\n return contentState.merge({\n blockMap: blockMap.merge(updatedBlocks),\n selectionAfter: selectionState\n });\n}\n\nfunction getRemovalRange(characters, key, offset) {\n var removalRange;\n findRangesImmutable(characters, function (a, b) {\n return a.getEntity() === b.getEntity();\n }, function (element) {\n return element.getEntity() === key;\n }, function (start, end) {\n if (start <= offset && end >= offset) {\n removalRange = { start: start, end: end };\n }\n });\n !(typeof removalRange === 'object') ? false ? undefined : invariant(false) : void 0;\n return removalRange;\n}\n\nfunction removeForBlock(entityMap, block, offset) {\n var chars = block.getCharacterList();\n var charBefore = offset > 0 ? chars.get(offset - 1) : undefined;\n var charAfter = offset < chars.count() ? chars.get(offset) : undefined;\n var entityBeforeCursor = charBefore ? charBefore.getEntity() : undefined;\n var entityAfterCursor = charAfter ? charAfter.getEntity() : undefined;\n\n if (entityAfterCursor && entityAfterCursor === entityBeforeCursor) {\n var entity = entityMap.__get(entityAfterCursor);\n if (entity.getMutability() !== 'MUTABLE') {\n var _getRemovalRange = getRemovalRange(chars, entityAfterCursor, offset),\n start = _getRemovalRange.start,\n end = _getRemovalRange.end;\n\n var current;\n while (start < end) {\n current = chars.get(start);\n chars = chars.set(start, CharacterMetadata.applyEntity(current, null));\n start++;\n }\n return block.set('characterList', chars);\n }\n }\n\n return block;\n}\n\nmodule.exports = removeEntitiesAtEdges;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (false) {}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/typeof.js\nvar helpers_typeof = __webpack_require__(15);\nvar typeof_default = /*#__PURE__*/__webpack_require__.n(helpers_typeof);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/objectSpread.js\nvar objectSpread = __webpack_require__(5);\nvar objectSpread_default = /*#__PURE__*/__webpack_require__.n(objectSpread);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/objectWithoutProperties.js\nvar objectWithoutProperties = __webpack_require__(21);\nvar objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(objectWithoutProperties);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/classCallCheck.js\nvar classCallCheck = __webpack_require__(4);\nvar classCallCheck_default = /*#__PURE__*/__webpack_require__.n(classCallCheck);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/createClass.js\nvar createClass = __webpack_require__(7);\nvar createClass_default = /*#__PURE__*/__webpack_require__.n(createClass);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\nvar possibleConstructorReturn = __webpack_require__(8);\nvar possibleConstructorReturn_default = /*#__PURE__*/__webpack_require__.n(possibleConstructorReturn);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/getPrototypeOf.js\nvar getPrototypeOf = __webpack_require__(9);\nvar getPrototypeOf_default = /*#__PURE__*/__webpack_require__.n(getPrototypeOf);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/inherits.js\nvar inherits = __webpack_require__(10);\nvar inherits_default = /*#__PURE__*/__webpack_require__.n(inherits);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/assertThisInitialized.js\nvar assertThisInitialized = __webpack_require__(1);\nvar assertThisInitialized_default = /*#__PURE__*/__webpack_require__.n(assertThisInitialized);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/defineProperty.js\nvar defineProperty = __webpack_require__(2);\nvar defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/toConsumableArray.js\nvar toConsumableArray = __webpack_require__(12);\nvar toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);\n\n// EXTERNAL MODULE: ../node_modules/draft-js/dist/Draft.css\nvar Draft = __webpack_require__(40);\n\n// EXTERNAL MODULE: ./assets/scss/_base.scss\nvar _base = __webpack_require__(42);\n\n// EXTERNAL MODULE: external \"react\"\nvar external_react_ = __webpack_require__(0);\nvar external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);\n\n// CONCATENATED MODULE: ./languages/en.js\n/* harmony default export */ var en = ({\n base: {\n remove: 'Remove',\n cancel: 'Cancel',\n confirm: 'Confirm',\n inert: 'Insert',\n width: 'Width',\n height: 'Height'\n },\n controls: {\n clear: 'Clear',\n undo: 'Undo',\n redo: 'Redo',\n fontSize: 'Font Size',\n color: 'Color',\n textColor: 'Text',\n tempColors: 'Temp Colors',\n backgroundColor: 'Background',\n bold: 'Bold',\n lineHeight: 'Line Height',\n letterSpacing: 'Letter Spacing',\n textIndent: 'Text Indent',\n increaseIndent: 'Increase Indent',\n decreaseIndent: 'Decrease Indent',\n italic: 'Italic',\n underline: 'Underline',\n strikeThrough: 'Strike Through',\n fontFamily: 'Font Family',\n textAlign: 'Text Alignment',\n alignLeft: 'Left Alignment',\n alignCenter: 'Center Alignment',\n alignRight: 'Right Alignment',\n alignJustify: 'Justify Alignment',\n floatLeft: 'Left Float',\n floatRight: 'Right Float',\n superScript: 'Super Script',\n subScript: 'Sub Script',\n removeStyles: 'Remove Styles',\n headings: 'Headings',\n header: 'Header',\n normal: 'Normal',\n orderedList: 'Ordered List',\n unorderedList: 'Unordered List',\n blockQuote: 'Quote',\n code: 'Code',\n link: 'Link',\n unlink: 'Unlink',\n hr: 'Horizontal Line',\n media: 'Media',\n mediaLibirary: 'Media Library',\n emoji: 'Emoji',\n fullscreen: 'Fullscreen',\n exitFullscreen: 'Exit Fullscreen'\n },\n linkEditor: {\n textInputPlaceHolder: 'Input link text',\n linkInputPlaceHolder: 'Input link URL',\n inputWithEnterPlaceHolder: 'Input link URL and press Enter',\n openInNewWindow: 'Open in new window',\n removeLink: 'Remove Link'\n },\n audioPlayer: {\n title: 'Play Audio'\n },\n videoPlayer: {\n title: 'Play Video',\n embedTitle: 'Embed Media'\n },\n media: {\n image: 'Image',\n video: 'Video',\n audio: 'Audio',\n embed: 'Embed'\n }\n});\n// CONCATENATED MODULE: ./languages/zh.js\n/* harmony default export */ var zh = ({\n base: {\n remove: '删除',\n cancel: '取消',\n confirm: '确定',\n inert: '插入',\n width: '宽度',\n height: '高度'\n },\n controls: {\n clear: '清除内容',\n undo: '撤销',\n redo: '重做',\n fontSize: '字号',\n lineHeight: '行高',\n letterSpacing: '字间距',\n textIndent: '段落缩进',\n increaseIndent: '增加缩进',\n decreaseIndent: '减少缩进',\n border: '边框',\n color: '颜色',\n textColor: '文字颜色',\n backgroundColor: '背景颜色',\n tempColors: '临时颜色',\n bold: '加粗',\n italic: '斜体',\n underline: '下划线',\n strikeThrough: '删除线',\n fontFamily: '字体',\n textAlign: '文本对齐',\n alignLeft: '居左',\n alignCenter: '居中',\n alignRight: '居右',\n alignJustify: '两端',\n floatLeft: '左浮动',\n floatRight: '右浮动',\n superScript: '上标',\n subScript: '下标',\n removeStyles: '清除样式',\n headings: '标题',\n header: '标题',\n normal: '常规',\n orderedList: '有序列表',\n unorderedList: '无序列表',\n blockQuote: '引用',\n code: '代码',\n link: '链接',\n unlink: '清除链接',\n hr: '水平线',\n media: '媒体',\n mediaLibirary: '媒体库',\n emoji: '小表情',\n fullscreen: '全屏',\n exitFullscreen: '退出全屏'\n },\n linkEditor: {\n textInputPlaceHolder: '输入链接文字',\n linkInputPlaceHolder: '输入链接地址',\n inputWithEnterPlaceHolder: '输入链接地址并回车',\n openInNewWindow: '在新窗口打开',\n removeLink: '移除链接'\n },\n audioPlayer: {\n title: '播放音频文件'\n },\n videoPlayer: {\n title: '播放视频文件',\n embedTitle: '嵌入式媒体'\n },\n media: {\n image: '图像',\n video: '视频',\n audio: '音频',\n embed: '嵌入式媒体'\n }\n});\n// CONCATENATED MODULE: ./languages/zh-hant.js\n/* harmony default export */ var zh_hant = ({\n base: {\n remove: '刪除',\n cancel: '取消',\n confirm: '確定',\n inert: '插入',\n width: '宽度',\n height: '高度'\n },\n controls: {\n clear: '清除内容',\n undo: '撤銷',\n redo: '重做',\n fontSize: '字號',\n color: '顏色',\n textColor: '文字顏色',\n backgroundColor: '背景顏色',\n tempColors: '臨時顏色',\n bold: '加粗',\n lineHeight: '行高',\n letterSpacing: '字間距',\n textIndent: '段落縮進',\n increaseIndent: '增加縮進',\n decreaseIndent: '减少縮進',\n border: '邊框',\n italic: '斜體',\n underline: '下劃線',\n strikeThrough: '刪除線',\n fontFamily: '字體',\n textAlign: '文本對齊',\n alignLeft: '居左',\n alignCenter: '居中',\n alignRight: '居右',\n alignJustify: '兩端對齊',\n floatLeft: '左浮動',\n floatRight: '右浮動',\n superScript: '上標',\n subScript: '下標',\n removeStyles: '清除样式',\n headings: '標題',\n header: '標題',\n normal: '常規',\n orderedList: '有序列表',\n unorderedList: '無序列表',\n blockQuote: '引用',\n code: '代碼',\n link: '鏈接',\n unlink: '清除鏈接',\n hr: '水平线',\n media: '媒體',\n mediaLibirary: '媒體库',\n emoji: '小表情',\n fullscreen: '全熒幕',\n exitFullscreen: '退出全熒幕'\n },\n linkEditor: {\n textInputPlaceHolder: '輸入鏈接文字',\n linkInputPlaceHolder: '輸入鏈接地址',\n inputWithEnterPlaceHolder: '輸入鏈接地址並回車',\n openInNewWindow: '在新窗口打開',\n removeLink: '移除鏈接'\n },\n audioPlayer: {\n title: '播放音頻文件'\n },\n videoPlayer: {\n title: '播放視頻文件',\n embedTitle: '嵌入式媒體'\n },\n media: {\n image: '圖像',\n video: '視頻',\n audio: '音頻',\n embed: '嵌入式媒體'\n }\n});\n// CONCATENATED MODULE: ./languages/pl.js\n/* harmony default export */ var pl = ({\n base: {\n remove: 'Usuń',\n cancel: 'Anuluj',\n confirm: 'Potwierdź',\n inert: 'Wstaw',\n width: 'Szerokość',\n height: 'Wysokość'\n },\n controls: {\n clear: 'Wyczyść',\n undo: 'Cofnij',\n redo: 'Przywróć',\n fontSize: 'Wielkość',\n color: 'Kolor',\n textColor: 'Kolor tekstu',\n tempColors: 'Kolory',\n backgroundColor: 'Tło',\n bold: 'Pogrubienie',\n lineHeight: 'Wysokość linii',\n letterSpacing: 'Odstęp znaków',\n textIndent: 'Wcięcie tekstu',\n increaseIndent: 'Zwiększ wcięcie',\n decreaseIndent: 'Zmniejsz wcięcie',\n italic: 'Italiki',\n underline: 'Podkreślenie',\n strikeThrough: 'Przekreślenie',\n fontFamily: 'Czcionka',\n textAlign: 'Wyrównanie tekstu',\n alignLeft: 'Do lewej',\n alignCenter: 'Wycentruj',\n alignRight: 'Do prawej',\n alignJustify: 'Wyjustuj',\n floatLeft: 'Do lewej',\n floatRight: 'Do prawej',\n superScript: 'Superskrypt',\n subScript: 'Subskrypt',\n removeStyles: 'Usuń stylowanie',\n headings: 'Nagłówki',\n header: 'Nagłówek',\n normal: 'Normalny',\n orderedList: 'Lista uporządkowana',\n unorderedList: 'Lista nieuporządkowana',\n blockQuote: 'Cytat',\n code: 'Kod',\n link: 'Link',\n unlink: 'Usuń link',\n hr: 'Linia pozioma',\n media: 'Media',\n mediaLibirary: 'Biblioteka mediów',\n emoji: 'Emoji'\n },\n linkEditor: {\n textInputPlaceHolder: 'Wpisz tekst linku',\n linkInputPlaceHolder: 'Wpisz Adres URL',\n inputWithEnterPlaceHolder: 'Wpisz adres URL i naciśnij Enter',\n openInNewWindow: 'Otwórz w nowym oknie',\n removeLink: 'Usuń link'\n },\n audioPlayer: {\n title: 'Odtwórz audio'\n },\n videoPlayer: {\n title: 'Odtwórz wideo',\n embedTitle: 'Tytuł'\n },\n media: {\n image: 'Obraz',\n video: 'Wideo',\n audio: 'Audio',\n embed: 'Obiekt osadzony'\n }\n});\n// CONCATENATED MODULE: ./languages/kr.js\n/* harmony default export */ var kr = ({\n base: {\n remove: '삭제',\n cancel: '취소',\n confirm: '결정',\n inert: '삽입',\n width: '너비',\n height: '높이'\n },\n controls: {\n clear: '콘텐츠지우기',\n undo: '취소',\n redo: '다시하기',\n fontSize: '글자크기',\n lineHeight: '행높이',\n letterSpacing: '단어간격',\n textIndent: '단락들여쓰기',\n increaseIndent: '들여쓰기늘리기',\n decreaseIndent: '들여쓰기줄이기',\n border: '국경',\n color: '색상',\n textColor: '텍스트색상',\n backgroundColor: '배경색상',\n tempColors: '임시색',\n bold: '굵게',\n italic: '기울임꼴',\n underline: '밑줄',\n strikeThrough: '취소선',\n fontFamily: '글꼴',\n textAlign: '텍스트정렬',\n alignLeft: '왼쪽',\n alignCenter: '중심',\n alignRight: '오른쪽',\n alignJustify: '양쪽끝',\n floatLeft: '떠다니기',\n floatRight: '오른쪽부동',\n superScript: '위첨자',\n subScript: '첨자',\n removeStyles: '스타일지우기',\n headings: '제목',\n header: '제목',\n normal: '재래식',\n orderedList: '순서가지정된목록',\n unorderedList: '정렬되지않은목록',\n blockQuote: '참고문헌',\n code: '코드',\n link: '링크',\n unlink: '링크삭제',\n hr: '수평선',\n media: '미디어',\n mediaLibirary: '미디어라이브러리',\n emoji: '작은표현',\n fullscreen: '전체화면',\n exitFullscreen: '전체화면종료'\n },\n linkEditor: {\n textInputPlaceHolder: '링크텍스트입력',\n linkInputPlaceHolder: '링크주소입력',\n inputWithEnterPlaceHolder: '링크주소입력.',\n openInNewWindow: '새창열기',\n removeLink: '링크삭제'\n },\n audioPlayer: {\n title: '오디오파일재생'\n },\n videoPlayer: {\n title: '비디오파일재생',\n embedTitle: '임베디드미디어'\n },\n media: {\n image: '이미지',\n video: '비디오',\n audio: '오디오',\n embed: '임베디드미디어'\n }\n});\n// CONCATENATED MODULE: ./languages/tr.js\n/* harmony default export */ var tr = ({\n base: {\n remove: 'Kaldır',\n cancel: 'İptal',\n confirm: 'Onayla',\n inert: 'Ekle',\n width: 'Genişlik',\n height: 'Yükseklik'\n },\n controls: {\n clear: 'Temizle',\n undo: 'Geri al',\n redo: 'İleri al',\n fontSize: 'Yazı boyutu',\n color: 'Renk',\n textColor: 'Yazı rengi',\n tempColors: 'Geçici renkler',\n backgroundColor: 'Arkaplan',\n bold: 'Kalın',\n lineHeight: 'Satır yüksekliği',\n letterSpacing: 'Harf aralığı',\n textIndent: 'Çentik aralığı',\n increaseIndent: 'Çentiği genişlet',\n decreaseIndent: 'Çentiği daralt',\n italic: 'Eğik',\n underline: 'Altı çizili',\n strikeThrough: 'Üstü çizili',\n fontFamily: 'Yazı tipi',\n textAlign: 'Metin Hizalama',\n alignLeft: 'Sola hizala',\n alignCenter: 'Ortaya hizala',\n alignRight: 'Sağa hizala',\n alignJustify: 'Her iki tarafa hizala',\n floatLeft: 'Sola yatır',\n floatRight: 'Sağa yatır',\n superScript: 'Ana kod',\n subScript: 'Alt kod',\n removeStyles: 'Stilleri kaldır',\n headings: 'Başlıklar',\n header: 'Başlık',\n normal: 'Normal',\n orderedList: 'Sıralı liste',\n unorderedList: 'Sırasız liste',\n blockQuote: 'Alıntı',\n code: 'Kod',\n link: 'Bağlantı',\n unlink: 'Bağlantıyı kaldır',\n hr: 'Yatay çizgi',\n media: 'Medya',\n mediaLibirary: 'Kütüphane',\n emoji: 'İfade',\n fullscreen: 'Tam ekran',\n exitFullscreen: 'Tam ekrandan çık'\n },\n linkEditor: {\n textInputPlaceHolder: 'Bağlantı metnini girin',\n linkInputPlaceHolder: 'Bağlantı URL\\' si girin',\n inputWithEnterPlaceHolder: 'Bağlantı URL\\'si girin ve Enter\\' a basın',\n openInNewWindow: 'Yeni pencerede aç',\n removeLink: 'Bağlantıyı kaldır'\n },\n audioPlayer: {\n title: 'Ses çal'\n },\n videoPlayer: {\n title: 'Görüntü oynat',\n embedTitle: 'Görüntüyü göm'\n },\n media: {\n image: 'Resim',\n video: 'Görüntü',\n audio: 'Ses',\n embed: 'Gömülü nesne'\n }\n});\n// CONCATENATED MODULE: ./languages/jpn.js\n/* harmony default export */ var jpn = ({\n base: {\n remove: '削除',\n cancel: 'キャンセル',\n confirm: '決定',\n inert: '挿入',\n width: '幅',\n height: '高さ'\n },\n controls: {\n clear: 'クリアコンテンツ',\n undo: 'キャンセル',\n redo: 'キャンセル',\n fontSize: 'フォントサイズ',\n lineHeight: 'フォントサイズ',\n letterSpacing: 'ワード間隔',\n textIndent: '段落のインデント',\n increaseIndent: 'インデントを増やす',\n decreaseIndent: 'インデントを減らす',\n border: '国境',\n color: '色',\n textColor: 'テキストの色',\n backgroundColor: '背景色',\n tempColors: '仮色',\n bold: '太字',\n italic: 'イタリック体',\n underline: '下線',\n strikeThrough: '取り消し線',\n fontFamily: 'フォント',\n textAlign: 'テキストの配置',\n alignLeft: '左',\n alignCenter: '中央揃え',\n alignRight: '右に立つ',\n alignJustify: '両端',\n floatLeft: '左フローティング',\n floatRight: '右フローティング',\n superScript: '上付き',\n subScript: '下付き文字',\n removeStyles: 'クリアスタイル',\n headings: '役職',\n header: '役職',\n normal: '従来の',\n orderedList: '順序付きリスト',\n unorderedList: '番号なしリスト',\n blockQuote: '参照',\n code: 'コード',\n link: 'リンク',\n unlink: 'リンクを解除',\n hr: '横線',\n media: 'メディア',\n mediaLibirary: 'メディアライブラリー',\n emoji: '小さな表現',\n fullscreen: '全画面',\n exitFullscreen: '全画面を退く'\n },\n linkEditor: {\n textInputPlaceHolder: 'リンクテキストを入力',\n linkInputPlaceHolder: 'リンクアドレスを入力',\n inputWithEnterPlaceHolder: 'リンクアドレスを入力して戻ります',\n openInNewWindow: '新しいウィンドウで開く',\n removeLink: '新しいウィンドウで開く'\n },\n audioPlayer: {\n title: 'オーディオファイルを再生する'\n },\n videoPlayer: {\n title: 'ビデオファイルを再生する',\n embedTitle: '埋め込みメディア'\n },\n media: {\n image: '画像',\n video: 'ビデオ',\n audio: '音声',\n embed: '埋め込みメディア'\n }\n});\n// CONCATENATED MODULE: ./languages/ru.js\n/* harmony default export */ var ru = ({\n base: {\n remove: 'Удалить',\n cancel: 'Отмена',\n confirm: 'Подтвердить',\n insert: 'Вставить',\n width: 'Ширина',\n height: 'Высота'\n },\n controls: {\n clear: 'Очистить',\n undo: 'Отменить',\n redo: 'Повторить',\n fontSize: 'Размер шрифта',\n color: 'Цвет',\n textColor: 'Цвет текста',\n tempColors: 'Temp Colors',\n backgroundColor: 'Цвет фона',\n bold: 'Жирный',\n lineHeight: 'Межстрочный интервал',\n letterSpacing: 'Межбуквенный интервал',\n textIndent: 'Отступ',\n increaseIndent: 'Увеличить отступ',\n decreaseIndent: 'Уменьшить отступ',\n italic: 'Курсив',\n underline: 'Подчеркнутый',\n strikeThrough: 'Перечеркнутый',\n fontFamily: 'Шрифт',\n textAlign: 'Расположение текста',\n alignLeft: 'По левому краю',\n alignCenter: 'По центру',\n alignRight: 'По правому краю',\n alignJustify: 'По ширине',\n floatLeft: 'Обтекание слева',\n floatRight: 'Обтекание справа',\n superScript: 'Надстрочный индекс',\n subScript: 'Подстрочный индекс',\n removeStyles: 'Убрать стили',\n headings: 'Заголовки',\n header: 'Заголовок',\n normal: 'Обычный',\n orderedList: 'Упорядоченный список',\n unorderedList: 'Неупорядоченный список',\n blockQuote: 'Цитата',\n code: 'Код',\n link: 'Вставить ссылку',\n unlink: 'Убрать ссылку',\n hr: 'Горизонтальная линия',\n media: 'Медиа',\n mediaLibirary: 'Медиа библиотека',\n emoji: 'Emoji',\n fullscreen: 'Полноэкранный режим',\n exitFullscreen: 'Выйти из полноэкранного режима'\n },\n linkEditor: {\n textInputPlaceHolder: 'Введите текст ссылки',\n linkInputPlaceHolder: 'Вставить ссылку',\n inputWithEnterPlaceHolder: 'Вставить ссылку и нажать Enter',\n openInNewWindow: 'Открыть в новом окне',\n removeLink: 'Убрать ссылку'\n },\n audioPlayer: {\n title: 'Воспроизвести аудиофайл'\n },\n videoPlayer: {\n title: 'Воспроизвести видеофайл',\n embedTitle: 'Embed Media'\n },\n media: {\n image: 'Картинка',\n video: 'Видео',\n audio: 'Аудио',\n embed: 'Встроенное'\n }\n});\n// CONCATENATED MODULE: ./languages/fr.js\n/* harmony default export */ var fr = ({\n base: {\n remove: 'Supprimer',\n cancel: 'Annuler',\n confirm: 'Confirmer',\n inert: 'Insérer',\n width: 'Largeur',\n height: 'Hauteur'\n },\n controls: {\n clear: 'Effacer',\n undo: 'Annuler',\n redo: 'Refaire',\n fontSize: 'Taille de police',\n color: 'Couleur',\n textColor: 'Texte',\n tempColors: 'Couleurs temporaire',\n backgroundColor: 'Couleur d\\'arrière plan',\n bold: 'Gras',\n lineHeight: 'Hauteur de ligne',\n letterSpacing: 'Espacement des lettres',\n textIndent: 'Indentation du texte',\n increaseIndent: 'Augmenter l\\'indentation',\n decreaseIndent: 'Réduire l\\'indentation',\n italic: 'Italique',\n underline: 'Souligner',\n strikeThrough: 'Barrer',\n fontFamily: 'Police d\\'écriture',\n textAlign: 'Alignement du texte',\n alignLeft: 'Aligner à gauche',\n alignCenter: 'Aligner au centre',\n alignRight: 'Aligner à droite',\n alignJustify: 'Justifier',\n floatLeft: 'Déplacer à gauche',\n floatRight: 'Déplacer à droite',\n superScript: 'Super-script',\n subScript: 'Sous-script',\n removeStyles: 'Supprimer les styles',\n headings: 'Titres',\n header: 'Entêtes',\n normal: 'Normal',\n orderedList: 'Liste ordonnée',\n unorderedList: 'Liste non-ordonnée',\n blockQuote: 'Citation',\n code: 'Code',\n link: 'Insérer un lien',\n unlink: 'Supprimer le lien',\n hr: 'Ligne horizontale',\n media: 'Média',\n mediaLibirary: 'Bibliothêque',\n emoji: 'Emoji',\n fullscreen: 'Plein écran',\n exitFullscreen: 'Quitter le plein écran'\n },\n linkEditor: {\n textInputPlaceHolder: 'Insérer le texte à afficher',\n linkInputPlaceHolder: 'Insérer le lien URL',\n inputWithEnterPlaceHolder: 'Insérer le lien URL puis appuyer sur Entrée',\n openInNewWindow: 'Ouvrir dans une nouvelle fenêtre',\n removeLink: 'Supprimer le lien'\n },\n audioPlayer: {\n title: 'Lancer le son audio'\n },\n videoPlayer: {\n title: 'Lancer la video',\n embedTitle: 'Intégrer média'\n },\n media: {\n image: 'Image',\n video: 'Vidéo',\n audio: 'Audio',\n embed: 'Intégré'\n }\n});\n// CONCATENATED MODULE: ./languages/pt-br.js\n/* harmony default export */ var pt_br = ({\n base: {\n remove: 'Remover',\n cancel: 'Cancelar',\n confirm: 'Confirmar',\n inert: 'Inserir',\n width: 'Largura',\n height: 'Altura'\n },\n controls: {\n clear: 'Limpar',\n undo: 'Desfazer',\n redo: 'Refazer',\n fontSize: 'Tamanho da Fonte',\n color: 'Cor',\n textColor: 'Texto',\n tempColors: 'Temp Colors',\n backgroundColor: 'Cor de Fundo',\n bold: 'Negrito',\n lineHeight: 'Altura da LinhaLine Height',\n letterSpacing: 'Espaçamento entre Letras',\n textIndent: 'Identação de Texto',\n increaseIndent: 'Aumentar Identação',\n decreaseIndent: 'Diminuir Identção',\n italic: 'Itálico',\n underline: 'Sublinhado',\n strikeThrough: 'Riscado',\n fontFamily: 'Família da Fonte',\n textAlign: 'Alinhamento de Texto',\n alignLeft: 'Alinhamento à Esquerda',\n alignCenter: 'Alinhamento Centralizado',\n alignRight: 'Alinhamento à Direita',\n alignJustify: 'Alinhamento Justificado',\n floatLeft: 'Flutuação à Esquerda',\n floatRight: 'Flutuação à Direita',\n superScript: 'Sobrescrito',\n subScript: 'Subscrito',\n removeStyles: 'Remover Estilos',\n headings: 'Cabeçalhos',\n header: 'Cabeçalho',\n normal: 'Normal',\n orderedList: 'Lista Ordenada',\n unorderedList: 'Lista Não Ordenada',\n blockQuote: 'Citação',\n code: 'Código',\n link: 'Link',\n unlink: 'Remover Link',\n hr: 'Linha Horizontal',\n media: 'Mídia',\n mediaLibirary: 'Biblioteca de Mídia',\n emoji: 'Emoji',\n fullscreen: 'Tela Cheia',\n exitFullscreen: 'Sair de Tela Cheia'\n },\n linkEditor: {\n textInputPlaceHolder: 'Insira o texto do link',\n linkInputPlaceHolder: 'Insira a URL do link',\n inputWithEnterPlaceHolder: 'Insira a URL do link e aperte Enter',\n openInNewWindow: 'Abrir em nova janela',\n removeLink: 'Remover Link'\n },\n audioPlayer: {\n title: 'Tocar Áudio'\n },\n videoPlayer: {\n title: 'Tocar Vídeo',\n embedTitle: 'Mídia Embutida'\n },\n media: {\n image: 'Imagem',\n video: 'Vídeo',\n audio: 'Áudio',\n embed: 'Embutido'\n }\n});\n// CONCATENATED MODULE: ./languages/index.js\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var languages = ({\n 'en': en,\n 'zh': zh,\n 'zh-hant': zh_hant,\n 'pl': pl,\n 'kr': kr,\n 'tr': tr,\n 'jpn': jpn,\n 'ru': ru,\n 'fr': fr,\n 'pt-br': pt_br\n});\n// EXTERNAL MODULE: external \"braft-finder\"\nvar external_braft_finder_ = __webpack_require__(17);\nvar external_braft_finder_default = /*#__PURE__*/__webpack_require__.n(external_braft_finder_);\n\n// EXTERNAL MODULE: external \"braft-utils\"\nvar external_braft_utils_ = __webpack_require__(3);\n\n// EXTERNAL MODULE: external \"draft-js\"\nvar external_draft_js_ = __webpack_require__(6);\n\n// EXTERNAL MODULE: external \"immutable\"\nvar external_immutable_ = __webpack_require__(13);\nvar external_immutable_default = /*#__PURE__*/__webpack_require__.n(external_immutable_);\n\n// CONCATENATED MODULE: ./configs/keybindings.js\n // TODO\n// 允许自定义的快捷键设置\n\n/* harmony default export */ var keybindings = (function (customKeyBindingFn) {\n return function (event) {\n if (event.keyCode === 83 && (external_draft_js_[\"KeyBindingUtil\"].hasCommandModifier(event) || external_draft_js_[\"KeyBindingUtil\"].isCtrlKeyCommand(event))) {\n return 'braft-save';\n }\n\n if (customKeyBindingFn) {\n return customKeyBindingFn(event) || Object(external_draft_js_[\"getDefaultKeyBinding\"])(event);\n }\n\n return Object(external_draft_js_[\"getDefaultKeyBinding\"])(event);\n };\n});\n// CONCATENATED MODULE: ./configs/props.js\n/* harmony default export */ var configs_props = ({\n language: 'zh',\n controls: ['undo', 'redo', 'separator', 'font-size', 'line-height', 'letter-spacing', 'separator', 'text-color', 'bold', 'italic', 'underline', 'strike-through', 'separator', 'superscript', 'subscript', 'remove-styles', 'emoji', 'separator', 'text-indent', 'text-align', 'separator', 'headings', 'list-ul', 'list-ol', 'blockquote', 'code', 'separator', 'media', 'link', 'table', 'split', 'hr', 'separator', 'clear', 'separator', 'fullscreen'],\n excludeControls: [],\n extendControls: [],\n extendAtomics: [],\n componentBelowControlBar: null,\n media: {\n pasteImage: true,\n imagePasteLimit: 5,\n image: true,\n video: true,\n audio: true,\n uploadFn: null,\n validateFn: null,\n onBeforeDeselect: null,\n onDeselect: null,\n onBeforeSelect: null,\n onSelect: null,\n onBeforeRemove: null,\n onRemove: null,\n onCancel: null,\n onFileSelect: null,\n onBeforeInsert: null,\n onInsert: null,\n onChange: null,\n accepts: {\n image: 'image/png,image/jpeg,image/gif,image/webp,image/apng,image/svg',\n video: 'video/mp4',\n audio: 'audio/mp3'\n },\n externals: {\n audio: true,\n video: true,\n image: true,\n embed: true\n }\n },\n imageControls: ['float-left', 'float-right', 'align-left', 'align-center', 'align-right', 'link', 'size', 'remove'],\n imageResizable: true,\n colors: ['#000000', '#333333', '#666666', '#999999', '#cccccc', '#ffffff', '#61a951', '#16a085', '#07a9fe', '#003ba5', '#8e44ad', '#f32784', '#c0392b', '#d35400', '#f39c12', '#fdda00'],\n colorPicker: null,\n colorPickerTheme: 'dark',\n colorPickerAutoHide: true,\n codeTabIndents: 2,\n headings: ['header-one', 'header-two', 'header-three', 'header-four', 'header-five', 'header-six', 'unstyled'],\n textAligns: ['left', 'center', 'right', 'justify'],\n textBackgroundColor: true,\n allowInsertLinkText: false,\n defaultLinkTarget: '',\n letterSpacings: [0, 1, 2, 3, 4, 5, 6],\n lineHeights: [1, 1.2, 1.5, 1.75, 2, 2.5, 3, 4],\n fontSizes: [12, 14, 16, 18, 20, 24, 28, 30, 32, 36, 40, 48, 56, 64, 72, 96, 120, 144],\n fontFamilies: [{\n name: 'Araial',\n family: 'Arial, Helvetica, sans-serif'\n }, {\n name: 'Georgia',\n family: 'Georgia, serif'\n }, {\n name: 'Impact',\n family: 'Impact, serif'\n }, {\n name: 'Monospace',\n family: '\"Courier New\", Courier, monospace'\n }, {\n name: 'Tahoma',\n family: 'tahoma, arial, \"Hiragino Sans GB\", 宋体, sans-serif'\n }],\n converts: {\n unitExportFn: function unitExportFn(value, type) {\n return type === 'line-height' ? value : \"\".concat(value, \"px\");\n }\n },\n emojis: ['🤣', '🙌', '💚', '💛', '👏', '😉', '💯', '💕', '💞', '💘', '💙', '💝', '🖤', '💜', '❤️', '😍', '😻', '💓', '💗', '😋', '😇', '😂', '😹', '😘', '💖', '😁', '😀', '🤞', '😲', '😄', '😊', '👍', '😌', '😃', '😅', '✌️', '🤗', '💋', '😗', '😽', '😚', '🤠', '😙', '😺', '👄', '😸', '😏', '😼', '👌', '😎', '😆', '😛', '🙏', '🤝', '🙂', '🤑', '😝', '😐', '😑', '🤤', '😤', '🙃', '🤡', '😶', '😪', '😴', '😵', '😓', '👊', '😦', '😷', '🤐', '😜', '🤓', '👻', '😥', '🙄', '🤔', '🤒', '🙁', '😔', '😯', '☹️', '☠️', '😰', '😩', '😖', '😕', '😒', '😣', '😢', '😮', '😿', '🤧', '😫', '🤥', '😞', '😬', '👎', '💀', '😳', '😨', '🤕', '🤢', '😱', '😭', '😠', '😈', '😧', '💔', '😟', '🙀', '💩', '👿', '😡', '😾', '🖕'],\n stripPastedStyles: false,\n triggerChangeOnMount: true,\n className: '',\n style: {},\n controlBarClassName: '',\n controlBarStyle: {},\n contentClassName: '',\n contentStyle: {},\n draftProps: {},\n hooks: {},\n onChange: null,\n onFocus: null,\n onBlur: null,\n onTab: null,\n onDelete: null,\n onSave: null,\n fixPlaceholder: false\n});\n// EXTERNAL MODULE: ../node_modules/draft-js/lib/getFragmentFromSelection.js\nvar getFragmentFromSelection = __webpack_require__(22);\nvar getFragmentFromSelection_default = /*#__PURE__*/__webpack_require__.n(getFragmentFromSelection);\n\n// EXTERNAL MODULE: external \"draftjs-utils\"\nvar external_draftjs_utils_ = __webpack_require__(23);\n\n// CONCATENATED MODULE: ./configs/handlers.js\n\n\n\n\n\n\nvar handlers_keyCommandHandlers = function keyCommandHandlers(command, editorState, editor) {\n if (editor.editorProps.handleKeyCommand && editor.editorProps.handleKeyCommand(command, editorState, editor) === 'handled') {\n return 'handled';\n }\n\n if (command === 'braft-save') {\n editor.editorProps.onSave && editor.editorProps.onSave(editorState);\n return 'handled';\n }\n\n var _editor$editorProps = editor.editorProps,\n controls = _editor$editorProps.controls,\n excludeControls = _editor$editorProps.excludeControls;\n var allowIndent = (controls.indexOf('text-indent') !== 0 || controls.find(function (item) {\n return item.key === 'text-indent';\n })) && excludeControls.indexOf('text-indent') === -1;\n var cursorStart = editorState.getSelection().getStartOffset();\n var cursorEnd = editorState.getSelection().getEndOffset();\n var cursorIsAtFirst = cursorStart === 0 && cursorEnd === 0;\n\n if (command === 'backspace') {\n if (editor.editorProps.onDelete && editor.editorProps.onDelete(editorState) === false) {\n return 'handled';\n }\n\n var blockType = external_braft_utils_[\"ContentUtils\"].getSelectionBlockType(editorState);\n\n if (allowIndent && cursorIsAtFirst && blockType !== 'code-block') {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].decreaseSelectionIndent(editorState));\n }\n }\n\n if (command === 'tab') {\n var _blockType = external_braft_utils_[\"ContentUtils\"].getSelectionBlockType(editorState);\n\n if (_blockType === 'code-block') {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].insertText(editorState, ' '.repeat(editor.editorProps.codeTabIndents)));\n return 'handled';\n } else if (_blockType === 'ordered-list-item' || _blockType === 'unordered-list-item') {\n var newEditorState = external_draft_js_[\"RichUtils\"].onTab(event, editorState, 4);\n\n if (newEditorState !== editorState) {\n editor.setValue(newEditorState);\n }\n\n return 'handled';\n } else if (_blockType !== 'atomic' && allowIndent && cursorIsAtFirst) {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].increaseSelectionIndent(editorState));\n return 'handled';\n }\n }\n\n var nextEditorState = external_braft_utils_[\"ContentUtils\"].handleKeyCommand(editorState, command);\n\n if (nextEditorState) {\n editor.setValue(nextEditorState);\n return 'handled';\n }\n\n return 'not-handled';\n};\nvar handlers_returnHandlers = function returnHandlers(event, editorState, editor) {\n if (editor.editorProps.handleReturn && editor.editorProps.handleReturn(event, editorState, editor) === 'handled') {\n return 'handled';\n }\n\n var currentBlock = external_braft_utils_[\"ContentUtils\"].getSelectionBlock(editorState);\n var currentBlockType = currentBlock.getType();\n\n if (currentBlockType === 'unordered-list-item' || currentBlockType === 'ordered-list-item') {\n if (currentBlock.getLength() === 0) {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionBlockType(editorState, 'unstyled'));\n return 'handled';\n }\n\n return 'not-handled';\n } else if (currentBlockType === 'code-block') {\n if (event.which === 13 && (event.getModifierState('Shift') || event.getModifierState('Alt') || event.getModifierState('Control'))) {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionBlockType(editorState, 'unstyled'));\n return 'handled';\n }\n\n return 'not-handled';\n } else if (currentBlockType === 'blockquote') {\n if (event.which === 13) {\n if (event.getModifierState('Shift') || event.getModifierState('Alt') || event.getModifierState('Control')) {\n event.which = 0;\n } else {\n editor.setValue(external_draft_js_[\"RichUtils\"].insertSoftNewline(editorState));\n return 'handled';\n }\n }\n }\n\n var nextEditorState = Object(external_draftjs_utils_[\"handleNewLine\"])(editorState, event);\n\n if (nextEditorState) {\n editor.setValue(nextEditorState);\n return 'handled';\n }\n\n return 'not-handled';\n};\nvar beforeInputHandlers = function beforeInputHandlers(chars, editorState, editor) {\n if (editor.editorProps.handleBeforeInput && editor.editorProps.handleBeforeInput(chars, editorState, editor) === 'handled') {\n return 'handled';\n }\n\n return 'not-handled';\n};\nvar handlers_compositionStartHandler = function compositionStartHandler(_, editor) {\n var editorState = editor.state.editorState;\n var selectedBlocks = external_braft_utils_[\"ContentUtils\"].getSelectedBlocks(editorState);\n\n if (selectedBlocks && selectedBlocks.length > 1) {\n var nextEditorState = external_draft_js_[\"EditorState\"].push(editorState, external_draft_js_[\"Modifier\"].removeRange(editorState.getCurrentContent(), editorState.getSelection(), 'backward'), 'remove-range');\n editor.setValue(nextEditorState);\n }\n};\nvar handlers_dropHandlers = function dropHandlers(selectionState, dataTransfer, editor) {\n if (editor.editorProps.readOnly || editor.editorProps.disabled) {\n return 'handled';\n }\n\n if (window && window.__BRAFT_DRAGING__IMAGE__) {\n var nextEditorState = external_draft_js_[\"EditorState\"].forceSelection(editor.state.editorState, selectionState);\n nextEditorState = external_braft_utils_[\"ContentUtils\"].insertMedias(nextEditorState, [window.__BRAFT_DRAGING__IMAGE__.mediaData]);\n nextEditorState = external_braft_utils_[\"ContentUtils\"].removeBlock(nextEditorState, window.__BRAFT_DRAGING__IMAGE__.block, nextEditorState.getSelection());\n window.__BRAFT_DRAGING__IMAGE__ = null;\n editor.lockOrUnlockEditor(true);\n editor.setValue(nextEditorState);\n return 'handled';\n } else if (!dataTransfer || !dataTransfer.getText()) {\n return 'handled';\n }\n\n return 'not-handled';\n};\nvar handlers_handleFiles = function handleFiles(files, editor) {\n var _editor$constructor$d = objectSpread_default()({}, editor.constructor.defaultProps.media, editor.editorProps.media),\n pasteImage = _editor$constructor$d.pasteImage,\n validateFn = _editor$constructor$d.validateFn,\n imagePasteLimit = _editor$constructor$d.imagePasteLimit;\n\n pasteImage && files.slice(0, imagePasteLimit).forEach(function (file) {\n if (file && file.type.indexOf('image') > -1 && editor.braftFinder) {\n var validateResult = validateFn ? validateFn(file) : true;\n\n if (validateResult instanceof Promise) {\n validateResult.then(function () {\n editor.braftFinder.uploadImage(file, function (image) {\n editor.isLiving && editor.setValue(external_braft_utils_[\"ContentUtils\"].insertMedias(editor.state.editorState, [image]));\n });\n });\n } else if (validateResult) {\n editor.braftFinder.uploadImage(file, function (image) {\n editor.isLiving && editor.setValue(external_braft_utils_[\"ContentUtils\"].insertMedias(editor.state.editorState, [image]));\n });\n }\n }\n });\n\n if (files[0] && files[0].type.indexOf('image') > -1 && pasteImage) {\n return 'handled';\n }\n\n return 'not-handled';\n};\nvar droppedFilesHandlers = function droppedFilesHandlers(selectionState, files, editor) {\n if (editor.editorProps.handleDroppedFiles && editor.editorProps.handleDroppedFiles(selectionState, files, editor) === 'handled') {\n return 'handled';\n }\n\n return handlers_handleFiles(files, editor);\n};\nvar pastedFilesHandlers = function pastedFilesHandlers(files, editor) {\n if (editor.editorProps.handlePastedFiles && editor.editorProps.handlePastedFiles(files, editor) === 'handled') {\n return 'handled';\n }\n\n return handlers_handleFiles(files, editor);\n};\nvar handlers_copyHandlers = function copyHandlers(event, editor) {\n var blockMap = getFragmentFromSelection_default()(editor.state.editorState);\n\n if (blockMap && blockMap.toArray) {\n try {\n var tempContentState = external_draft_js_[\"ContentState\"].createFromBlockArray(blockMap.toArray());\n var tempEditorState = external_draft_js_[\"EditorState\"].createWithContent(tempContentState);\n var clipboardData = event.clipboardData || window.clipboardData || event.originalEvent.clipboardData;\n tempEditorState.setConvertOptions(editor.state.editorState.convertOptions);\n clipboardData.setData('text/html', tempEditorState.toHTML());\n clipboardData.setData('text/plain', tempEditorState.toText());\n event.preventDefault();\n } catch (error) {\n console.warn(error);\n }\n }\n};\nvar handlers_pastedTextHandlers = function pastedTextHandlers(text, html, editorState, editor) {\n if (editor.editorProps.handlePastedText && editor.editorProps.handlePastedText(text, html, editorState, editor) === 'handled') {\n return 'handled';\n }\n\n if (!html || editor.editorProps.stripPastedStyles) {\n return false;\n }\n\n var tempColors = external_braft_utils_[\"ColorUtils\"].detectColorsFromHTMLString(html);\n editor.setState({\n tempColors: toConsumableArray_default()(editor.state.tempColors).concat(toConsumableArray_default()(tempColors)).filter(function (item) {\n return editor.editorProps.colors.indexOf(item) === -1;\n }).filter(function (item, index, array) {\n return array.indexOf(item) === index;\n })\n }, function () {\n editor.setValue(external_braft_utils_[\"ContentUtils\"].insertHTML(editorState, html, 'paste'));\n });\n return 'handled';\n};\n// CONCATENATED MODULE: ./helpers/extension.js\n\n// TODO\n// - block-style和atomic类型的扩展支持\n\nvar extension_extensionControls = [];\nvar extension_extensionDecorators = [];\nvar extension_propInterceptors = [];\nvar extension_extensionBlockRenderMaps = [];\nvar extension_extensionBlockRendererFns = [];\nvar extensionInlineStyleMaps = [];\nvar extension_extensionInlineStyleFns = [];\nvar extensionEntities = [];\nvar inlineStyleImporters = [];\nvar inlineStyleExporters = [];\nvar blockImporters = [];\nvar blockExporters = [];\n\nvar filterByEditorId = function filterByEditorId(items, editorId) {\n if (!editorId) {\n return items.filter(function (item) {\n return !item.includeEditors;\n }).map(function (item) {\n return item.data;\n });\n }\n\n return items.map(function (item) {\n if (!item.includeEditors && !item.excludeEditors) {\n return item.data;\n }\n\n if (item.includeEditors) {\n return item.includeEditors.indexOf(editorId) !== -1 ? item.data : false;\n }\n\n if (item.excludeEditors) {\n return item.excludeEditors.indexOf(editorId) !== -1 ? false : item.data;\n }\n\n return false;\n }).filter(function (item) {\n return item;\n });\n};\n\nvar getPropInterceptors = function getPropInterceptors(editorId) {\n return filterByEditorId(extension_propInterceptors, editorId);\n};\nvar getExtensionControls = function getExtensionControls(editorId) {\n return filterByEditorId(extension_extensionControls, editorId);\n};\nvar getExtensionDecorators = function getExtensionDecorators(editorId) {\n return filterByEditorId(extension_extensionDecorators, editorId, 'decorators');\n};\nvar getExtensionBlockRenderMaps = function getExtensionBlockRenderMaps(editorId) {\n return filterByEditorId(extension_extensionBlockRenderMaps, editorId);\n};\nvar getExtensionBlockRendererFns = function getExtensionBlockRendererFns(editorId) {\n return filterByEditorId(extension_extensionBlockRendererFns, editorId);\n};\nvar getExtensionInlineStyleMap = function getExtensionInlineStyleMap(editorId) {\n var inlineStyleMap = {};\n filterByEditorId(extensionInlineStyleMaps, editorId).forEach(function (item) {\n inlineStyleMap[item.inlineStyleName] = item.styleMap;\n });\n return inlineStyleMap;\n};\nvar getExtensionInlineStyleFns = function getExtensionInlineStyleFns(editorId) {\n return filterByEditorId(extension_extensionInlineStyleFns, editorId);\n};\nvar compositeStyleImportFn = function compositeStyleImportFn(styleImportFn, editorId) {\n return function (nodeName, node, style) {\n filterByEditorId(inlineStyleImporters, editorId).forEach(function (styleImporter) {\n if (styleImporter.importer && styleImporter.importer(nodeName, node)) {\n style = style.add(styleImporter.inlineStyleName);\n }\n });\n return styleImportFn ? styleImportFn(nodeName, node, style) : style;\n };\n};\nvar compositeStyleExportFn = function compositeStyleExportFn(styleExportFn, editorId) {\n return function (style) {\n style = style.toUpperCase();\n var result = styleExportFn ? styleExportFn(style) : undefined;\n\n if (result) {\n return result;\n }\n\n filterByEditorId(inlineStyleExporters, editorId).find(function (item) {\n if (item.inlineStyleName === style) {\n result = item.exporter;\n return true;\n }\n });\n return result;\n };\n};\nvar compositeEntityImportFn = function compositeEntityImportFn(entityImportFn, editorId) {\n return function (nodeName, node, createEntity, source) {\n var result = entityImportFn ? entityImportFn(nodeName, node, createEntity, source) : null;\n\n if (result) {\n return result;\n }\n\n filterByEditorId(extensionEntities, editorId).find(function (entityItem) {\n var matched = entityItem.importer ? entityItem.importer(nodeName, node, source) : null;\n matched && (result = createEntity(entityItem.entityType, matched.mutability || 'MUTABLE', matched.data || {}));\n return !!matched;\n });\n return result;\n };\n};\nvar compositeEntityExportFn = function compositeEntityExportFn(entityExportFn, editorId) {\n return function (entity, originalText) {\n var result = entityExportFn ? entityExportFn(entity, originalText) : undefined;\n\n if (result) {\n return result;\n }\n\n var entityType = entity.type.toUpperCase();\n filterByEditorId(extensionEntities, editorId).find(function (entityItem) {\n if (entityItem.entityType === entityType) {\n result = entityItem.exporter ? entityItem.exporter(entity, originalText) : undefined;\n return true;\n }\n });\n return result;\n };\n};\nvar compositeBlockImportFn = function compositeBlockImportFn(blockImportFn, editorId) {\n return function (nodeName, node, source) {\n var result = blockImportFn ? blockImportFn(nodeName, node, source) : null;\n\n if (result) {\n return result;\n }\n\n filterByEditorId(blockImporters, editorId).find(function (blockImporter) {\n var matched = blockImporter.importer ? blockImporter.importer(nodeName, node, source) : undefined;\n matched && (result = matched);\n return !!matched;\n });\n return result;\n };\n};\nvar compositeBlockExportFn = function compositeBlockExportFn(blockExportFn, editorId) {\n return function (contentState, block) {\n var result = blockExportFn ? blockExportFn(contentState, block) : null;\n\n if (result) {\n return result;\n }\n\n filterByEditorId(blockExporters, editorId).find(function (blockExporter) {\n var matched = blockExporter.exporter ? blockExporter.exporter(contentState, block) : undefined;\n matched && (result = matched);\n return !!matched;\n });\n return result;\n };\n};\n\nvar extension_useExtension = function useExtension(extension) {\n if (extension instanceof Array) {\n extension.forEach(useExtension);\n return false;\n }\n\n if (!extension || !extension.type || typeof extension.type !== 'string') {\n return false;\n }\n\n var includeEditors = extension.includeEditors,\n excludeEditors = extension.excludeEditors;\n\n if (extension.type === 'control') {\n extension_extensionControls.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: extension.control\n });\n } else if (extension.type === 'inline-style') {\n var inlineStyleName = extension.name.toUpperCase();\n\n if (extension.control) {\n extension_extensionControls.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: objectSpread_default()({\n key: inlineStyleName,\n type: 'inline-style',\n command: inlineStyleName\n }, extension.control)\n });\n }\n\n if (extension.style) {\n extensionInlineStyleMaps.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n inlineStyleName: inlineStyleName,\n styleMap: extension.style\n }\n });\n }\n\n if (extension.styleFn) {\n extension_extensionInlineStyleFns.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n inlineStyleName: inlineStyleName,\n styleFn: extension.styleFn\n }\n });\n }\n\n if (extension.importer) {\n inlineStyleImporters.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n inlineStyleName: inlineStyleName,\n importer: extension.importer\n }\n });\n }\n\n inlineStyleExporters.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n inlineStyleName: inlineStyleName,\n exporter: extension.exporter ? extension.exporter(extension) : external_react_default.a.createElement(\"span\", {\n style: extension.style\n })\n }\n });\n } else if (extension.type === 'block-style') {// TODO\n } else if (extension.type === 'entity') {\n var entityType = extension.name.toUpperCase();\n\n if (extension.control) {\n extension_extensionControls.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: typeof extension.control === 'function' ? extension.control : objectSpread_default()({\n key: entityType,\n type: 'entity',\n command: entityType,\n data: {\n mutability: extension.mutability || 'MUTABLE',\n data: extension.data || {}\n }\n }, extension.control)\n });\n }\n\n extensionEntities.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n entityType: entityType,\n importer: extension.importer,\n exporter: extension.exporter\n }\n });\n extension_extensionDecorators.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n type: 'entity',\n decorator: {\n key: entityType,\n component: extension.component\n }\n }\n });\n } else if (extension.type === 'block') {\n var blockType = extension.name;\n\n if (extension.renderMap) {\n extension_extensionBlockRenderMaps.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n blockType: blockType,\n renderMap: extension.renderMap\n }\n });\n }\n\n if (extension.rendererFn) {\n extension_extensionBlockRendererFns.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n blockType: blockType,\n rendererFn: extension.rendererFn\n }\n });\n }\n\n if (extension.importer) {\n blockImporters.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n blockType: blockType,\n importer: extension.importer\n }\n });\n }\n\n if (extension.exporter) {\n blockExporters.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n blockType: blockType,\n exporter: extension.exporter\n }\n });\n }\n } else if (extension.type === 'atomic') {// TODO\n } else if (extension.type === 'decorator') {\n var decorator = extension.decorator;\n\n if (decorator && decorator.strategy && decorator.component) {\n extension_extensionDecorators.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n type: 'strategy',\n decorator: decorator\n }\n });\n } else if (decorator && decorator.getDecorations) {\n extension_extensionDecorators.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: {\n type: 'class',\n decorator: decorator\n }\n });\n }\n } else if (extension.type === 'prop-interception') {\n extension_propInterceptors.push({\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n data: extension.interceptor\n });\n }\n};\n\nvar createExtensibleEditor = function createExtensibleEditor(BraftEditor) {\n BraftEditor.use = extension_useExtension;\n return BraftEditor;\n};\n// CONCATENATED MODULE: ./renderers/block/blockRenderMap.js\n\n\n\n\n/* harmony default export */ var block_blockRenderMap = (function (props, blockRenderMap) {\n var customBlockRenderMap = Object(external_immutable_[\"Map\"])({\n 'atomic': {\n element: ''\n },\n 'code-block': {\n element: 'code',\n wrapper: external_react_default.a.createElement(\"pre\", {\n className: \"braft-code-block\"\n })\n }\n });\n\n try {\n var extensionBlockRenderMaps = getExtensionBlockRenderMaps(props.editorId);\n customBlockRenderMap = extensionBlockRenderMaps.reduce(function (customBlockRenderMap, item) {\n return customBlockRenderMap.merge(typeof item.renderMap === 'function' ? item.renderMap(props) : item.renderMap);\n }, customBlockRenderMap);\n\n if (blockRenderMap) {\n if (typeof blockRenderMap === 'function') {\n customBlockRenderMap = customBlockRenderMap.merge(blockRenderMap(props));\n } else {\n customBlockRenderMap = customBlockRenderMap.merge(blockRenderMap);\n }\n }\n\n customBlockRenderMap = external_draft_js_[\"DefaultDraftBlockRenderMap\"].merge(customBlockRenderMap);\n } catch (error) {\n console.warn(error);\n }\n\n return customBlockRenderMap;\n});\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/extends.js\nvar helpers_extends = __webpack_require__(11);\nvar extends_default = /*#__PURE__*/__webpack_require__.n(helpers_extends);\n\n// EXTERNAL MODULE: ../node_modules/@babel/runtime/helpers/slicedToArray.js\nvar slicedToArray = __webpack_require__(24);\nvar slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);\n\n// EXTERNAL MODULE: ./renderers/atomics/Image/style.scss\nvar Image_style = __webpack_require__(45);\n\n// EXTERNAL MODULE: ./components/common/Switch/style.scss\nvar Switch_style = __webpack_require__(46);\n\n// CONCATENATED MODULE: ./components/common/Switch/index.jsx\n\n\n/* harmony default export */ var Switch = (function (props) {\n var active = props.active,\n _onClick = props.onClick,\n className = props.className;\n return external_react_default.a.createElement(\"div\", {\n onClick: function onClick() {\n return _onClick();\n },\n className: 'bf-switch ' + className + (active ? ' active' : '')\n });\n});\n// CONCATENATED MODULE: ./configs/controls.js\n\n/* harmony default export */ var configs_controls = (function (lang, editor) {\n return [{\n key: 'undo',\n title: lang.controls.undo,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-undo\"\n }),\n type: 'editor-method',\n command: 'undo'\n }, {\n key: 'redo',\n title: lang.controls.redo,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-redo\"\n }),\n type: 'editor-method',\n command: 'redo'\n }, {\n key: 'remove-styles',\n title: lang.controls.removeStyles,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-format_clear\"\n }),\n type: 'editor-method',\n command: 'removeSelectionInlineStyles'\n }, {\n key: 'hr',\n title: lang.controls.hr,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-hr\"\n }),\n type: 'editor-method',\n command: 'insertHorizontalLine'\n }, {\n key: 'bold',\n title: lang.controls.bold,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-bold\"\n }),\n type: 'inline-style',\n command: 'bold'\n }, {\n key: 'italic',\n title: lang.controls.italic,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-italic\"\n }),\n type: 'inline-style',\n command: 'italic'\n }, {\n key: 'underline',\n title: lang.controls.underline,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-underlined\"\n }),\n type: 'inline-style',\n command: 'underline'\n }, {\n key: 'strike-through',\n title: lang.controls.strikeThrough,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-strikethrough\"\n }),\n type: 'inline-style',\n command: 'strikethrough'\n }, {\n key: 'superscript',\n title: lang.controls.superScript,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-superscript\"\n }),\n type: 'inline-style',\n command: 'superscript'\n }, {\n key: 'subscript',\n title: lang.controls.subScript,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-subscript\"\n }),\n type: 'inline-style',\n command: 'subscript'\n }, {\n key: 'headings',\n title: lang.controls.headings,\n type: 'headings'\n }, {\n key: 'blockquote',\n title: lang.controls.blockQuote,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-quote\"\n }),\n type: 'block-type',\n command: 'blockquote'\n }, {\n key: 'code',\n title: lang.controls.code,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-code\"\n }),\n type: 'block-type',\n command: 'code-block'\n }, {\n key: 'list-ul',\n title: lang.controls.unorderedList,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-list\"\n }),\n type: 'block-type',\n command: 'unordered-list-item'\n }, {\n key: 'list-ol',\n title: lang.controls.orderedList,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-list-numbered\"\n }),\n type: 'block-type',\n command: 'ordered-list-item'\n }, {\n key: 'link',\n title: lang.controls.link,\n type: 'link'\n }, {\n key: 'text-color',\n title: lang.controls.color,\n type: 'text-color'\n }, {\n key: 'line-height',\n title: lang.controls.lineHeight,\n type: 'line-height'\n }, {\n key: 'letter-spacing',\n title: lang.controls.letterSpacing,\n type: 'letter-spacing'\n }, {\n key: 'text-indent',\n title: lang.controls.textIndent,\n type: 'text-indent'\n }, {\n key: 'font-size',\n title: lang.controls.fontSize,\n type: 'font-size'\n }, {\n key: 'font-family',\n title: lang.controls.fontFamily,\n type: 'font-family'\n }, {\n key: 'text-align',\n title: lang.controls.textAlign,\n type: 'text-align'\n }, {\n key: 'media',\n title: lang.controls.media,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-media\"\n }),\n type: 'media'\n }, {\n key: 'emoji',\n title: lang.controls.emoji,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-emoji\"\n }),\n type: 'emoji'\n }, {\n key: 'clear',\n title: lang.controls.clear,\n text: external_react_default.a.createElement(\"i\", {\n className: \"bfi-clear_all\"\n }),\n type: 'editor-method',\n command: 'clearEditorContent'\n }, {\n key: 'fullscreen',\n title: editor.state.isFullscreen ? lang.controls.exitFullscreen : lang.controls.fullscreen,\n text: external_react_default.a.createElement(\"i\", {\n className: editor.state.isFullscreen ? 'bfi-fullscreen-exit' : 'bfi-fullscreen'\n }),\n type: 'editor-method',\n command: 'toggleFullscreen'\n }, {\n key: 'modal',\n type: 'modal'\n }, {\n key: 'button',\n type: 'button'\n }, {\n key: 'dropdown',\n type: 'dropdown'\n }, {\n key: 'component',\n type: 'component'\n }];\n});\nvar imageControlItems = {\n 'float-left': {\n text: external_react_default.a.createElement(\"span\", {\n \"data-float\": \"left\"\n }, \"\\uE91E\"),\n command: 'setImageFloat|left'\n },\n 'float-right': {\n text: external_react_default.a.createElement(\"span\", {\n \"data-float\": \"right\"\n }, \"\\uE914\"),\n command: 'setImageFloat|right'\n },\n 'align-left': {\n text: external_react_default.a.createElement(\"span\", {\n \"data-align\": \"left\"\n }, \"\\uE027\"),\n command: 'setImageAlignment|left'\n },\n 'align-center': {\n text: external_react_default.a.createElement(\"span\", {\n \"data-align\": \"center\"\n }, \"\\uE028\"),\n command: 'setImageAlignment|center'\n },\n 'align-right': {\n text: external_react_default.a.createElement(\"span\", {\n \"data-align\": \"right\"\n }, \"\\uE029\"),\n command: 'setImageAlignment|right'\n },\n 'size': {\n text: external_react_default.a.createElement(\"span\", null, \"\\uE3C2\"),\n command: 'toggleSizeEditor'\n },\n 'link': {\n text: external_react_default.a.createElement(\"span\", null, \"\\uE91A\"),\n command: 'toggleLinkEditor'\n },\n 'remove': {\n text: external_react_default.a.createElement(\"span\", null, \"\\uE9AC\"),\n command: 'removeImage'\n }\n};\n// CONCATENATED MODULE: ./renderers/atomics/Image/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image_Image =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(Image, _React$Component);\n\n function Image() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, Image);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(Image)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n toolbarVisible: false,\n toolbarOffset: 0,\n linkEditorVisible: false,\n sizeEditorVisible: false,\n tempLink: null,\n tempWidth: null,\n tempHeight: null\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"initialLeft\", void 0);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"initialTop\", void 0);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"initialWidth\", void 0);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"initialHeight\", void 0);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"reSizeType\", void 0);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"changeSize\", function (e) {\n var type = _this.reSizeType;\n\n if (!_this.initialLeft) {\n _this.initialLeft = e.screenX;\n _this.initialTop = e.screenY;\n }\n\n if (type === 'rightbottom') {\n _this.initialHeight += e.screenY - _this.initialTop;\n _this.initialWidth += e.screenX - _this.initialLeft;\n }\n\n if (type === 'leftbottom') {\n _this.initialHeight += e.screenY - _this.initialTop;\n _this.initialWidth += -e.screenX + _this.initialLeft;\n }\n\n _this.initialLeft = e.screenX;\n _this.initialTop = e.screenY;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"moveImage\", function (e) {\n _this.changeSize(e);\n\n _this.setState({\n tempWidth: Math.abs(_this.initialWidth),\n tempHeight: Math.abs(_this.initialHeight)\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"upImage\", function () {\n _this.confirmImageSize();\n\n document.removeEventListener('mousemove', _this.moveImage);\n document.removeEventListener('mouseup', _this.upImage);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"repareChangeSize\", function (type) {\n return function (e) {\n _this.reSizeType = type;\n\n var imageRect = _this.imageElement.getBoundingClientRect();\n\n _this.initialLeft = _this.initialTop = 0;\n _this.initialWidth = imageRect.width;\n _this.initialHeight = imageRect.height;\n e.preventDefault();\n document.addEventListener('mousemove', _this.moveImage);\n document.addEventListener('mouseup', _this.upImage);\n };\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"preventDragEvent\", function (event) {\n event.stopPropagation();\n event.preventDefault();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleDragStart\", function () {\n if (_this.props.editor.editorProps.readOnly || _this.props.editor.editorProps.disabled) {\n return false;\n }\n\n window.__BRAFT_DRAGING__IMAGE__ = {\n block: _this.props.block,\n mediaData: objectSpread_default()({\n type: 'IMAGE'\n }, _this.props.mediaData)\n };\n\n _this.setState({\n toolbarVisible: false\n }, function () {\n _this.unlockEditor();\n });\n\n return true;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleDragEnd\", function () {\n window.__BRAFT_DRAGING__IMAGE__ = null;\n return false;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"executeCommand\", function (command) {\n if (typeof command === 'string') {\n var _command$split = command.split('|'),\n _command$split2 = slicedToArray_default()(_command$split, 2),\n method = _command$split2[0],\n param = _command$split2[1];\n\n _this[method] && _this[method](param);\n } else if (typeof command === 'function') {\n command(_this.props.block, _this.props.mediaData, _this.props.editor.getValue());\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeImage\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].removeBlock(_this.props.editor.getValue(), _this.props.block));\n\n _this.unlockEditor();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"toggleLinkEditor\", function () {\n _this.setState({\n linkEditorVisible: !_this.state.linkEditorVisible,\n sizeEditorVisible: false\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"toggleSizeEditor\", function () {\n _this.setState({\n linkEditorVisible: false,\n sizeEditorVisible: !_this.state.sizeEditorVisible\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleLinkInputKeyDown\", function (e) {\n if (e.keyCode === 13) {\n _this.confirmImageLink();\n } else {\n return;\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setImageLink\", function (e) {\n _this.setState({\n tempLink: e.currentTarget.value\n });\n\n return;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"confirmImageLink\", function () {\n var link = _this.state.tempLink;\n\n var hookReturns = _this.props.hooks('set-image-link', link)(link);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n link = hookReturns;\n }\n\n if (link !== null) {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].setMediaData(_this.props.editor.getValue(), _this.props.entityKey, {\n link: link\n }));\n\n window.setImmediate(_this.props.editor.forceRender);\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleSizeInputKeyDown\", function (e) {\n if (e.keyCode === 13) {\n _this.confirmImageSize();\n } else {\n return;\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setImageWidth\", function (_ref) {\n var currentTarget = _ref.currentTarget;\n var value = currentTarget.value;\n value && !isNaN(value) && (value = value + 'px');\n\n _this.setState({\n tempWidth: value\n });\n\n return;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setImageHeight\", function (_ref2) {\n var currentTarget = _ref2.currentTarget;\n var value = currentTarget.value;\n value && !isNaN(value) && (value = value + 'px');\n\n _this.setState({\n tempHeight: value\n });\n\n return;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"confirmImageSize\", function () {\n var _this$state = _this.state,\n width = _this$state.tempWidth,\n height = _this$state.tempHeight;\n var newImageSize = {};\n width !== null && (newImageSize.width = width);\n height !== null && (newImageSize.height = height);\n\n var hookReturns = _this.props.hooks('set-image-size', newImageSize)(newImageSize);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (hookReturns && (hookReturns.width || hookReturns.height)) {\n newImageSize = hookReturns;\n }\n\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].setMediaData(_this.props.editor.getValue(), _this.props.entityKey, newImageSize));\n\n window.setImmediate(_this.props.editor.forceRender);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setImageFloat\", function (float) {\n var hookReturns = _this.props.hooks('set-image-float', float)(float);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n float = hookReturns;\n }\n\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].setMediaPosition(_this.props.editor.getValue(), _this.props.block, {\n float: float\n }));\n\n _this.unlockEditor();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setImageAlignment\", function (alignment) {\n var hookReturns = _this.props.hooks('set-image-alignment', alignment)(alignment);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n alignment = hookReturns;\n }\n\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].setMediaPosition(_this.props.editor.getValue(), _this.props.block, {\n alignment: alignment\n }));\n\n _this.unlockEditor();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"showToolbar\", function (event) {\n if (_this.props.editor.editorProps.readOnly || _this.props.editor.editorProps.disabled) {\n return false;\n }\n\n event.preventDefault();\n\n if (!_this.state.toolbarVisible) {\n _this.setState({\n toolbarVisible: true\n }, function () {\n _this.lockEditor();\n\n _this.setState({\n toolbarOffset: _this.calcToolbarOffset()\n });\n });\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"hideToolbar\", function (event) {\n event.preventDefault();\n\n _this.setState({\n toolbarVisible: false\n }, function () {\n _this.unlockEditor(); // this.props.editor.requestFocus()\n\n });\n });\n\n return _this;\n }\n\n createClass_default()(Image, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n mediaData = _this$props.mediaData,\n language = _this$props.language,\n imageControls = _this$props.imageControls,\n imageResizable = _this$props.imageResizable;\n var _this$state2 = this.state,\n toolbarVisible = _this$state2.toolbarVisible,\n toolbarOffset = _this$state2.toolbarOffset,\n linkEditorVisible = _this$state2.linkEditorVisible,\n sizeEditorVisible = _this$state2.sizeEditorVisible,\n tempWidth = _this$state2.tempWidth,\n tempHeight = _this$state2.tempHeight;\n var blockData = this.props.block.getData();\n var float = blockData.get('float');\n var alignment = blockData.get('alignment');\n var url = mediaData.url,\n link = mediaData.link,\n link_target = mediaData.link_target,\n width = mediaData.width,\n height = mediaData.height,\n meta = mediaData.meta;\n var imageStyles = {};\n var clearFix = false;\n\n if (float) {\n alignment = null;\n } else if (alignment === 'left') {\n imageStyles.float = 'left';\n clearFix = true;\n } else if (alignment === 'right') {\n imageStyles.float = 'right';\n clearFix = true;\n } else if (alignment === 'center') {\n imageStyles.textAlign = 'center';\n } else {\n imageStyles.float = 'left';\n clearFix = true;\n }\n\n var renderedControlItems = imageControls.map(function (item, index) {\n if (typeof item === 'string' && imageControlItems[item]) {\n return external_react_default.a.createElement(\"a\", {\n className: item === 'link' && link ? 'active' : '',\n key: index,\n onClick: function onClick() {\n return _this2.executeCommand(imageControlItems[item].command);\n }\n }, imageControlItems[item].text);\n } else if (item && (item.render || item.text)) {\n return item.render ? item.render(mediaData, _this2.props.block) : external_react_default.a.createElement(\"a\", {\n key: index,\n onClick: function onClick() {\n return item.onClick && _this2.executeCommand(item.onClick);\n }\n }, item.text);\n } else {\n return null;\n }\n });\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-media\"\n }, external_react_default.a.createElement(\"div\", {\n style: imageStyles,\n draggable: true,\n onMouseEnter: this.showToolbar,\n onMouseMove: this.showToolbar,\n onMouseLeave: this.hideToolbar,\n onDragStart: this.handleDragStart,\n onDragEnd: this.handleDragEnd,\n ref: function ref(instance) {\n return _this2.mediaEmbederInstance = instance;\n },\n className: \"bf-image\"\n }, toolbarVisible ? external_react_default.a.createElement(\"div\", {\n style: {\n marginLeft: toolbarOffset\n },\n ref: function ref(instance) {\n return _this2.toolbarElement = instance;\n },\n \"data-float\": float,\n \"data-align\": alignment,\n className: \"bf-media-toolbar\"\n }, linkEditorVisible ? external_react_default.a.createElement(\"div\", {\n className: \"bf-image-link-editor\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"editor-input-group\"\n }, external_react_default.a.createElement(\"input\", {\n type: \"text\",\n placeholder: language.linkEditor.inputWithEnterPlaceHolder,\n onKeyDown: this.handleLinkInputKeyDown,\n onChange: this.setImageLink,\n defaultValue: link\n }), external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.confirmImageLink\n }, language.base.confirm)), external_react_default.a.createElement(\"div\", {\n className: \"switch-group\"\n }, external_react_default.a.createElement(Switch, {\n active: link_target === '_blank',\n onClick: function onClick() {\n return _this2.setImageLinkTarget(link_target);\n }\n }), external_react_default.a.createElement(\"label\", null, language.linkEditor.openInNewWindow))) : null, sizeEditorVisible ? external_react_default.a.createElement(\"div\", {\n className: \"bf-image-size-editor\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"editor-input-group\"\n }, external_react_default.a.createElement(\"input\", {\n type: \"text\",\n placeholder: language.base.width,\n onKeyDown: this.handleSizeInputKeyDown,\n onChange: this.setImageWidth,\n defaultValue: width\n }), external_react_default.a.createElement(\"input\", {\n type: \"text\",\n placeholder: language.base.height,\n onKeyDown: this.handleSizeInputKeyDown,\n onChange: this.setImageHeight,\n defaultValue: height\n }), external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.confirmImageSize\n }, language.base.confirm))) : null, renderedControlItems, external_react_default.a.createElement(\"i\", {\n style: {\n marginLeft: toolbarOffset * -1\n },\n className: \"bf-media-toolbar-arrow\"\n })) : null, external_react_default.a.createElement(\"div\", {\n style: {\n position: 'relative',\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n display: 'inline-block'\n }\n }, external_react_default.a.createElement(\"img\", extends_default()({\n ref: function ref(instance) {\n return _this2.imageElement = instance;\n },\n src: url,\n width: width,\n height: height\n }, meta)), toolbarVisible && imageResizable ? external_react_default.a.createElement(\"div\", {\n className: \"bf-csize-icon right-bottom\",\n onMouseDown: this.repareChangeSize('rightbottom')\n }) : null, toolbarVisible && imageResizable ? external_react_default.a.createElement(\"div\", {\n className: \"bf-csize-icon left-bottom\",\n onMouseDown: this.repareChangeSize('leftbottom')\n }) : null, external_react_default.a.createElement(\"div\", {\n className: \"bf-pre-csize \".concat(this.reSizeType),\n style: {\n width: \"\".concat(tempWidth, \"px\"),\n height: \"\".concat(tempHeight, \"px\")\n }\n }))), clearFix && external_react_default.a.createElement(\"div\", {\n className: \"clearfix\",\n style: {\n clear: 'both',\n height: 0,\n lineHeight: 0,\n float: 'none'\n }\n }));\n }\n }, {\n key: \"lockEditor\",\n value: function lockEditor() {\n this.props.editor.lockOrUnlockEditor(true);\n }\n }, {\n key: \"unlockEditor\",\n value: function unlockEditor() {\n this.props.editor.lockOrUnlockEditor(false);\n }\n }, {\n key: \"calcToolbarOffset\",\n value: function calcToolbarOffset() {\n var _this$props2 = this.props,\n getContainerNode = _this$props2.getContainerNode,\n containerNode = _this$props2.containerNode;\n var container = getContainerNode ? getContainerNode() : containerNode;\n\n if (!container) {\n return 0;\n }\n\n var viewRect = container.querySelector('.bf-content').getBoundingClientRect();\n var toolbarRect = this.toolbarElement.getBoundingClientRect();\n var imageRect = this.imageElement.getBoundingClientRect();\n var right = viewRect.right - (imageRect.right - imageRect.width / 2 + toolbarRect.width / 2);\n var left = imageRect.left + imageRect.width / 2 - toolbarRect.width / 2 - viewRect.left;\n\n if (right < 10) {\n return right - 10;\n } else if (left < 10) {\n return left * -1 + 10;\n } else {\n return 0;\n }\n }\n }, {\n key: \"setImageLinkTarget\",\n value: function setImageLinkTarget(link_target) {\n var hookReturns = this.props.hooks('set-image-link-target', link_target)(link_target);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n link_target = hookReturns;\n }\n\n link_target = link_target === '_blank' ? '' : '_blank';\n this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].setMediaData(this.props.editor.getValue(), this.props.entityKey, {\n link_target: link_target\n }));\n window.setImmediate(this.props.editor.forceRender);\n }\n }]);\n\n return Image;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./renderers/atomics/Video/style.scss\nvar Video_style = __webpack_require__(47);\n\n// EXTERNAL MODULE: ./components/common/Modal/style.scss\nvar Modal_style = __webpack_require__(48);\n\n// EXTERNAL MODULE: external \"react-dom\"\nvar external_react_dom_ = __webpack_require__(16);\nvar external_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_react_dom_);\n\n// CONCATENATED MODULE: ./components/common/Modal/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Modal_Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(Modal, _React$Component);\n\n function Modal(props) {\n var _this;\n\n classCallCheck_default()(this, Modal);\n\n _this = possibleConstructorReturn_default()(this, getPrototypeOf_default()(Modal).call(this, props));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleTransitionEnd\", function () {\n if (!_this.rootElement || !_this.rootElement.classList) {\n return false;\n }\n\n if (!_this.rootElement.classList.contains('active')) {\n external_react_dom_default.a.unmountComponentAtNode(_this.rootElement) && _this.rootElement.parentNode.removeChild(_this.rootElement);\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleMouseDown\", function (event) {\n var tagName = event.target.tagName.toLowerCase();\n\n if (tagName === 'input' || tagName === 'textarea') {\n return false;\n }\n\n event.preventDefault();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleCancel\", function () {\n _this.props.closeOnCancel && _this.close();\n _this.props.onCancel && _this.props.onCancel();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleConfirm\", function () {\n _this.props.closeOnConfirm && _this.close();\n _this.props.onConfirm && _this.props.onConfirm();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleMaskClick\", function () {\n _this.props.closeOnBlur && _this.close();\n _this.props.onBlue && _this.props.onBlue();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"close\", function () {\n _this.unrenderComponent();\n\n _this.props.onClose && _this.props.onClose();\n });\n\n _this.active = false;\n _this.componentId = 'BRAFT-MODAL-' + external_braft_utils_[\"BaseUtils\"].UniqueIndex();\n return _this;\n }\n\n createClass_default()(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.visible) {\n this.active = true;\n this.renderComponent(this.props);\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(next) {\n if (this.props.visible && !next.visible) {\n this.unrenderComponent();\n } else if (this.props.visible || next.visible) {\n this.active = true;\n this.renderComponent(next);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }, {\n key: \"unrenderComponent\",\n value: function unrenderComponent() {\n this.active = false;\n this.activeId && window.clearImmediate(this.activeId);\n\n if (this.rootElement && this.rootElement.classList) {\n this.rootElement.classList.remove('active');\n }\n }\n }, {\n key: \"renderComponent\",\n value: function renderComponent(props) {\n var _this2 = this;\n\n if (!this.active) {\n return false;\n }\n\n var title = props.title,\n className = props.className,\n width = props.width,\n height = props.height,\n children = props.children,\n component = props.component,\n confirmable = props.confirmable,\n showFooter = props.showFooter,\n showCancel = props.showCancel,\n showConfirm = props.showConfirm,\n showClose = props.showClose,\n cancelText = props.cancelText,\n confirmText = props.confirmText,\n bottomText = props.bottomText,\n language = props.language;\n typeof showCancel === 'undefined' && (showCancel = true);\n typeof showClose === 'undefined' && (showClose = true);\n typeof showConfirm === 'undefined' && (showConfirm = true);\n typeof showFooter === 'undefined' && (showFooter = true);\n var childComponent = external_react_default.a.createElement(\"div\", {\n onMouseDown: this.handleMouseDown,\n className: 'bf-modal ' + (className || '')\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-mask\",\n onClick: this.handleMaskClick\n }), external_react_default.a.createElement(\"div\", {\n onTransitionEnd: this.handleTransitionEnd,\n style: {\n width: width,\n height: height\n },\n className: \"bf-modal-content\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-header\"\n }, external_react_default.a.createElement(\"h3\", {\n className: \"bf-modal-caption\"\n }, title), showClose && external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.close,\n className: \"bf-modal-close-button\"\n }, external_react_default.a.createElement(\"i\", {\n className: \"bfi-close\"\n }))), external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-body\"\n }, children || component), showFooter ? external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-footer\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-addon-text\"\n }, bottomText), external_react_default.a.createElement(\"div\", {\n className: \"bf-modal-buttons\"\n }, showCancel && external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleCancel,\n className: \"bf-modal-cancel\"\n }, cancelText || language.base.cancel), showConfirm && external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleConfirm,\n className: 'bf-modal-confirm ' + (!confirmable ? 'disabled' : '')\n }, confirmText || language.base.confirm))) : null));\n this.rootElement = document.querySelector('#' + this.componentId);\n\n if (!this.rootElement) {\n this.rootElement = document.createElement('div');\n this.rootElement.id = this.componentId;\n this.rootElement.className = 'bf-modal-root';\n document.body.appendChild(this.rootElement);\n }\n\n external_react_dom_default.a.render(childComponent, this.rootElement);\n this.activeId = window.setImmediate(function () {\n _this2.rootElement.classList.add('active');\n });\n }\n }]);\n\n return Modal;\n}(external_react_default.a.Component);\n\ndefineProperty_default()(Modal_Modal, \"defaultProps\", {\n showFooter: true,\n closeOnBlur: true\n});\n\n\nvar Modal_showModal = function showModal(props) {\n var hostNode = document.createElement('div');\n hostNode.style.display = 'none';\n document.body.appendChild(hostNode);\n props = objectSpread_default()({\n visible: true,\n closeOnConfirm: true,\n closeOnCancel: true\n }, props);\n\n var close = function close() {\n external_react_dom_default.a.unmountComponentAtNode(hostNode) && hostNode.parentNode.removeChild(hostNode);\n };\n\n var onConfirm = function onConfirm() {\n props.onConfirm && props.onConfirm();\n };\n\n var onCancel = function onCancel() {\n props.onCancel && props.onCancel();\n };\n\n var onClose = function onClose() {\n close();\n props.onClose && props.onClose();\n };\n\n var modalInstance = external_react_dom_default.a.render(external_react_default.a.createElement(Modal_Modal, extends_default()({}, props, {\n onConfirm: onConfirm,\n onCancel: onCancel,\n onClose: onClose\n })), hostNode);\n modalInstance.destroy = close;\n modalInstance.update = modalInstance.renderComponent;\n return modalInstance;\n};\n// EXTERNAL MODULE: ./components/business/PlayerModal/style.scss\nvar PlayerModal_style = __webpack_require__(49);\n\n// CONCATENATED MODULE: ./components/business/PlayerModal/index.jsx\n\n\n\n\nvar PlayerModal_playViaModal = function playViaModal(title, component, language) {\n return Modal_showModal({\n title: title,\n component: component,\n language: language,\n showFooter: false\n });\n};\n\nvar typeIconsMap = {\n 'video': 'bfi-film',\n 'audio': 'bfi-music',\n 'embed': 'bfi-code'\n};\n/* harmony default export */ var PlayerModal = (function (_ref) {\n var title = _ref.title,\n type = _ref.type,\n language = _ref.language,\n name = _ref.name,\n url = _ref.url,\n poster = _ref.poster,\n children = _ref.children,\n onRemove = _ref.onRemove;\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-player-holder \".concat(type)\n }, external_react_default.a.createElement(\"div\", {\n className: \"icon-badge\"\n }, external_react_default.a.createElement(\"i\", {\n className: typeIconsMap[type]\n }), external_react_default.a.createElement(\"span\", {\n className: \"text\"\n }, language.media[type])), external_react_default.a.createElement(\"button\", {\n onMouseDown: onRemove,\n className: \"button-remove\"\n }, external_react_default.a.createElement(\"i\", {\n className: \"bfi-close\"\n })), external_react_default.a.createElement(\"button\", {\n onMouseDown: function onMouseDown() {\n return PlayerModal_playViaModal(name ? \"\".concat(title, \":\").concat(name) : title, children, language);\n },\n className: \"button-play\"\n }, external_react_default.a.createElement(\"i\", {\n className: \"bfi-play_arrow\"\n })), name ? external_react_default.a.createElement(\"h5\", {\n className: \"bf-name\"\n }, name) : null, external_react_default.a.createElement(\"h6\", {\n className: \"bf-url\"\n }, url), poster ? external_react_default.a.createElement(\"div\", {\n className: \"bf-poster\",\n style: {\n backgroundImage: \"url(\".concat(poster, \")\")\n }\n }) : null);\n});\n// CONCATENATED MODULE: ./renderers/atomics/Video/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\nvar Video_Video =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(Video, _React$Component);\n\n function Video() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, Video);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(Video)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeVideo\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].removeBlock(_this.props.editorState, _this.props.block));\n });\n\n return _this;\n }\n\n createClass_default()(Video, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n mediaData = _this$props.mediaData,\n language = _this$props.language;\n var url = mediaData.url,\n name = mediaData.name,\n meta = mediaData.meta;\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-video-wrap\"\n }, external_react_default.a.createElement(PlayerModal, {\n type: \"video\",\n onRemove: this.removeVideo,\n poster: meta ? meta.poster || '' : '',\n language: language,\n url: url,\n name: name,\n title: language.videoPlayer.title\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-video-player\"\n }, external_react_default.a.createElement(\"video\", {\n controls: true,\n poster: meta ? meta.poster || '' : ''\n }, external_react_default.a.createElement(\"source\", {\n src: url\n })))));\n }\n }]);\n\n return Video;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./renderers/atomics/Audio/style.scss\nvar Audio_style = __webpack_require__(50);\n\n// CONCATENATED MODULE: ./renderers/atomics/Audio/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\nvar Audio_Audio =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(Audio, _React$Component);\n\n function Audio() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, Audio);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(Audio)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeAudio\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].removeBlock(_this.props.editorState, _this.props.block));\n });\n\n return _this;\n }\n\n createClass_default()(Audio, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n mediaData = _this$props.mediaData,\n language = _this$props.language;\n var url = mediaData.url,\n name = mediaData.name,\n meta = mediaData.meta;\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-audio-wrap\"\n }, external_react_default.a.createElement(PlayerModal, {\n type: \"audio\",\n onRemove: this.removeAudio,\n poster: meta ? meta.poster || '' : '',\n language: language,\n url: url,\n name: name,\n title: language.audioPlayer.title\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-audio-player\"\n }, external_react_default.a.createElement(\"audio\", {\n controls: true,\n src: url\n }))));\n }\n }]);\n\n return Audio;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./renderers/atomics/Embed/style.scss\nvar Embed_style = __webpack_require__(51);\n\n// CONCATENATED MODULE: ./renderers/atomics/Embed/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\nvar Embed_Embed =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(Embed, _React$Component);\n\n function Embed() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, Embed);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(Embed)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeEmbed\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].removeBlock(_this.props.editorState, _this.props.block));\n });\n\n return _this;\n }\n\n createClass_default()(Embed, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n mediaData = _this$props.mediaData,\n language = _this$props.language;\n var name = mediaData.name,\n url = mediaData.url,\n meta = mediaData.meta;\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-embed-wrap\"\n }, external_react_default.a.createElement(PlayerModal, {\n type: \"embed\",\n onRemove: this.removeEmbed,\n poster: meta ? meta.poster || '' : '',\n language: language,\n url: url,\n name: name,\n title: language.videoPlayer.embedTitle\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-embed-player\",\n dangerouslySetInnerHTML: {\n __html: url\n }\n })));\n }\n }]);\n\n return Embed;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./renderers/atomics/HorizontalLine/style.scss\nvar HorizontalLine_style = __webpack_require__(52);\n\n// CONCATENATED MODULE: ./renderers/atomics/HorizontalLine/index.jsx\n\n\n\n\n\n\n\n\n\n\n\nvar HorizontalLine_HorizontalLine =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(HorizontalLine, _React$Component);\n\n function HorizontalLine() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, HorizontalLine);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(HorizontalLine)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeHorizontalLine\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].removeBlock(_this.props.editorState, _this.props.block));\n });\n\n return _this;\n }\n\n createClass_default()(HorizontalLine, [{\n key: \"render\",\n value: function render() {\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-hr\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-media-toolbar\"\n }, external_react_default.a.createElement(\"a\", {\n onClick: this.removeHorizontalLine\n }, \"\\uE9AC\")));\n }\n }]);\n\n return HorizontalLine;\n}(external_react_default.a.Component);\n\n\n// CONCATENATED MODULE: ./renderers/block/blockRendererFn.js\n\n\n\n\n\n\n\n\n\n\n\nvar blockRendererFn_BlockRenderFnContext = function BlockRenderFnContext() {\n var _this = this;\n\n classCallCheck_default()(this, BlockRenderFnContext);\n\n defineProperty_default()(this, \"superProps\", void 0);\n\n defineProperty_default()(this, \"customBlockRendererFn\", void 0);\n\n defineProperty_default()(this, \"getRenderFn\", function (superProps, customBlockRendererFn) {\n _this.superProps = superProps;\n _this.customBlockRendererFn = customBlockRendererFn;\n return _this.blockRendererFn;\n });\n\n defineProperty_default()(this, \"renderAtomicBlock\", function (props) {\n var superProps = _this.superProps;\n var entityKey = props.block.getEntityAt(0);\n\n if (!entityKey) {\n return null;\n }\n\n var entity = props.contentState.getEntity(entityKey);\n var mediaData = entity.getData();\n var mediaType = entity.getType();\n\n var mediaProps = objectSpread_default()({}, superProps, {\n block: props.block,\n mediaData: mediaData,\n entityKey: entityKey\n });\n\n if (mediaType === 'IMAGE') {\n return external_react_default.a.createElement(Image_Image, mediaProps);\n } else if (mediaType === 'AUDIO') {\n return external_react_default.a.createElement(Audio_Audio, mediaProps);\n } else if (mediaType === 'VIDEO') {\n return external_react_default.a.createElement(Video_Video, mediaProps);\n } else if (mediaType === 'EMBED') {\n return external_react_default.a.createElement(Embed_Embed, mediaProps);\n } else if (mediaType === 'HR') {\n return external_react_default.a.createElement(HorizontalLine_HorizontalLine, mediaProps);\n }\n\n if (superProps.extendAtomics) {\n var atomics = superProps.extendAtomics;\n\n for (var i = 0; i < atomics.length; i++) {\n if (mediaType === atomics[i].type) {\n var Component = atomics[i].component;\n return external_react_default.a.createElement(Component, mediaProps);\n }\n }\n }\n\n return null;\n });\n\n defineProperty_default()(this, \"blockRendererFn\", function (block) {\n var customBlockRendererFn = _this.customBlockRendererFn,\n superProps = _this.superProps;\n var blockType = block.getType();\n var blockRenderer = null;\n\n if (customBlockRendererFn) {\n blockRenderer = customBlockRendererFn(block, superProps) || null;\n }\n\n if (blockRenderer) {\n return blockRenderer;\n }\n\n var extensionBlockRendererFns = getExtensionBlockRendererFns(superProps.editorId);\n extensionBlockRendererFns.find(function (item) {\n if (item.blockType === blockType || item.blockType instanceof RegExp && item.blockType.test(blockType)) {\n blockRenderer = item.rendererFn ? item.rendererFn(superProps) : null;\n return true;\n }\n });\n\n if (blockRenderer) {\n return blockRenderer;\n }\n\n if (blockType === 'atomic') {\n blockRenderer = {\n component: _this.renderAtomicBlock,\n editable: false\n };\n }\n\n return blockRenderer;\n });\n};\n\nvar blockRenderFnContext = new blockRendererFn_BlockRenderFnContext();\n/* harmony default export */ var block_blockRendererFn = (blockRenderFnContext.getRenderFn);\n// CONCATENATED MODULE: ./renderers/block/blockStyleFn.js\n/* harmony default export */ var block_blockStyleFn = (function (customBlockStyleFn) {\n return function (block) {\n var blockAlignment = block.getData() && block.getData().get('textAlign');\n var blockIndent = block.getData() && block.getData().get('textIndent');\n var blockFloat = block.getData() && block.getData().get('float');\n var result = '';\n\n if (blockAlignment) {\n result = \"bfa-\".concat(blockAlignment);\n }\n\n if (blockIndent && blockIndent !== 0) {\n result += \" bftd-\".concat(blockIndent);\n }\n\n if (blockFloat) {\n result += \" bff-\".concat(blockFloat);\n }\n\n if (customBlockStyleFn) {\n result += customBlockStyleFn(block) || '';\n }\n\n return result;\n };\n});\n// CONCATENATED MODULE: ./renderers/inline/inlineStyleMap.js\n\n\n/* harmony default export */ var inlineStyleMap = (function (props) {\n var customStyleMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var extensionInlineStyleMap = getExtensionInlineStyleMap(props.editorId);\n return objectSpread_default()({\n 'SUPERSCRIPT': {\n position: 'relative',\n top: '-8px',\n fontSize: '11px'\n },\n 'SUBSCRIPT': {\n position: 'relative',\n bottom: '-8px',\n fontSize: '11px'\n }\n }, extensionInlineStyleMap, customStyleMap);\n});\n// CONCATENATED MODULE: ./renderers/inline/inlineStyleFn.js\n\n\nvar getStyleValue = function getStyleValue(style) {\n return style.split('-')[1];\n};\n\n/* harmony default export */ var inlineStyleFn = (function (props, options) {\n return function (styles, block) {\n var output = {};\n var fontFamilies = options.fontFamilies,\n unitExportFn = options.unitExportFn,\n customStyleFn = options.customStyleFn;\n var extensionInlineStyleFns = getExtensionInlineStyleFns(props.editorId);\n extensionInlineStyleFns.forEach(function (item) {\n output = item.styleFn ? item.styleFn(styles, block, output) : output;\n });\n output = customStyleFn ? customStyleFn(styles, block, output) : {};\n styles.forEach(function (style) {\n if (style.indexOf('COLOR-') === 0) {\n output.color = '#' + getStyleValue(style);\n } else if (style.indexOf('BGCOLOR-') === 0) {\n output.backgroundColor = '#' + getStyleValue(style);\n } else if (style.indexOf('FONTSIZE-') === 0) {\n output.fontSize = unitExportFn(getStyleValue(style), 'font-size', 'editor');\n } else if (style.indexOf('LINEHEIGHT-') === 0) {\n output.lineHeight = unitExportFn(getStyleValue(style), 'line-height', 'editor');\n } else if (style.indexOf('LETTERSPACING-') === 0) {\n output.letterSpacing = unitExportFn(getStyleValue(style), 'letter-spacing', 'editor');\n } else if (style.indexOf('TEXTINDENT-') === 0) {\n output.textIndent = unitExportFn(getStyleValue(style), 'text-indent', 'editor');\n } else if (style.indexOf('FONTFAMILY-') === 0) {\n output.fontFamily = (fontFamilies.find(function (item) {\n return item.name.toUpperCase() === getStyleValue(style);\n }) || {}).family || '';\n }\n });\n return output;\n };\n});\n// EXTERNAL MODULE: ../node_modules/draft-js-multidecorators/index.js\nvar draft_js_multidecorators = __webpack_require__(18);\nvar draft_js_multidecorators_default = /*#__PURE__*/__webpack_require__.n(draft_js_multidecorators);\n\n// CONCATENATED MODULE: ./renderers/decorators/Link/index.jsx\n\n/* harmony default export */ var Link = (function (props) {\n var children = props.children,\n entityKey = props.entityKey,\n contentState = props.contentState;\n\n var _contentState$getEnti = contentState.getEntity(entityKey).getData(),\n href = _contentState$getEnti.href,\n target = _contentState$getEnti.target;\n\n return external_react_default.a.createElement(\"span\", {\n className: \"bf-link-wrap\"\n }, external_react_default.a.createElement(\"a\", {\n onClick: function onClick(event) {\n return viewLink(event, href);\n },\n className: \"bf-link\",\n href: href,\n target: target\n }, children));\n});\n\nvar viewLink = function viewLink(event, link) {\n // 当按下Ctrl/command键时,点击打开链接文字中的url\n if (event.getModifierState('Control') || event.getModifierState('Meta')) {\n var tempLink = document.createElement('a');\n tempLink.href = link;\n tempLink.target = event.currentTarget.target;\n tempLink.click();\n }\n};\n// CONCATENATED MODULE: ./renderers/decorators/index.js\n\n\n\n\n\n\nvar KEY_SEPARATOR = '-';\n\ndraft_js_multidecorators_default.a.prototype.getDecorations = function (block, contentState) {\n var decorations = Array(block.getText().length).fill(null);\n this.decorators.forEach(function (decorator, i) {\n decorator.getDecorations(block, contentState).forEach(function (key, offset) {\n if (!key) {\n return;\n }\n\n key = i + KEY_SEPARATOR + key;\n decorations[offset] = key;\n });\n });\n return external_immutable_default.a.List(decorations);\n};\n\nvar builtinDecorators = [{\n type: 'entity',\n decorator: {\n key: 'LINK',\n component: Link\n }\n}];\n\nvar createStrategy = function createStrategy(type) {\n return function (block, callback, contentState) {\n block.findEntityRanges(function (character) {\n var entityKey = character.getEntity();\n return entityKey !== null && contentState.getEntity(entityKey).getType() === type;\n }, callback);\n };\n};\n\n/* harmony default export */ var decorators = (function (editorId) {\n var extensionDecorators = getExtensionDecorators(editorId);\n var entityDecorators = builtinDecorators.concat(toConsumableArray_default()(extensionDecorators.filter(function (item) {\n return item.type === 'entity';\n })));\n var strategyDecorators = extensionDecorators.filter(function (item) {\n return item.type === 'strategy';\n });\n var classDecorators = extensionDecorators.filter(function (item) {\n return item.type === 'class';\n });\n return new draft_js_multidecorators_default.a(toConsumableArray_default()(classDecorators.map(function (item) {\n return item.decorator;\n })).concat([// combine decorators created with strategy\n new external_draft_js_[\"CompositeDecorator\"](strategyDecorators.map(function (item) {\n return item.decorator;\n })), // combine decorators for entities\n new external_draft_js_[\"CompositeDecorator\"](entityDecorators.map(function (item) {\n return {\n strategy: createStrategy(item.decorator.key),\n component: item.decorator.component\n };\n }))]));\n});\n// CONCATENATED MODULE: ./renderers/index.js\n\n\n\n\n\n\nvar getBlockRenderMap = block_blockRenderMap;\nvar getBlockRendererFn = block_blockRendererFn;\nvar getBlockStyleFn = block_blockStyleFn;\nvar getCustomStyleMap = inlineStyleMap;\nvar getCustomStyleFn = inlineStyleFn;\nvar getDecorators = decorators;\n// EXTERNAL MODULE: ./components/business/ControlBar/style.scss\nvar ControlBar_style = __webpack_require__(53);\n\n// EXTERNAL MODULE: ./components/business/LinkEditor/style.scss\nvar LinkEditor_style = __webpack_require__(54);\n\n// EXTERNAL MODULE: ./components/common/DropDown/style.scss\nvar DropDown_style = __webpack_require__(55);\n\n// CONCATENATED MODULE: ./helpers/responsive.js\n\n\nvar resizeEventHandlers = [];\nvar responsiveHelperInited = false;\nvar debouce = false;\n/* harmony default export */ var responsive = ({\n resolve: function resolve(eventHandler) {\n var id = external_braft_utils_[\"BaseUtils\"].UniqueIndex();\n resizeEventHandlers.push({\n id: id,\n eventHandler: eventHandler\n });\n return id;\n },\n unresolve: function unresolve(id) {\n resizeEventHandlers = resizeEventHandlers.filter(function (item) {\n return item.id !== id;\n });\n }\n});\n\nif (!responsiveHelperInited && (typeof window === \"undefined\" ? \"undefined\" : typeof_default()(window)) === 'object') {\n window.addEventListener('resize', function (event) {\n clearTimeout(debouce);\n debouce = setTimeout(function () {\n resizeEventHandlers.map(function (item) {\n typeof item.eventHandler === 'function' && item.eventHandler(event);\n });\n debouce = false;\n }, 100);\n });\n responsiveHelperInited = true;\n}\n// CONCATENATED MODULE: ./components/common/DropDown/index.jsx\n\n\n\n\n\n\n\n\n\n\n\nvar DropDown_DropDown =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(DropDown, _React$Component);\n\n function DropDown() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, DropDown);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(DropDown)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"responsiveResolveId\", null);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"dropDownHandlerElement\", null);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"dropDownContentElement\", null);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n active: false,\n offset: 0\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"fixDropDownPosition\", function () {\n var viewRect = _this.props.getContainerNode().getBoundingClientRect();\n\n var handlerRect = _this.dropDownHandlerElement.getBoundingClientRect();\n\n var contentRect = _this.dropDownContentElement.getBoundingClientRect();\n\n var offset = 0;\n var right = handlerRect.right - handlerRect.width / 2 + contentRect.width / 2;\n var left = handlerRect.left + handlerRect.width / 2 - contentRect.width / 2;\n right = viewRect.right - right;\n left = left - viewRect.left;\n\n if (right < 10) {\n offset = right - 10;\n } else if (left < 10) {\n offset = left * -1 + 10;\n }\n\n if (offset !== _this.state.offset) {\n _this.setState({\n offset: offset\n });\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"registerClickEvent\", function (event) {\n var autoHide = _this.props.autoHide;\n var active = _this.state.active;\n\n if (_this.dropDownContentElement.contains(event.target) || _this.dropDownHandlerElement.contains(event.target)) {\n return false;\n }\n\n autoHide && active && _this.hide();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"toggle\", function () {\n _this.setState({\n active: !_this.state.active\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"show\", function () {\n _this.setState({\n active: true\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"hide\", function () {\n _this.setState({\n active: false\n });\n });\n\n return _this;\n }\n\n createClass_default()(DropDown, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (document) {\n document.body.addEventListener('click', this.registerClickEvent);\n this.responsiveResolveId = responsive.resolve(this.fixDropDownPosition);\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(next) {\n if (!this.props.disabled && next.disabled) {\n this.hide();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevState) {\n if (!prevState.active && this.state.active) {\n this.fixDropDownPosition();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (document) {\n document.body.removeEventListener('click', this.registerClickEvent);\n responsive.unresolve(this.responsiveResolveId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$state = this.state,\n active = _this$state.active,\n offset = _this$state.offset;\n var _this$props = this.props,\n caption = _this$props.caption,\n htmlCaption = _this$props.htmlCaption,\n title = _this$props.title,\n disabled = _this$props.disabled,\n showArrow = _this$props.showArrow,\n arrowActive = _this$props.arrowActive,\n className = _this$props.className,\n children = _this$props.children,\n theme = _this$props.theme;\n disabled && (active = false);\n theme === 'light' && (className = ' light-theme ' + className);\n return external_react_default.a.createElement(\"div\", {\n className: 'bf-dropdown ' + (active ? 'active ' : '') + (disabled ? 'disabled ' : '') + className\n }, htmlCaption ? external_react_default.a.createElement(\"button\", {\n type: \"button\",\n className: \"dropdown-handler\",\n \"data-title\": title,\n onClick: this.toggle,\n dangerouslySetInnerHTML: htmlCaption ? {\n __html: htmlCaption\n } : null,\n ref: function ref(instance) {\n return _this2.dropDownHandlerElement = instance;\n }\n }) : external_react_default.a.createElement(\"button\", {\n type: \"button\",\n className: \"dropdown-handler\",\n \"data-title\": title,\n onClick: this.toggle,\n ref: function ref(instance) {\n return _this2.dropDownHandlerElement = instance;\n }\n }, external_react_default.a.createElement(\"span\", null, caption), showArrow !== false ? external_react_default.a.createElement(\"i\", {\n className: \"bfi-drop-down\"\n }) : null), external_react_default.a.createElement(\"div\", {\n className: \"dropdown-content\",\n style: {\n marginLeft: offset\n },\n ref: function ref(instance) {\n return _this2.dropDownContentElement = instance;\n }\n }, external_react_default.a.createElement(\"i\", {\n style: {\n marginLeft: offset * -1\n },\n className: 'dropdown-arrow' + (arrowActive ? ' active' : '')\n }), external_react_default.a.createElement(\"div\", {\n className: \"dropdown-content-inner\"\n }, children)));\n }\n }]);\n\n return DropDown;\n}(external_react_default.a.Component);\n\n\n// CONCATENATED MODULE: ./components/business/ControlGroup/index.jsx\n\n/* harmony default export */ var ControlGroup = (function (props) {\n if (external_react_default.a.Fragment) {\n return external_react_default.a.createElement(external_react_default.a.Fragment, null, props.children);\n } else {\n return external_react_default.a.createElement(\"div\", {\n className: \"control-item-group\"\n }, props.children);\n }\n});\n// CONCATENATED MODULE: ./components/business/LinkEditor/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar LinkEditor_LinkEditor =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(LinkEditor, _React$Component);\n\n function LinkEditor(props) {\n var _this;\n\n classCallCheck_default()(this, LinkEditor);\n\n _this = possibleConstructorReturn_default()(this, getPrototypeOf_default()(LinkEditor).call(this, props));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"dropDownInstance\", null);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handeKeyDown\", function (e) {\n if (e.keyCode === 13) {\n _this.handleConfirm();\n\n e.preventDefault();\n return false;\n }\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleTnputText\", function (e) {\n _this.setState({\n text: e.currentTarget.value\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleInputLink\", function (e) {\n _this.setState({\n href: e.currentTarget.value\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setTarget\", function () {\n _this.setState({\n target: _this.state.target === '_blank' ? '' : '_blank'\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleCancel\", function () {\n _this.dropDownInstance.hide();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleUnlink\", function () {\n _this.dropDownInstance.hide();\n\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionLink(_this.props.editorState, false));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleConfirm\", function () {\n var _this$state = _this.state,\n text = _this$state.text,\n href = _this$state.href,\n target = _this$state.target,\n textSelected = _this$state.textSelected;\n\n var hookReturns = _this.props.hooks('toggle-link', {\n href: href,\n target: target\n })({\n href: href,\n target: target\n });\n\n _this.dropDownInstance.hide();\n\n _this.props.editor.requestFocus();\n\n if (hookReturns === false) {\n return false;\n }\n\n if (hookReturns) {\n typeof hookReturns.href === 'string' && (href = hookReturns.href);\n typeof hookReturns.target === 'string' && (target = hookReturns.target);\n }\n\n if (textSelected) {\n if (href) {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionLink(_this.props.editorState, href, target));\n } else {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionLink(_this.props.editorState, false));\n }\n } else {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].insertText(_this.props.editorState, text || href, null, {\n type: 'LINK',\n data: {\n href: href,\n target: target\n }\n }));\n }\n });\n\n _this.state = {\n text: '',\n href: '',\n target: props.defaultLinkTarget || '',\n textSelected: false\n };\n return _this;\n }\n\n createClass_default()(LinkEditor, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _ContentUtils$getSele = external_braft_utils_[\"ContentUtils\"].getSelectionEntityData(nextProps.editorState, 'LINK'),\n href = _ContentUtils$getSele.href,\n target = _ContentUtils$getSele.target;\n\n var textSelected = !external_braft_utils_[\"ContentUtils\"].isSelectionCollapsed(this.props.editorState) && external_braft_utils_[\"ContentUtils\"].getSelectionBlockType(this.props.editorState) !== 'atomic';\n var selectedText = '';\n\n if (textSelected) {\n selectedText = external_braft_utils_[\"ContentUtils\"].getSelectionText(this.props.editorState);\n }\n\n this.setState({\n textSelected: textSelected,\n text: selectedText,\n href: href || '',\n target: typeof target === 'undefined' ? nextProps.defaultLinkTarget || '' : target || ''\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var allowInsertLinkText = this.props.allowInsertLinkText;\n var _this$state2 = this.state,\n text = _this$state2.text,\n href = _this$state2.href,\n target = _this$state2.target,\n textSelected = _this$state2.textSelected;\n var caption = external_react_default.a.createElement(\"i\", {\n className: \"bfi-link\"\n });\n return external_react_default.a.createElement(ControlGroup, null, external_react_default.a.createElement(DropDown_DropDown, {\n key: 0,\n caption: caption,\n title: this.props.language.controls.link,\n autoHide: true,\n getContainerNode: this.props.getContainerNode,\n showArrow: false,\n ref: function ref(instance) {\n return _this2.dropDownInstance = instance;\n },\n className: 'control-item dropdown link-editor-dropdown'\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-link-editor\"\n }, allowInsertLinkText ? external_react_default.a.createElement(\"div\", {\n className: \"input-group\"\n }, external_react_default.a.createElement(\"input\", {\n type: \"text\",\n value: text,\n spellCheck: false,\n disabled: textSelected,\n placeholder: this.props.language.linkEditor.textInputPlaceHolder,\n onKeyDown: this.handeKeyDown,\n onChange: this.handleTnputText\n })) : null, external_react_default.a.createElement(\"div\", {\n className: \"input-group\"\n }, external_react_default.a.createElement(\"input\", {\n type: \"text\",\n value: href,\n spellCheck: false,\n placeholder: this.props.language.linkEditor.linkInputPlaceHolder,\n onKeyDown: this.handeKeyDown,\n onChange: this.handleInputLink\n })), external_react_default.a.createElement(\"div\", {\n className: \"switch-group\"\n }, external_react_default.a.createElement(Switch, {\n active: target === '_blank',\n onClick: this.setTarget\n }), external_react_default.a.createElement(\"label\", null, this.props.language.linkEditor.openInNewWindow)), external_react_default.a.createElement(\"div\", {\n className: \"buttons\"\n }, external_react_default.a.createElement(\"a\", {\n onClick: this.handleUnlink,\n className: \"primary button-remove-link pull-left\"\n }, external_react_default.a.createElement(\"i\", {\n className: \"bfi-close\"\n }), external_react_default.a.createElement(\"span\", null, this.props.language.linkEditor.removeLink)), external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleConfirm,\n className: \"primary pull-right\"\n }, this.props.language.base.confirm), external_react_default.a.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleCancel,\n className: \"default pull-right\"\n }, this.props.language.base.cancel)))), external_react_default.a.createElement(\"button\", {\n key: 1,\n type: \"button\",\n \"data-title\": this.props.language.controls.unlink,\n className: \"control-item button\",\n onClick: this.handleUnlink,\n disabled: !textSelected || !href\n }, external_react_default.a.createElement(\"i\", {\n className: \"bfi-link-off\"\n })));\n }\n }]);\n\n return LinkEditor;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./components/business/Headings/style.scss\nvar Headings_style = __webpack_require__(56);\n\n// CONCATENATED MODULE: ./configs/maps.js\n\nvar maps_getHeadings = function getHeadings(lang) {\n return [{\n key: 'header-one',\n title: lang.controls.header + ' 1',\n text: external_react_default.a.createElement(\"h1\", null, lang.controls.header, \" 1\"),\n type: 'block-type',\n command: 'header-one'\n }, {\n key: 'header-two',\n title: lang.controls.header + ' 2',\n text: external_react_default.a.createElement(\"h2\", null, lang.controls.header, \" 2\"),\n type: 'block-type',\n command: 'header-two'\n }, {\n key: 'header-three',\n title: lang.controls.header + ' 3',\n text: external_react_default.a.createElement(\"h3\", null, lang.controls.header, \" 3\"),\n type: 'block-type',\n command: 'header-three'\n }, {\n key: 'header-four',\n title: lang.controls.header + ' 4',\n text: external_react_default.a.createElement(\"h4\", null, lang.controls.header, \" 4\"),\n type: 'block-type',\n command: 'header-four'\n }, {\n key: 'header-five',\n title: lang.controls.header + ' 5',\n text: external_react_default.a.createElement(\"h5\", null, lang.controls.header, \" 5\"),\n type: 'block-type',\n command: 'header-five'\n }, {\n key: 'header-six',\n title: lang.controls.header + ' 6',\n text: external_react_default.a.createElement(\"h6\", null, lang.controls.header, \" 6\"),\n type: 'block-type',\n command: 'header-six'\n }, {\n key: 'unstyled',\n title: lang.controls.normal,\n text: lang.controls.normal,\n type: 'block-type',\n command: 'unstyled'\n }];\n};\nvar blocks = {\n 'header-one': 'h1',\n 'header-two': 'h2',\n 'header-three': 'h3',\n 'header-four': 'h4',\n 'header-fiv': 'h5',\n 'header-six': 'h6',\n 'unstyled': 'p',\n 'blockquote': 'blockquote'\n};\n// CONCATENATED MODULE: ./components/business/Headings/index.jsx\n\n\n\n\n/* harmony default export */ var Headings = (function (props) {\n var dropDownInstance = null;\n var headings = maps_getHeadings(props.language).filter(function (item) {\n return props.headings.indexOf(item.key) !== -1;\n });\n var currentHeadingIndex = headings.findIndex(function (item) {\n return item.command === props.current;\n });\n var caption = headings[currentHeadingIndex] ? headings[currentHeadingIndex].title : props.language.controls.normal;\n return external_react_default.a.createElement(DropDown_DropDown, {\n caption: caption,\n autoHide: true,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.headings,\n arrowActive: currentHeadingIndex === 0,\n ref: function ref(instance) {\n return dropDownInstance = instance;\n },\n className: 'control-item dropdown headings-dropdown'\n }, external_react_default.a.createElement(\"ul\", {\n className: \"menu\"\n }, headings.map(function (item, index) {\n var isActive = props.current === item.command;\n return external_react_default.a.createElement(\"li\", {\n key: index,\n className: 'menu-item' + (isActive ? ' active' : ''),\n onClick: function onClick() {\n props.onChange(item.command, item.type), dropDownInstance.hide();\n }\n }, item.text);\n })));\n});\n// EXTERNAL MODULE: ./components/business/TextColor/style.scss\nvar TextColor_style = __webpack_require__(57);\n\n// EXTERNAL MODULE: ./components/common/ColorPicker/style.scss\nvar ColorPicker_style = __webpack_require__(58);\n\n// CONCATENATED MODULE: ./components/common/ColorPicker/index.jsx\n\n\n/* harmony default export */ var common_ColorPicker = (function (props) {\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-colors-wrap\"\n }, external_react_default.a.createElement(\"ul\", {\n className: \"bf-colors\"\n }, props.presetColors.map(function (item, index) {\n var className = props.color && item.toLowerCase() === props.color.toLowerCase() ? 'color-item active' : 'color-item';\n return external_react_default.a.createElement(\"li\", {\n key: index,\n title: item,\n className: className,\n style: {\n color: item\n },\n \"data-color\": item.replace('#', ''),\n onClick: function onClick(e) {\n props.onChange(e.currentTarget.dataset.color, true);\n }\n });\n })));\n});\n// CONCATENATED MODULE: ./components/business/TextColor/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TextColor_TextColor =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(TextColor, _React$Component);\n\n function TextColor() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, TextColor);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(TextColor)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n colorType: 'color'\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"switchColorType\", function (_ref) {\n var currentTarget = _ref.currentTarget;\n\n _this.setState({\n colorType: currentTarget.dataset.type\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"toggleColor\", function (color, closePicker) {\n if (color) {\n var hookReturns = _this.props.hooks(\"toggle-text-\".concat(_this.state.colorType), color)(color);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n color = hookReturns;\n }\n\n if (_this.state.colorType === 'color') {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionColor(_this.props.editorState, color));\n } else {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionBackgroundColor(_this.props.editorState, color));\n }\n }\n\n if (closePicker) {\n _this.dropDownInstance.hide();\n\n _this.props.editor.requestFocus();\n }\n });\n\n return _this;\n }\n\n createClass_default()(TextColor, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var captionStyle = {};\n var currentColor = null;\n var colorType = this.state.colorType;\n var selectionStyles = this.props.editorState.getCurrentInlineStyle().toJS();\n selectionStyles.forEach(function (style) {\n if (style.indexOf('COLOR-') === 0) {\n captionStyle.color = '#' + style.split('-')[1];\n colorType === 'color' && (currentColor = captionStyle.color);\n }\n\n if (style.indexOf('BGCOLOR-') === 0) {\n captionStyle.backgroundColor = '#' + style.split('-')[1];\n colorType === 'background-color' && (currentColor = captionStyle.backgroundColor);\n }\n });\n var caption = external_react_default.a.createElement(\"i\", {\n style: captionStyle,\n className: \"bfi-text-color\"\n }, external_react_default.a.createElement(\"span\", {\n className: \"path1\"\n }), external_react_default.a.createElement(\"span\", {\n className: \"path2\"\n }));\n var ColorPicker = this.props.colorPicker || common_ColorPicker;\n return external_react_default.a.createElement(DropDown_DropDown, {\n caption: caption,\n title: this.props.language.controls.color,\n showArrow: false,\n autoHide: this.props.autoHide,\n theme: this.props.theme,\n getContainerNode: this.props.getContainerNode,\n ref: function ref(instance) {\n return _this2.dropDownInstance = instance;\n },\n className: 'control-item dropdown text-color-dropdown'\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-text-color-picker-wrap\"\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-color-switch-buttons\",\n style: this.props.enableBackgroundColor ? {} : {\n display: 'none'\n }\n }, external_react_default.a.createElement(\"button\", {\n type: \"button\",\n \"data-type\": \"color\",\n className: colorType === 'color' ? 'active' : '',\n onClick: this.switchColorType\n }, this.props.language.controls.textColor), external_react_default.a.createElement(\"button\", {\n type: \"button\",\n \"data-type\": \"background-color\",\n className: colorType === 'background-color' ? 'active' : '',\n onClick: this.switchColorType\n }, this.props.language.controls.backgroundColor)), external_react_default.a.createElement(ColorPicker, {\n width: 200,\n color: currentColor,\n disableAlpha: true,\n presetColors: this.props.colors,\n onChange: this.toggleColor\n })));\n }\n }]);\n\n return TextColor;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./components/business/FontSize/style.scss\nvar FontSize_style = __webpack_require__(59);\n\n// CONCATENATED MODULE: ./components/business/FontSize/index.jsx\n\n\n\n\n\nvar FontSize_toggleFontSize = function toggleFontSize(event, props) {\n var fontSize = event.currentTarget.dataset.size;\n var hookReturns = props.hooks('toggle-font-size', fontSize)(fontSize);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (!isNaN(fontSize)) {\n fontSize = hookReturns;\n }\n\n props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionFontSize(props.editorState, fontSize));\n props.editor.requestFocus();\n};\n\n/* harmony default export */ var FontSize = (function (props) {\n var caption = null;\n var currentFontSize = null;\n var dropDownInstance = null;\n props.fontSizes.find(function (item) {\n if (external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(props.editorState, 'FONTSIZE-' + item)) {\n caption = item;\n currentFontSize = item;\n return true;\n }\n\n return false;\n });\n return external_react_default.a.createElement(DropDown_DropDown, {\n autoHide: true,\n caption: caption || props.defaultCaption,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.fontSize,\n ref: function ref(instance) {\n return dropDownInstance = instance;\n },\n className: 'control-item dropdown bf-font-size-dropdown'\n }, external_react_default.a.createElement(\"ul\", {\n className: \"bf-font-sizes\"\n }, props.fontSizes.map(function (item, index) {\n return external_react_default.a.createElement(\"li\", {\n key: index,\n className: item === currentFontSize ? 'active' : null,\n \"data-size\": item,\n onClick: function onClick(event) {\n FontSize_toggleFontSize(event, props), dropDownInstance.hide();\n }\n }, item);\n })));\n});\n// EXTERNAL MODULE: ./components/business/LineHeight/style.scss\nvar LineHeight_style = __webpack_require__(60);\n\n// CONCATENATED MODULE: ./components/business/LineHeight/index.jsx\n\n\n\n\n\nvar LineHeight_toggleLineHeight = function toggleLineHeight(event, props) {\n var lineHeight = event.currentTarget.dataset.size;\n var hookReturns = props.hooks('toggle-line-height', lineHeight)(lineHeight);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (!isNaN(hookReturns)) {\n lineHeight = hookReturns;\n }\n\n props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionLineHeight(props.editorState, lineHeight));\n props.editor.requestFocus();\n};\n\n/* harmony default export */ var LineHeight = (function (props) {\n var caption = null;\n var currentLineHeight = null;\n var dropDownInstance = null;\n props.lineHeights.find(function (item) {\n if (external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(props.editorState, 'LINEHEIGHT-' + item)) {\n caption = item;\n currentLineHeight = item;\n return true;\n }\n\n return false;\n });\n return external_react_default.a.createElement(DropDown_DropDown, {\n autoHide: true,\n caption: caption || props.defaultCaption,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.lineHeight,\n ref: function ref(instance) {\n return dropDownInstance = instance;\n },\n className: 'control-item dropdown bf-line-height-dropdown'\n }, external_react_default.a.createElement(\"ul\", {\n className: \"bf-line-heights\"\n }, props.lineHeights.map(function (item, index) {\n return external_react_default.a.createElement(\"li\", {\n key: index,\n className: item === currentLineHeight ? 'active' : null,\n \"data-size\": item,\n onClick: function onClick(event) {\n LineHeight_toggleLineHeight(event, props), dropDownInstance.hide();\n }\n }, item);\n })));\n});\n// EXTERNAL MODULE: ./components/business/FontFamily/style.scss\nvar FontFamily_style = __webpack_require__(61);\n\n// CONCATENATED MODULE: ./components/business/FontFamily/index.jsx\n\n\n\n\n\nvar FontFamily_toggleFontFamily = function toggleFontFamily(event, props) {\n var fontFamilyName = event.currentTarget.dataset.name;\n var hookReturns = props.hooks('toggle-font-family', fontFamilyName)(fontFamilyName, props.fontFamilies);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n fontFamilyName = hookReturns;\n }\n\n props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionFontFamily(props.editorState, fontFamilyName));\n props.editor.requestFocus();\n};\n\n/* harmony default export */ var FontFamily = (function (props) {\n var caption = null;\n var currentIndex = null;\n var dropDownInstance = null;\n props.fontFamilies.find(function (item, index) {\n if (external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(props.editorState, 'FONTFAMILY-' + item.name)) {\n caption = item.name;\n currentIndex = index;\n return true;\n }\n\n return false;\n });\n return external_react_default.a.createElement(DropDown_DropDown, {\n caption: caption || props.defaultCaption,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.fontFamily,\n autoHide: true,\n arrowActive: currentIndex === 0,\n ref: function ref(instance) {\n return dropDownInstance = instance;\n },\n className: 'control-item dropdown font-family-dropdown'\n }, external_react_default.a.createElement(\"ul\", {\n className: \"menu\"\n }, props.fontFamilies.map(function (item, index) {\n return external_react_default.a.createElement(\"li\", {\n key: index,\n className: 'menu-item ' + (index === currentIndex ? 'active' : ''),\n \"data-name\": item.name,\n onClick: function onClick(event) {\n FontFamily_toggleFontFamily(event, props), dropDownInstance.hide();\n }\n }, external_react_default.a.createElement(\"span\", {\n style: {\n fontFamily: item.family\n }\n }, item.name));\n })));\n});\n// CONCATENATED MODULE: ./components/business/TextAlign/index.jsx\n\n\n\n\n\n\n\n\n\n\n\nvar TextAlign_TextAlign =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(TextAlign, _React$Component);\n\n function TextAlign() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, TextAlign);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(TextAlign)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n currentAlignment: undefined\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setAlignment\", function (event) {\n var alignment = event.currentTarget.dataset.alignment;\n\n var hookReturns = _this.props.hooks('toggle-text-alignment', alignment)(alignment);\n\n if (_this.props.textAligns.indexOf(hookReturns) > -1) {\n alignment = hookReturns;\n }\n\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionAlignment(_this.props.editorState, alignment));\n\n _this.props.editor.requestFocus();\n });\n\n return _this;\n }\n\n createClass_default()(TextAlign, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(next) {\n this.setState({\n currentAlignment: external_braft_utils_[\"ContentUtils\"].getSelectionBlockData(next.editorState, 'textAlign')\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var textAlignmentTitles = [this.props.language.controls.alignLeft, this.props.language.controls.alignCenter, this.props.language.controls.alignRight, this.props.language.controls.alignJustify];\n return external_react_default.a.createElement(ControlGroup, null, this.props.textAligns.map(function (item, index) {\n return external_react_default.a.createElement(\"button\", {\n type: \"button\",\n key: index,\n \"data-title\": textAlignmentTitles[index],\n \"data-alignment\": item,\n className: 'control-item button ' + (item === _this2.state.currentAlignment ? 'active' : null),\n onClick: _this2.setAlignment\n }, external_react_default.a.createElement(\"i\", {\n className: 'bfi-align-' + item\n }));\n }));\n }\n }]);\n\n return TextAlign;\n}(external_react_default.a.Component);\n\n\n// EXTERNAL MODULE: ./components/business/EmojiPicker/style.scss\nvar EmojiPicker_style = __webpack_require__(62);\n\n// CONCATENATED MODULE: ./components/business/EmojiPicker/index.jsx\n\n\n\n\n\nvar EmojiPicker_insertEmoji = function insertEmoji(event, props) {\n var emoji = event.currentTarget.dataset.emoji;\n var hookReturns = props.hooks('insert-emoji', emoji)(emoji);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n emoji = hookReturns;\n }\n\n props.editor.setValue(external_braft_utils_[\"ContentUtils\"].insertText(props.editorState, emoji));\n props.editor.requestFocus();\n};\n\n/* harmony default export */ var EmojiPicker = (function (props) {\n return external_react_default.a.createElement(DropDown_DropDown, {\n caption: props.defaultCaption,\n autoHide: true,\n showArrow: false,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.emoji,\n className: 'control-item dropdown bf-emoji-dropdown'\n }, external_react_default.a.createElement(\"div\", {\n className: \"bf-emojis-wrap\"\n }, external_react_default.a.createElement(\"ul\", {\n className: \"bf-emojis\"\n }, props.emojis.map(function (item, index) {\n return external_react_default.a.createElement(\"li\", {\n key: index,\n \"data-emoji\": item,\n onClick: function onClick(event) {\n return EmojiPicker_insertEmoji(event, props);\n }\n }, item);\n }))));\n});\n// EXTERNAL MODULE: ./components/business/LetterSpacing/style.scss\nvar LetterSpacing_style = __webpack_require__(63);\n\n// CONCATENATED MODULE: ./components/business/LetterSpacing/index.jsx\n\n\n\n\n\nvar LetterSpacing_toggleLetterSpacing = function toggleLetterSpacing(event, props) {\n var letterSpacing = event.currentTarget.dataset.size;\n var hookReturns = props.hooks('toggle-letter-spacing', letterSpacing)(letterSpacing);\n\n if (hookReturns === false) {\n return false;\n }\n\n if (!isNaN(hookReturns)) {\n letterSpacing = hookReturns;\n }\n\n props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionLetterSpacing(props.editorState, letterSpacing));\n props.editor.requestFocus();\n};\n\n/* harmony default export */ var LetterSpacing = (function (props) {\n var caption = null;\n var currentLetterSpacing = null;\n var dropDownInstance = null;\n props.letterSpacings.find(function (item) {\n if (external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(props.editorState, 'LETTERSPACING-' + item)) {\n caption = item;\n currentLetterSpacing = item;\n return true;\n }\n\n return false;\n });\n return external_react_default.a.createElement(DropDown_DropDown, {\n autoHide: true,\n caption: caption || props.defaultCaption,\n getContainerNode: props.getContainerNode,\n title: props.language.controls.letterSpacing,\n ref: function ref(instance) {\n return dropDownInstance = instance;\n },\n className: 'control-item dropdown bf-letter-spacing-dropdown'\n }, external_react_default.a.createElement(\"ul\", {\n className: \"bf-letter-spacings\"\n }, props.letterSpacings.map(function (item, index) {\n return external_react_default.a.createElement(\"li\", {\n key: index,\n className: item === currentLetterSpacing ? 'active' : null,\n \"data-size\": item,\n onClick: function onClick(event) {\n LetterSpacing_toggleLetterSpacing(event, props), dropDownInstance.hide();\n }\n }, item);\n })));\n});\n// CONCATENATED MODULE: ./components/business/TextIndent/index.jsx\n\n\n\n\n\n\n\n\n\n\n\nvar TextIndent_TextAlign =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(TextAlign, _React$Component);\n\n function TextAlign() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, TextAlign);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(TextAlign)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n currentIndent: 0\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"increaseIndent\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].increaseSelectionIndent(_this.props.editorState));\n\n _this.props.editor.requestFocus();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"decreaseIndent\", function () {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].decreaseSelectionIndent(_this.props.editorState));\n\n _this.props.editor.requestFocus();\n });\n\n return _this;\n }\n\n createClass_default()(TextAlign, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n this.setState({\n currentIndent: external_braft_utils_[\"ContentUtils\"].getSelectionBlockData(nextProps.editorState, 'textIndent') || 0\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var currentIndent = this.state.currentIndent;\n var language = this.props.language;\n return external_react_default.a.createElement(ControlGroup, null, external_react_default.a.createElement(\"button\", {\n key: 0,\n type: \"button\",\n \"data-title\": language.controls.increaseIndent,\n disabled: currentIndent >= 6,\n className: \"control-item button button-indent-increase\".concat(currentIndent > 0 && currentIndent < 6 ? ' active' : ''),\n onClick: this.increaseIndent\n }, external_react_default.a.createElement(\"i\", {\n className: 'bfi-indent-increase'\n })), external_react_default.a.createElement(\"button\", {\n key: 1,\n type: \"button\",\n \"data-title\": language.controls.decreaseIndent,\n disabled: currentIndent <= 0,\n className: \"control-item button button-indent-decrease\",\n onClick: this.decreaseIndent\n }, external_react_default.a.createElement(\"i\", {\n className: 'bfi-indent-decrease'\n })));\n }\n }]);\n\n return TextAlign;\n}(external_react_default.a.Component);\n\n\n// CONCATENATED MODULE: ./components/business/ControlBar/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar commandHookMap = {\n 'inline-style': 'toggle-inline-style',\n 'block-type': 'change-block-type',\n 'editor-method': 'exec-editor-command'\n};\nvar exclusiveInlineStyles = {\n 'superscript': 'subscript',\n 'subscript': 'superscript'\n};\n\nvar mergeControls = function mergeControls(commonProps, builtControls, extensionControls, extendControls) {\n extensionControls = extensionControls.map(function (item) {\n return typeof item === 'function' ? item(commonProps) : item;\n });\n extendControls = extendControls.map(function (item) {\n return typeof item === 'function' ? item(commonProps) : item;\n });\n\n if (extensionControls.length === 0 && extendControls.length === 0) {\n return builtControls;\n }\n\n return builtControls.map(function (item) {\n return extendControls.find(function (subItem) {\n return subItem.replace === (item.key || item);\n }) || extensionControls.find(function (subItem) {\n return subItem.replace === (item.key || item);\n }) || item;\n }).concat(extensionControls.length ? 'separator' : '').concat(extensionControls.filter(function (item) {\n return !item.replace;\n })).concat(extendControls.filter(function (item) {\n return typeof item === 'string' || !item.replace;\n }));\n};\n\nvar ControlBar_ControlBar =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(ControlBar, _React$Component);\n\n function ControlBar() {\n var _getPrototypeOf2;\n\n var _this;\n\n classCallCheck_default()(this, ControlBar);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = possibleConstructorReturn_default()(this, (_getPrototypeOf2 = getPrototypeOf_default()(ControlBar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"allControls\", []);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"mediaLibiraryModal\", null);\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"extendedModals\", {});\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"openBraftFinder\", function () {\n if (!_this.props.braftFinder || !_this.props.braftFinder.ReactComponent) {\n return false;\n }\n\n if (_this.props.hooks('open-braft-finder')() === false) {\n return false;\n }\n\n var mediaProps = _this.props.media;\n var MediaLibrary = _this.props.braftFinder.ReactComponent;\n _this.mediaLibiraryModal = Modal_showModal({\n title: _this.props.language.controls.mediaLibirary,\n language: _this.props.language,\n width: 640,\n showFooter: false,\n component: external_react_default.a.createElement(MediaLibrary, {\n accepts: mediaProps.accepts,\n onCancel: _this.closeBraftFinder,\n onInsert: _this.insertMedias,\n onChange: mediaProps.onChange,\n externals: mediaProps.externals,\n onBeforeSelect: _this.bindBraftFinderHook('select-medias'),\n onBeforeDeselect: _this.bindBraftFinderHook('deselect-medias'),\n onBeforeRemove: _this.bindBraftFinderHook('remove-medias'),\n onBeforeInsert: _this.bindBraftFinderHook('insert-medias'),\n onFileSelect: _this.bindBraftFinderHook('select-files')\n })\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"bindBraftFinderHook\", function (hookName) {\n return function () {\n return _this.props.hooks(hookName, arguments.length <= 0 ? undefined : arguments[0]).apply(void 0, arguments);\n };\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"insertMedias\", function (medias) {\n _this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].insertMedias(_this.props.editorState, medias));\n\n _this.props.editor.requestFocus();\n\n _this.props.media.onInsert && _this.props.media.onInsert(medias);\n\n _this.closeBraftFinder();\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"closeBraftFinder\", function () {\n _this.props.media.onCancel && _this.props.media.onCancel();\n _this.mediaLibiraryModal && _this.mediaLibiraryModal.close();\n });\n\n return _this;\n }\n\n createClass_default()(ControlBar, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this2 = this;\n\n var language = this.props.language;\n this.allControls.forEach(function (item) {\n if (item.type === 'modal') {\n if (item.modal && item.modal.id && _this2.extendedModals[item.modal.id]) {\n _this2.extendedModals[item.modal.id].update(objectSpread_default()({}, item.modal, {\n language: language\n }));\n }\n }\n });\n }\n }, {\n key: \"getControlItemClassName\",\n value: function getControlItemClassName(data) {\n var className = 'control-item button';\n var type = data.type,\n command = data.command;\n\n if (type === 'inline-style' && external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(this.props.editorState, command)) {\n className += ' active';\n } else if (type === 'block-type' && external_braft_utils_[\"ContentUtils\"].getSelectionBlockType(this.props.editorState) === command) {\n className += ' active';\n } else if (type === 'entity' && external_braft_utils_[\"ContentUtils\"].getSelectionEntityType(this.props.editorState) === command) {\n className += ' active';\n }\n\n return className;\n }\n }, {\n key: \"applyControl\",\n value: function applyControl(command, type) {\n var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var hookReturns = this.props.hooks(commandHookMap[type] || type, command)(command);\n var editorState = this.props.editorState;\n\n if (hookReturns === false) {\n return false;\n }\n\n if (typeof hookReturns === 'string') {\n command = hookReturns;\n }\n\n if (type === 'inline-style') {\n var exclusiveInlineStyle = exclusiveInlineStyles[command];\n\n if (exclusiveInlineStyle && external_braft_utils_[\"ContentUtils\"].selectionHasInlineStyle(editorState, exclusiveInlineStyle)) {\n editorState = external_braft_utils_[\"ContentUtils\"].toggleSelectionInlineStyle(editorState, exclusiveInlineStyle);\n }\n\n this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionInlineStyle(editorState, command));\n } else if (type === 'block-type') {\n this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionBlockType(editorState, command));\n } else if (type === 'entity') {\n this.props.editor.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionEntity(editorState, {\n type: command,\n mutability: data.mutability || 'MUTABLE',\n data: data.data || {}\n }));\n } else if (type === 'editor-method') {\n this.props.editor[command] && this.props.editor[command]();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n editor = _this$props.editor,\n editorId = _this$props.editorId,\n editorState = _this$props.editorState,\n className = _this$props.className,\n style = _this$props.style,\n controls = _this$props.controls,\n media = _this$props.media,\n extendControls = _this$props.extendControls,\n language = _this$props.language,\n hooks = _this$props.hooks,\n colors = _this$props.colors,\n colorPicker = _this$props.colorPicker,\n colorPickerTheme = _this$props.colorPickerTheme,\n colorPickerAutoHide = _this$props.colorPickerAutoHide,\n headings = _this$props.headings,\n fontSizes = _this$props.fontSizes,\n fontFamilies = _this$props.fontFamilies,\n emojis = _this$props.emojis,\n getContainerNode = _this$props.getContainerNode,\n lineHeights = _this$props.lineHeights,\n letterSpacings = _this$props.letterSpacings,\n textAligns = _this$props.textAligns,\n textBackgroundColor = _this$props.textBackgroundColor,\n allowInsertLinkText = _this$props.allowInsertLinkText,\n defaultLinkTarget = _this$props.defaultLinkTarget;\n var currentBlockType = external_braft_utils_[\"ContentUtils\"].getSelectionBlockType(editorState);\n var commonProps = {\n editor: editor,\n editorId: editorId,\n editorState: editorState,\n language: language,\n getContainerNode: getContainerNode,\n hooks: hooks\n };\n var renderedControls = [];\n var editorControls = configs_controls(language, editor);\n var extensionControls = getExtensionControls(editorId);\n var allControls = mergeControls(commonProps, controls, extensionControls, extendControls);\n this.allControls = allControls;\n return external_react_default.a.createElement(\"div\", {\n className: \"bf-controlbar \".concat(className || ''),\n style: style,\n onMouseDown: this.preventDefault\n }, allControls.map(function (item, index) {\n var itemKey = typeof item === 'string' ? item : item.key;\n\n if (typeof itemKey !== 'string') {\n return null;\n }\n\n if (renderedControls.indexOf(itemKey) > -1) {\n return null;\n }\n\n if (itemKey.toLowerCase() === 'separator') {\n return external_react_default.a.createElement(\"span\", {\n key: index,\n className: \"separator-line\"\n });\n }\n\n var controlItem = editorControls.find(function (subItem) {\n return subItem.key.toLowerCase() === itemKey.toLowerCase();\n });\n\n if (typeof item !== 'string') {\n controlItem = objectSpread_default()({}, controlItem, item);\n }\n\n if (!controlItem) {\n return null;\n }\n\n renderedControls.push(itemKey);\n\n if (controlItem.type === 'headings') {\n return external_react_default.a.createElement(Headings, extends_default()({\n key: index,\n headings: headings,\n current: currentBlockType,\n onChange: function onChange(command) {\n return _this3.applyControl(command, 'block-type');\n }\n }, commonProps));\n } else if (controlItem.type === 'text-color') {\n return external_react_default.a.createElement(TextColor_TextColor, extends_default()({\n key: index,\n colors: colors,\n colorPicker: colorPicker,\n theme: colorPickerTheme,\n autoHide: colorPickerAutoHide,\n enableBackgroundColor: textBackgroundColor\n }, commonProps));\n } else if (controlItem.type === 'font-size') {\n return external_react_default.a.createElement(FontSize, extends_default()({\n key: index,\n fontSizes: fontSizes,\n defaultCaption: controlItem.title\n }, commonProps));\n } else if (controlItem.type === 'line-height') {\n return external_react_default.a.createElement(LineHeight, extends_default()({\n key: index,\n lineHeights: lineHeights,\n defaultCaption: controlItem.title\n }, commonProps));\n } else if (controlItem.type === 'letter-spacing') {\n return external_react_default.a.createElement(LetterSpacing, extends_default()({\n key: index,\n letterSpacings: letterSpacings,\n defaultCaption: controlItem.title\n }, commonProps));\n } else if (controlItem.type === 'text-indent') {\n return external_react_default.a.createElement(TextIndent_TextAlign, extends_default()({\n key: index,\n defaultCaption: controlItem.title\n }, commonProps));\n } else if (controlItem.type === 'font-family') {\n return external_react_default.a.createElement(FontFamily, extends_default()({\n key: index,\n fontFamilies: fontFamilies,\n defaultCaption: controlItem.title\n }, commonProps));\n } else if (controlItem.type === 'emoji') {\n return external_react_default.a.createElement(EmojiPicker, extends_default()({\n key: index,\n emojis: emojis,\n defaultCaption: controlItem.text\n }, commonProps));\n } else if (controlItem.type === 'link') {\n return external_react_default.a.createElement(LinkEditor_LinkEditor, extends_default()({\n key: index,\n defaultLinkTarget: defaultLinkTarget,\n allowInsertLinkText: allowInsertLinkText\n }, commonProps));\n } else if (controlItem.type === 'text-align') {\n return external_react_default.a.createElement(TextAlign_TextAlign, extends_default()({\n key: index,\n textAligns: textAligns\n }, commonProps));\n } else if (controlItem.type === 'media') {\n if (!media.image && !media.video && !media.audio) {\n return null;\n }\n\n return external_react_default.a.createElement(\"button\", {\n type: \"button\",\n key: index,\n \"data-title\": controlItem.title,\n disabled: controlItem.disabled,\n className: \"control-item media button\",\n onClick: _this3.openBraftFinder\n }, controlItem.text);\n } else if (controlItem.type === 'dropdown') {\n return external_react_default.a.createElement(DropDown_DropDown, extends_default()({\n key: index,\n className: \"control-item extend-control-item dropdown \".concat(controlItem.className || ''),\n caption: controlItem.text,\n htmlCaption: controlItem.html,\n showArrow: controlItem.showArrow,\n title: controlItem.title,\n arrowActive: controlItem.arrowActive,\n theme: controlItem.theme,\n autoHide: controlItem.autoHide,\n disabled: controlItem.disabled,\n ref: controlItem.ref\n }, commonProps), controlItem.component);\n } else if (controlItem.type === 'modal') {\n return external_react_default.a.createElement(\"button\", {\n type: \"button\",\n key: index,\n \"data-title\": controlItem.title,\n disabled: controlItem.disabled,\n className: \"control-item extend-control-item button \".concat(controlItem.className || ''),\n dangerouslySetInnerHTML: controlItem.html ? {\n __html: controlItem.html\n } : null,\n onClick: function onClick(event) {\n if (controlItem.modal && controlItem.modal.id) {\n if (_this3.extendedModals[controlItem.modal.id]) {\n _this3.extendedModals[controlItem.modal.id].active = true;\n\n _this3.extendedModals[controlItem.modal.id].update(objectSpread_default()({}, controlItem.modal, {\n language: language\n }));\n } else {\n _this3.extendedModals[controlItem.modal.id] = Modal_showModal(objectSpread_default()({}, controlItem.modal, {\n language: language\n }));\n controlItem.modal.onCreate && controlItem.modal.onCreate(_this3.extendedModals[controlItem.modal.id]);\n }\n }\n\n controlItem.onClick && controlItem.onClick(event);\n }\n }, !controlItem.html ? controlItem.text : null);\n } else if (controlItem.type === 'component') {\n return external_react_default.a.createElement(\"div\", {\n key: index,\n className: \"component-wrapper \".concat(controlItem.className || '')\n }, controlItem.component);\n } else if (controlItem.type === 'button') {\n return external_react_default.a.createElement(\"button\", {\n type: \"button\",\n key: index,\n \"data-title\": controlItem.title,\n disabled: controlItem.disabled,\n className: \"control-item button \".concat(controlItem.className || ''),\n dangerouslySetInnerHTML: controlItem.html ? {\n __html: controlItem.html\n } : null,\n onClick: function onClick(event) {\n return controlItem.onClick && controlItem.onClick(event);\n }\n }, !controlItem.html ? controlItem.text : null);\n } else if (controlItem) {\n var disabled = false;\n\n if (controlItem.command === 'undo') {\n disabled = editorState.getUndoStack().size === 0;\n } else if (controlItem.command === 'redo') {\n disabled = editorState.getRedoStack().size === 0;\n }\n\n return external_react_default.a.createElement(\"button\", {\n type: \"button\",\n key: index,\n disabled: disabled,\n \"data-title\": controlItem.title,\n className: _this3.getControlItemClassName({\n type: controlItem.type,\n command: controlItem.command\n }),\n onClick: function onClick() {\n return _this3.applyControl(controlItem.command, controlItem.type, controlItem.data);\n }\n }, controlItem.text);\n }\n }));\n }\n }, {\n key: \"preventDefault\",\n value: function preventDefault(event) {\n var tagName = event.target.tagName.toLowerCase();\n\n if (tagName === 'input' || tagName === 'label') {// ...\n } else {\n event.preventDefault();\n }\n }\n }]);\n\n return ControlBar;\n}(external_react_default.a.Component);\n\n\n// CONCATENATED MODULE: ./editor/index.jsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar buildHooks = function buildHooks(hooks) {\n return function (hookName) {\n var defaultReturns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return hooks[hookName] || function () {\n return defaultReturns;\n };\n };\n};\n\nvar filterColors = function filterColors(colors, colors2) {\n return colors.filter(function (item) {\n return !colors2.find(function (color) {\n return color.toLowerCase() === item.toLowerCase();\n });\n }).filter(function (item, index, array) {\n return array.indexOf(item) === index;\n });\n};\n\nvar editor_isControlEnabled = function isControlEnabled(props, controlName) {\n return toConsumableArray_default()(props.controls).concat(toConsumableArray_default()(props.extendControls)).find(function (item) {\n return item === controlName || item.key === controlName;\n }) && props.excludeControls.indexOf(controlName) === -1;\n};\n\nvar editor_getConvertOptions = function getConvertOptions(props) {\n var editorId = props.editorId || props.id;\n\n var convertOptions = objectSpread_default()({}, configs_props.converts, props.converts, {\n fontFamilies: props.fontFamilies\n });\n\n convertOptions.styleImportFn = compositeStyleImportFn(convertOptions.styleImportFn, editorId);\n convertOptions.styleExportFn = compositeStyleExportFn(convertOptions.styleExportFn, editorId);\n convertOptions.entityImportFn = compositeEntityImportFn(convertOptions.entityImportFn, editorId);\n convertOptions.entityExportFn = compositeEntityExportFn(convertOptions.entityExportFn, editorId);\n convertOptions.blockImportFn = compositeBlockImportFn(convertOptions.blockImportFn, editorId);\n convertOptions.blockExportFn = compositeBlockExportFn(convertOptions.blockExportFn, editorId);\n return convertOptions;\n};\n\nvar editor_BraftEditor =\n/*#__PURE__*/\nfunction (_React$Component) {\n inherits_default()(BraftEditor, _React$Component);\n\n function BraftEditor(props) {\n var _this;\n\n classCallCheck_default()(this, BraftEditor);\n\n _this = possibleConstructorReturn_default()(this, getPrototypeOf_default()(BraftEditor).call(this, props));\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"onChange\", function (editorState, callback) {\n if (!(editorState instanceof external_draft_js_[\"EditorState\"])) {\n editorState = external_draft_js_[\"EditorState\"].set(editorState, {\n decorator: _this.editorDecorators\n });\n }\n\n if (!editorState.convertOptions) {\n editorState.setConvertOptions(editor_getConvertOptions(_this.editorProps));\n }\n\n _this.setState({\n editorState: editorState\n }, function () {\n _this.props.onChange && _this.props.onChange(editorState);\n callback && callback(editorState);\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getDraftInstance\", function () {\n return _this.draftInstance;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getFinderInstance\", function () {\n return _this.braftFinder;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getValue\", function () {\n return _this.state.editorState;\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setValue\", function (editorState, callback) {\n return _this.onChange(editorState, callback);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"forceRender\", function () {\n var selectionState = _this.state.editorState.getSelection();\n\n _this.setValue(external_draft_js_[\"EditorState\"].set(_this.state.editorState, {\n decorator: _this.editorDecorators\n }), function () {\n _this.setValue(external_draft_js_[\"EditorState\"].forceSelection(_this.state.editorState, selectionState));\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"onTab\", function (event) {\n if (handlers_keyCommandHandlers('tab', _this.state.editorState, assertThisInitialized_default()(assertThisInitialized_default()(_this))) === 'handled') {\n event.preventDefault();\n }\n\n _this.editorProps.onTab && _this.editorProps.onTab(event);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"onFocus\", function () {\n _this.isFocused = true;\n _this.editorProps.onFocus && _this.editorProps.onFocus(_this.state.editorState);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"onBlur\", function () {\n _this.isFocused = false;\n _this.editorProps.onBlur && _this.editorProps.onBlur(_this.state.editorState);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"requestFocus\", function () {\n setTimeout(function () {\n return _this.draftInstance.focus();\n }, 0);\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleKeyCommand\", function (command, editorState) {\n return handlers_keyCommandHandlers(command, editorState, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleReturn\", function (event, editorState) {\n return handlers_returnHandlers(event, editorState, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleBeforeInput\", function (chars, editorState) {\n return beforeInputHandlers(chars, editorState, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleDrop\", function (selectionState, dataTransfer) {\n return handlers_dropHandlers(selectionState, dataTransfer, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleDroppedFiles\", function (selectionState, files) {\n return droppedFilesHandlers(selectionState, files, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handlePastedFiles\", function (files) {\n return pastedFilesHandlers(files, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleCopyContent\", function (event) {\n return handlers_copyHandlers(event, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handlePastedText\", function (text, html, editorState) {\n return handlers_pastedTextHandlers(text, html, editorState, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"handleCompositionStart\", function (event) {\n return handlers_compositionStartHandler(event, assertThisInitialized_default()(assertThisInitialized_default()(_this)));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"undo\", function () {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].undo(_this.state.editorState));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"redo\", function () {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].redo(_this.state.editorState));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"removeSelectionInlineStyles\", function () {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].removeSelectionInlineStyles(_this.state.editorState));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"insertHorizontalLine\", function () {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].insertHorizontalLine(_this.state.editorState));\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"clearEditorContent\", function () {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].clear(_this.state.editorState), function (editorState) {\n _this.setValue(external_braft_utils_[\"ContentUtils\"].toggleSelectionIndent(editorState, 0));\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"toggleFullscreen\", function (fullscreen) {\n _this.setState({\n isFullscreen: typeof fullscreen !== 'undefined' ? fullscreen : !_this.state.isFullscreen\n }, function () {\n _this.editorProps.onFullscreen && _this.editorProps.onFullscreen(_this.state.isFullscreen);\n });\n });\n\n defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setEditorContainerNode\", function (containerNode) {\n _this.containerNode = containerNode;\n });\n\n _this.editorProps = _this.getEditorProps(props);\n _this.editorDecorators = getDecorators(_this.editorProps.editorId || _this.editorProps.id);\n _this.isFocused = false;\n _this.isLiving = false;\n _this.braftFinder = null;\n _this.valueInitialized = !!(_this.props.defaultValue || _this.props.value);\n var defaultEditorState = (_this.props.defaultValue || _this.props.value) instanceof external_draft_js_[\"EditorState\"] ? _this.props.defaultValue || _this.props.value : external_draft_js_[\"EditorState\"].createEmpty(_this.editorDecorators);\n defaultEditorState.setConvertOptions(editor_getConvertOptions(_this.editorProps));\n var tempColors = [];\n\n if (external_braft_utils_[\"ContentUtils\"].isEditorState(defaultEditorState)) {\n var colors = external_braft_utils_[\"ColorUtils\"].detectColorsFromDraftState(defaultEditorState.toRAW(true));\n defaultEditorState.setConvertOptions(editor_getConvertOptions(_this.editorProps));\n tempColors = filterColors(colors, _this.editorProps.colors);\n }\n\n _this.state = {\n tempColors: tempColors,\n editorState: defaultEditorState,\n isFullscreen: false,\n draftProps: {}\n };\n _this.containerNode = null;\n return _this;\n }\n\n createClass_default()(BraftEditor, [{\n key: \"getEditorProps\",\n value: function getEditorProps(props) {\n var _this2 = this;\n\n props = props || this.props;\n\n var _props = props,\n value = _props.value,\n defaultValue = _props.defaultValue,\n onChange = _props.onChange,\n restProps = objectWithoutProperties_default()(_props, [\"value\", \"defaultValue\", \"onChange\"]); // eslint-disable-line no-unused-vars\n\n\n var propInterceptors = getPropInterceptors(restProps.editorId || restProps.id);\n\n if (propInterceptors.length === 0) {\n return restProps;\n }\n\n var porpsMap = Object(external_immutable_[\"Map\"])(restProps);\n propInterceptors.forEach(function (interceptor) {\n porpsMap = porpsMap.merge(Object(external_immutable_[\"Map\"])(interceptor(porpsMap.toJS(), _this2) || {}));\n });\n return porpsMap.toJS();\n }\n }, {\n key: \"componentWillMount\",\n value: function componentWillMount() {\n if (editor_isControlEnabled(this.editorProps, 'media')) {\n var _this$editorProps = this.editorProps,\n language = _this$editorProps.language,\n media = _this$editorProps.media;\n\n var _defaultProps$media$m = objectSpread_default()({}, configs_props.media, media),\n uploadFn = _defaultProps$media$m.uploadFn,\n validateFn = _defaultProps$media$m.validateFn,\n items = _defaultProps$media$m.items;\n\n this.braftFinder = new external_braft_finder_default.a({\n items: items,\n language: language,\n uploader: uploadFn,\n validator: validateFn\n });\n this.forceUpdate();\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.isLiving = true;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(_, prevState) {\n if (prevState.editorState !== this.state.editorState) {\n this.state.editorState.setConvertOptions(editor_getConvertOptions(this.editorProps));\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(props) {\n var _this3 = this;\n\n this.editorProps = this.getEditorProps(props);\n var editorState = props.value;\n var _this$editorProps2 = this.editorProps,\n media = _this$editorProps2.media,\n language = _this$editorProps2.language;\n var currentProps = this.getEditorProps();\n\n if (!editor_isControlEnabled(currentProps, 'media') && editor_isControlEnabled(this.editorProps, 'media') && !this.braftFinder) {\n var _defaultProps$media$m2 = objectSpread_default()({}, configs_props.media, media),\n uploadFn = _defaultProps$media$m2.uploadFn,\n validateFn = _defaultProps$media$m2.validateFn,\n items = _defaultProps$media$m2.items;\n\n this.braftFinder = new external_braft_finder_default.a({\n items: items,\n language: language,\n uploader: uploadFn,\n validator: validateFn\n });\n this.forceUpdate();\n }\n\n if (media && media.items && this.braftFinder) {\n this.braftFinder.setItems(media.items);\n }\n\n var nextEditorState;\n\n if (!this.valueInitialized && typeof this.props.defaultValue === 'undefined' && external_braft_utils_[\"ContentUtils\"].isEditorState(props.defaultValue)) {\n nextEditorState = props.defaultValue;\n } else if (external_braft_utils_[\"ContentUtils\"].isEditorState(editorState)) {\n nextEditorState = editorState;\n }\n\n if (nextEditorState) {\n if (nextEditorState && nextEditorState !== this.state.editorState) {\n var tempColors = external_braft_utils_[\"ColorUtils\"].detectColorsFromDraftState(nextEditorState.toRAW(true));\n nextEditorState.setConvertOptions(editor_getConvertOptions(this.editorProps));\n this.setState({\n tempColors: filterColors(toConsumableArray_default()(this.state.tempColors).concat(toConsumableArray_default()(tempColors)), currentProps.colors),\n editorState: nextEditorState\n }, function () {\n _this3.props.onChange && _this3.props.onChange(nextEditorState);\n });\n } else {\n this.setState({\n editorState: nextEditorState\n });\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.isLiving = false;\n this.controlBarInstance && this.controlBarInstance.closeBraftFinder();\n }\n }, {\n key: \"lockOrUnlockEditor\",\n value: function lockOrUnlockEditor(editorLocked) {\n this.setState({\n editorLocked: editorLocked\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var _this$editorProps3 = this.editorProps,\n id = _this$editorProps3.id,\n editorId = _this$editorProps3.editorId,\n controls = _this$editorProps3.controls,\n excludeControls = _this$editorProps3.excludeControls,\n extendControls = _this$editorProps3.extendControls,\n readOnly = _this$editorProps3.readOnly,\n disabled = _this$editorProps3.disabled,\n media = _this$editorProps3.media,\n language = _this$editorProps3.language,\n colors = _this$editorProps3.colors,\n colorPicker = _this$editorProps3.colorPicker,\n colorPickerTheme = _this$editorProps3.colorPickerTheme,\n colorPickerAutoHide = _this$editorProps3.colorPickerAutoHide,\n hooks = _this$editorProps3.hooks,\n fontSizes = _this$editorProps3.fontSizes,\n fontFamilies = _this$editorProps3.fontFamilies,\n emojis = _this$editorProps3.emojis,\n placeholder = _this$editorProps3.placeholder,\n fixPlaceholder = _this$editorProps3.fixPlaceholder,\n headings = _this$editorProps3.headings,\n imageControls = _this$editorProps3.imageControls,\n imageResizable = _this$editorProps3.imageResizable,\n lineHeights = _this$editorProps3.lineHeights,\n letterSpacings = _this$editorProps3.letterSpacings,\n textAligns = _this$editorProps3.textAligns,\n textBackgroundColor = _this$editorProps3.textBackgroundColor,\n allowInsertLinkText = _this$editorProps3.allowInsertLinkText,\n defaultLinkTarget = _this$editorProps3.defaultLinkTarget,\n extendAtomics = _this$editorProps3.extendAtomics,\n className = _this$editorProps3.className,\n style = _this$editorProps3.style,\n controlBarClassName = _this$editorProps3.controlBarClassName,\n controlBarStyle = _this$editorProps3.controlBarStyle,\n contentClassName = _this$editorProps3.contentClassName,\n contentStyle = _this$editorProps3.contentStyle,\n stripPastedStyles = _this$editorProps3.stripPastedStyles,\n componentBelowControlBar = _this$editorProps3.componentBelowControlBar;\n var _this$state = this.state,\n isFullscreen = _this$state.isFullscreen,\n editorState = _this$state.editorState;\n editorId = editorId || id;\n hooks = buildHooks(hooks);\n controls = controls.filter(function (item) {\n return excludeControls.indexOf(item) === -1;\n });\n language = (typeof language === 'function' ? language(languages, 'braft-editor') : languages[language]) || languages[configs_props.language];\n var externalMedias = media && media.externals ? objectSpread_default()({}, configs_props.media.externals, media.externals) : configs_props.media.externals;\n var accepts = media && media.accepts ? objectSpread_default()({}, configs_props.media.accepts, media.accepts) : configs_props.media.accepts;\n media = objectSpread_default()({}, configs_props.media, media, {\n externalMedias: externalMedias,\n accepts: accepts\n });\n\n if (!media.uploadFn) {\n media.video = false;\n media.audio = false;\n }\n\n var controlBarProps = {\n editor: this,\n editorState: editorState,\n braftFinder: this.braftFinder,\n ref: function ref(instance) {\n return _this4.controlBarInstance = instance;\n },\n getContainerNode: function getContainerNode() {\n return _this4.containerNode;\n },\n className: controlBarClassName,\n style: controlBarStyle,\n colors: toConsumableArray_default()(colors).concat(toConsumableArray_default()(this.state.tempColors)),\n colorPicker: colorPicker,\n colorPickerTheme: colorPickerTheme,\n colorPickerAutoHide: colorPickerAutoHide,\n hooks: hooks,\n editorId: editorId,\n media: media,\n controls: controls,\n language: language,\n extendControls: extendControls,\n headings: headings,\n fontSizes: fontSizes,\n fontFamilies: fontFamilies,\n emojis: emojis,\n lineHeights: lineHeights,\n letterSpacings: letterSpacings,\n textAligns: textAligns,\n textBackgroundColor: textBackgroundColor,\n allowInsertLinkText: allowInsertLinkText,\n defaultLinkTarget: defaultLinkTarget\n };\n var unitExportFn = editorState.convertOptions.unitExportFn;\n var commonProps = {\n editor: this,\n editorId: editorId,\n hooks: hooks,\n editorState: editorState,\n containerNode: this.containerNode,\n imageControls: imageControls,\n imageResizable: imageResizable,\n language: language,\n extendAtomics: extendAtomics\n };\n var blockRendererFn = getBlockRendererFn(commonProps, this.editorProps.blockRendererFn);\n var blockRenderMap = getBlockRenderMap(commonProps, this.editorProps.blockRenderMap);\n var blockStyleFn = getBlockStyleFn(this.editorProps.blockStyleFn);\n var customStyleMap = getCustomStyleMap(commonProps, this.editorProps.customStyleMap);\n var customStyleFn = getCustomStyleFn(commonProps, {\n fontFamilies: fontFamilies,\n unitExportFn: unitExportFn,\n customStyleFn: this.editorProps.customStyleFn\n });\n var keyBindingFn = keybindings(this.editorProps.keyBindingFn);\n var mixedProps = {};\n\n if (this.state.editorLocked || this.editorProps.disabled || this.editorProps.readOnly || this.editorProps.draftProps.readOnly) {\n mixedProps.readOnly = true;\n }\n\n if (placeholder && fixPlaceholder && editorState.isEmpty() && editorState.getCurrentContent().getFirstBlock().getType() !== 'unstyled') {\n placeholder = '';\n }\n\n var draftProps = objectSpread_default()({\n ref: function ref(instance) {\n _this4.draftInstance = instance;\n },\n editorState: editorState,\n handleKeyCommand: this.handleKeyCommand,\n handleReturn: this.handleReturn,\n handleBeforeInput: this.handleBeforeInput,\n handleDrop: this.handleDrop,\n handleDroppedFiles: this.handleDroppedFiles,\n handlePastedText: this.handlePastedText,\n handlePastedFiles: this.handlePastedFiles,\n onChange: this.onChange,\n onTab: this.onTab,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n blockRenderMap: blockRenderMap,\n blockRendererFn: blockRendererFn,\n blockStyleFn: blockStyleFn,\n customStyleMap: customStyleMap,\n customStyleFn: customStyleFn,\n keyBindingFn: keyBindingFn,\n placeholder: placeholder,\n stripPastedStyles: stripPastedStyles\n }, this.editorProps.draftProps, mixedProps);\n\n return external_react_default.a.createElement(\"div\", {\n style: style,\n ref: this.setEditorContainerNode,\n className: \"bf-container \".concat(className).concat(disabled ? ' disabled' : '').concat(readOnly ? ' read-only' : '').concat(isFullscreen ? ' fullscreen' : '')\n }, external_react_default.a.createElement(ControlBar_ControlBar, controlBarProps), componentBelowControlBar, external_react_default.a.createElement(\"div\", {\n onCompositionStart: this.handleCompositionStart,\n className: \"bf-content \".concat(contentClassName),\n onCopy: this.handleCopyContent,\n style: contentStyle\n }, external_react_default.a.createElement(external_draft_js_[\"Editor\"], draftProps)));\n }\n }]);\n\n return BraftEditor;\n}(external_react_default.a.Component);\n\ndefineProperty_default()(editor_BraftEditor, \"defaultProps\", configs_props);\n\n\n\n// EXTERNAL MODULE: external \"braft-convert\"\nvar external_braft_convert_ = __webpack_require__(14);\n\n// CONCATENATED MODULE: ./index.jsx\n/* concated harmony reexport EditorState */__webpack_require__.d(__webpack_exports__, \"EditorState\", function() { return external_draft_js_[\"EditorState\"]; });\n/* concated harmony reexport getDecorators */__webpack_require__.d(__webpack_exports__, \"getDecorators\", function() { return getDecorators; });\n\n\n\n\n\n\n\nexternal_draft_js_[\"EditorState\"].prototype.setConvertOptions = function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.convertOptions = options;\n};\n\nexternal_draft_js_[\"EditorState\"].prototype.toHTML = function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var convertOptions = this.convertOptions || {};\n return Object(external_braft_convert_[\"convertEditorStateToHTML\"])(this, objectSpread_default()({}, convertOptions, options));\n};\n\nexternal_draft_js_[\"EditorState\"].prototype.toRAW = function (noStringify) {\n return noStringify ? Object(external_braft_convert_[\"convertEditorStateToRaw\"])(this) : JSON.stringify(Object(external_braft_convert_[\"convertEditorStateToRaw\"])(this));\n};\n\nexternal_draft_js_[\"EditorState\"].prototype.toText = function () {\n return this.getCurrentContent().getPlainText();\n};\n\nexternal_draft_js_[\"EditorState\"].prototype.isEmpty = function () {\n return !this.getCurrentContent().hasText();\n};\n\neditor_BraftEditor.createEditorState = external_draft_js_[\"EditorState\"].createFrom = function (content) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options.unitExportFn = options.unitExportFn || editor_BraftEditor.defaultProps.converts.unitExportFn;\n options.styleImportFn = compositeStyleImportFn(options.styleImportFn, options.editorId);\n options.entityImportFn = compositeEntityImportFn(options.entityImportFn, options.editorId);\n options.blockImportFn = compositeBlockImportFn(options.blockImportFn, options.editorId);\n var editorState = null;\n\n if (content instanceof external_draft_js_[\"EditorState\"]) {\n editorState = content;\n } else if (typeof_default()(content) === 'object' && content && content.blocks && content.entityMap) {\n editorState = Object(external_braft_convert_[\"convertRawToEditorState\"])(content, getDecorators(options.editorId));\n } else if (typeof content === 'string') {\n try {\n if (/^(-)?\\d+$/.test(content)) {\n editorState = Object(external_braft_convert_[\"convertHTMLToEditorState\"])(content, getDecorators(options.editorId), options, 'create');\n } else {\n editorState = external_draft_js_[\"EditorState\"].createFrom(JSON.parse(content), options);\n }\n } catch (error) {\n editorState = Object(external_braft_convert_[\"convertHTMLToEditorState\"])(content, getDecorators(options.editorId), options, 'create');\n }\n } else if (typeof content === 'number') {\n editorState = Object(external_braft_convert_[\"convertHTMLToEditorState\"])(content.toLocaleString().replace(/,/g, ''), getDecorators(options.editorId), options, 'create');\n } else {\n editorState = external_draft_js_[\"EditorState\"].createEmpty(getDecorators(options.editorId));\n }\n\n options.styleExportFn = compositeStyleExportFn(options.styleExportFn, options.editorId);\n options.entityExportFn = compositeEntityExportFn(options.entityExportFn, options.editorId);\n options.blockExportFn = compositeBlockExportFn(options.blockExportFn, options.editorId);\n editorState.setConvertOptions(options);\n return editorState;\n};\n\n/* harmony default export */ var index_0 = __webpack_exports__[\"default\"] = (createExtensibleEditor(editor_BraftEditor));\n // 2.1版本开发计划\n// [ ]优化选中多行文字是插入链接报错的问题\n// [ ]新增编辑器内图片删除hook\n// 2.2版本开发计划\n// [ ]表格功能\n// [ ]美化UI,包括图标和界面风格\n// 2.3版本开发计划\n// [ ]初级md快捷输入支持\n// [ ]图片裁切等简单的编辑功能\n// [ ]允许自定义快捷键\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 41 */,\n/* 42 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 43 */,\n/* 44 */,\n/* 45 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=index.js.map","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"braft-utils\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"braft-utils\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"react\"), require(\"braft-utils\")) : factory(root[\"react\"], root[\"braft-utils\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__6__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 33);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 1:\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__1__;\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\n\n/***/ }),\n\n/***/ 33:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultEmoticons\", function() { return defaultEmoticons; });\n/* harmony import */ var _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);\n/* harmony import */ var _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var braft_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6);\n/* harmony import */ var braft_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(braft_utils__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _styles_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48);\n/* harmony import */ var _styles_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_styles_scss__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n // https://www.iconfinder.com/iconsets/emoji-18\n\nvar defaultEmoticons = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25].map(function (item) {\n return \"\".concat(item, \".png\");\n});\n\nvar insertEmoticon = function insertEmoticon(editor, editorState, src) {\n editor.setValue(braft_utils__WEBPACK_IMPORTED_MODULE_2__[\"ContentUtils\"].insertText(editorState, ' ', null, {\n type: 'EMOTICON',\n mutability: 'IMMUTABLE',\n data: {\n src: src\n }\n }));\n};\n\nvar controlRef = null;\n\nvar bindControlRef = function bindControlRef(ref) {\n return controlRef = ref;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n options = _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0___default()({\n emoticons: [],\n closeOnSelect: false,\n closeOnBlur: false\n }, options);\n var _options = options,\n emoticons = _options.emoticons,\n closeOnSelect = _options.closeOnSelect,\n closeOnBlur = _options.closeOnBlur,\n includeEditors = _options.includeEditors,\n excludeEditors = _options.excludeEditors;\n return {\n type: 'entity',\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n name: 'EMOTICON',\n control: function control(props) {\n return {\n key: 'EMOTICON',\n replace: 'emoji',\n type: 'dropdown',\n text: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"i\", {\n className: \"bfi-emoji\"\n }),\n showArrow: false,\n ref: bindControlRef,\n autoHide: closeOnBlur,\n component: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"braft-emoticon-picker\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"braft-emoticons-list\"\n }, emoticons.map(function (item, index) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"img\", {\n onClick: function onClick() {\n insertEmoticon(props.editor, props.editorState, item);\n closeOnSelect && controlRef && controlRef.hide();\n },\n key: index,\n src: item\n });\n })))\n };\n },\n mutability: 'IMMUTABLE',\n component: function component(props) {\n var entity = props.contentState.getEntity(props.entityKey);\n\n var _entity$getData = entity.getData(),\n src = _entity$getData.src;\n\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"span\", {\n className: \"braft-emoticon-in-editor\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"img\", {\n src: src\n }), props.children);\n },\n importer: function importer(nodeName, node) {\n if (nodeName.toLowerCase() === 'span' && node.classList && node.classList.contains('braft-emoticon-wrap')) {\n var imgNode = node.querySelector('img');\n var src = imgNode.getAttribute('src'); // 移除img节点以避免生成atomic block\n\n node.removeChild(imgNode);\n return {\n mutability: 'IMMUTABLE',\n data: {\n src: src\n }\n };\n }\n },\n exporter: function exporter(entityObject, initialText) {\n var src = entityObject.data.src;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"span\", {\n className: \"braft-emoticon-wrap\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"img\", {\n src: src\n }), initialText);\n }\n };\n});\n\n/***/ }),\n\n/***/ 48:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 5:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(2);\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__6__;\n\n/***/ })\n\n/******/ });\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 34);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 2:\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\n\n/***/ }),\n\n/***/ 34:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);\n/* harmony import */ var _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar getSelectedTextLength = function getSelectedTextLength(editorState) {\n var currentSelection = editorState.getSelection();\n var isCollapsed = currentSelection.isCollapsed();\n var length = 0;\n\n if (!isCollapsed) {\n var currentContent = editorState.getCurrentContent();\n var startKey = currentSelection.getStartKey();\n var endKey = currentSelection.getEndKey();\n var startBlock = currentContent.getBlockForKey(startKey);\n var isStartAndEndBlockAreTheSame = startKey === endKey;\n var startBlockTextLength = startBlock.getLength();\n var startSelectedTextLength = startBlockTextLength - currentSelection.getStartOffset();\n var endSelectedTextLength = currentSelection.getEndOffset();\n var keyAfterEnd = currentContent.getKeyAfter(endKey);\n\n if (isStartAndEndBlockAreTheSame) {\n length += currentSelection.getEndOffset() - currentSelection.getStartOffset();\n } else {\n var currentKey = startKey;\n\n while (currentKey && currentKey !== keyAfterEnd) {\n if (currentKey === startKey) {\n length += startSelectedTextLength + 1;\n } else if (currentKey === endKey) {\n length += endSelectedTextLength;\n } else {\n length += currentContent.getBlockForKey(currentKey).getLength() + 1;\n }\n\n currentKey = currentContent.getKeyAfter(currentKey);\n }\n }\n }\n\n return length;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n options = _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0___default()({\n defaultValue: Infinity\n }, options);\n var _options = options,\n includeEditors = _options.includeEditors,\n excludeEditors = _options.excludeEditors,\n defaultValue = _options.defaultValue;\n return {\n type: 'prop-interception',\n includeEditors: includeEditors,\n excludeEditors: excludeEditors,\n interceptor: function interceptor(editorProps) {\n var maxLength = editorProps.maxLength || defaultValue;\n\n editorProps.handleBeforeInput = function (_, editorState) {\n if (maxLength === Infinity) {\n return 'not-handled';\n }\n\n var currentContentLength = editorState.toText().length;\n var selectedTextLength = getSelectedTextLength(editorState);\n\n if (currentContentLength - selectedTextLength > maxLength - 1) {\n editorProps.onReachMaxLength && editorProps.onReachMaxLength(maxLength);\n return 'handled';\n }\n };\n\n editorProps.handlePastedText = function (pastedText, _, editorState) {\n if (maxLength === Infinity) {\n return 'not-handled';\n }\n\n var currentContentLength = editorState.toText().length;\n var selectedTextLength = getSelectedTextLength(editorState);\n\n if (currentContentLength + pastedText.length - selectedTextLength > maxLength) {\n editorProps.onReachMaxLength && editorProps.onReachMaxLength(maxLength);\n return 'handled';\n }\n };\n\n return editorProps;\n }\n };\n});\n\n/***/ }),\n\n/***/ 5:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(2);\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;\n\n/***/ })\n\n/******/ });\n});","import React, { useState } from \"react\";\r\nimport BraftEditor, { ControlType } from \"braft-editor\";\r\nimport \"braft-editor/dist/index.css\";\r\n\r\n// 引入表情包扩展模块样式文件\r\nimport 'braft-extensions/dist/emoticon.css'\r\n// 引入表情包扩展模块和默认表情包列表\r\nimport Emoticon, { defaultEmoticons } from 'braft-extensions/dist/emoticon';\r\nimport MaxLength from 'braft-extensions/dist/max-length'\r\n\r\nconst lengthOptions = {\r\n defaultValue: 100, // 指定默认限制数,如不指定则为Infinity(无限)\r\n // includeEditors: ['editor-id-1'], // 指定该模块对哪些BraftEditor生效,不传此属性则对所有BraftEditor有效\r\n // excludeEditors: ['editor-id-2'], // 指定该模块对哪些BraftEditor无效\r\n}\r\nBraftEditor.use(MaxLength(lengthOptions))\r\n\r\n// 转换默认表情包列表,让webpack可以正确加载到默认表情包中的图片,请确保已对png格式的文件配置了loader\r\n// 如果你使用的webpack版本不支持动态require,或者使用的其他打包工具,请勿使用此写法\r\nconst emoticons = defaultEmoticons.map((item: string) => require(`braft-extensions/dist/assets/${item}`))\r\n\r\n// 也可以使用自己的表情包资源,不受打包工具限制\r\n// const emoticons = ['http://path/to/emoticon-1.png', 'http://path/to/emoticon-2.png', 'http://path/to/emoticon-3.png', 'http://path/to/emoticon-4.png', ...]\r\n\r\nconst emotionOptions = {\r\n // includeEditors: ['editor-id-1'], // 指定该模块对哪些BraftEditor生效,不传此属性则对所有BraftEditor有效\r\n // excludeEditors: ['editor-id-2'], // 指定该模块对哪些BraftEditor无效\r\n emoticons: emoticons, // 指定可用表情图片列表,默认为空\r\n closeOnBlur: true, // 指定是否在点击表情选择器之外的地方时关闭表情选择器,默认false\r\n closeOnSelect: false // 指定是否在选择表情后关闭表情选择器,默认false\r\n}\r\n\r\nBraftEditor.use(Emoticon(emotionOptions))\r\n\r\nexport const BarftEditorPage = ({\r\n value,\r\n}: {\r\n value: string;\r\n}) => {\r\n const controls: ControlType[] = [\r\n \"bold\",\r\n \"italic\",\r\n \"underline\",\r\n \"separator\",\r\n \"link\",\r\n \"emoji\",\r\n \"separator\",\r\n \"media\"\r\n ];\r\n\r\n const [editorState, setEditorState] = useState(\r\n BraftEditor.createEditorState(value || \"<p>Hello <b>World!</b></p>\")\r\n );\r\n\r\n return (\r\n <div className=\"editor-wrapper\">\r\n <BraftEditor\r\n value={editorState}\r\n onChange={setEditorState}\r\n controls={controls}\r\n contentStyle={{\r\n boxShadow: \"inset 0 1px 3px rgba(0,0,0,.1)\"\r\n }}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default BarftEditorPage;"],"names":["this","require$$0","require$$1","_interopRequireDefault","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","_draftJs","_immutable","_react","_configs","_draftConvert","_draftjsUtils","_braftConvert","_content","_base","_color","lengthOptions","defaultValue","BraftEditor","use","MaxLength","emoticons","defaultEmoticons","map","item","require","emotionOptions","closeOnBlur","closeOnSelect","Emoticon","BarftEditorPage","value","controls","useState","createEditorState","editorState","setEditorState","React","boxShadow"],"mappings":"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"}