{"version":3,"sources":["../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/draft-js/node_modules/immutable/dist/immutable.js","../node_modules/fbjs/lib/invariant.js","../node_modules/draft-js/lib/EditorState.js","../node_modules/draft-js/lib/DraftModifier.js","../node_modules/fbjs/lib/nullthrows.js","../node_modules/fbjs/lib/UserAgent.js","../node_modules/draft-js/lib/Draft.js","../node_modules/draft-js/lib/CharacterMetadata.js","../node_modules/draft-js/lib/ContentBlockNode.js","../node_modules/react-draft-wysiwyg/dist/react-draft-wysiwyg.js","../node_modules/draft-js/lib/generateRandomKey.js","../node_modules/draftjs-to-html/lib/draftjs-to-html.js","../node_modules/html-to-draftjs/dist/html-to-draftjs.js","../node_modules/draft-js/lib/DraftOffsetKey.js","../node_modules/draft-js/lib/gkx.js","../node_modules/draft-js/lib/ContentBlock.js","../node_modules/fbjs/lib/cx.js","../node_modules/draft-js/lib/isElement.js","../node_modules/fbjs/lib/UnicodeUtils.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/draft-js/lib/BlockMapBuilder.js","../node_modules/draft-js/lib/findRangesImmutable.js","../node_modules/webpack/buildin/amd-options.js","../node_modules/draft-js/lib/isHTMLElement.js","../node_modules/draft-js/lib/removeTextWithStrategy.js","../node_modules/draft-js/lib/getContentStateFragment.js","../node_modules/draft-js/lib/DraftEntity.js","../node_modules/draft-js/lib/SelectionState.js","../node_modules/fbjs/lib/UnicodeBidiDirection.js","../node_modules/draft-js/lib/findAncestorOffsetKey.js","../node_modules/draft-js/lib/getCorrectDocumentFromNode.js","../node_modules/fbjs/lib/Keys.js","../node_modules/fbjs/lib/Style.js","../node_modules/fbjs/lib/getScrollPosition.js","../node_modules/draft-js/lib/isEventHandled.js","../node_modules/draft-js/lib/ContentState.js","../node_modules/fbjs/lib/UnicodeBidi.js","../node_modules/draft-js/lib/DefaultDraftBlockRenderMap.js","../node_modules/draft-js/lib/getEntityKeyForSelection.js","../node_modules/fbjs/lib/containsNode.js","../node_modules/fbjs/lib/Scroll.js","../node_modules/draft-js/lib/moveSelectionBackward.js","../node_modules/fbjs/lib/warning.js","../node_modules/draft-js/lib/KeyBindingUtil.js","../node_modules/draft-js/lib/randomizeBlockMapKeys.js","../node_modules/draft-js/lib/removeEntitiesAtEdges.js","../node_modules/draft-js/lib/insertIntoList.js","../node_modules/draft-js/lib/modifyBlockForContentState.js","../node_modules/draft-js/lib/getNextDelimiterBlockKey.js","../node_modules/draft-js/lib/getOwnObjectValues.js","../node_modules/draft-js/lib/DraftEntityInstance.js","../node_modules/draft-js/lib/sanitizeDraftText.js","../node_modules/draft-js/lib/DefaultDraftInlineStyle.js","../node_modules/draft-js/lib/getSelectionOffsetKeyForNode.js","../node_modules/draft-js/lib/getWindowForNode.js","../node_modules/draft-js/lib/editOnSelect.js","../node_modules/draft-js/lib/DraftJsDebugLogging.js","../node_modules/draft-js/lib/getContentEditableContainer.js","../node_modules/draft-js/lib/getDraftEditorSelection.js","../node_modules/draft-js/lib/getDraftEditorSelectionWithNodes.js","../node_modules/draft-js/lib/getUpdatedSelectionState.js","../node_modules/draft-js/lib/draftKeyUtils.js","../node_modules/draft-js/lib/DraftEditorLeaf.react.js","../node_modules/draft-js/lib/isHTMLBRElement.js","../node_modules/draft-js/lib/DraftEffects.js","../node_modules/fbjs/lib/getActiveElement.js","../node_modules/fbjs/lib/getElementPosition.js","../node_modules/fbjs/lib/getViewportDimensions.js","../node_modules/draft-js/lib/DraftEditorBlock.react.js","../node_modules/fbjs/lib/DataTransfer.js","../node_modules/fbjs/lib/emptyFunction.js","../node_modules/draft-js/lib/getTextContentFromFiles.js","../node_modules/draft-js/lib/getFragmentFromSelection.js","../node_modules/draft-js/lib/keyCommandPlainBackspace.js","../node_modules/draft-js/lib/getRangeClientRects.js","../node_modules/draft-js/lib/DraftRemovableWord.js","../node_modules/draft-js/lib/moveSelectionForward.js","../node_modules/draft-js/lib/convertFromHTMLToContentBlocks.js","../node_modules/draft-js/lib/getSafeBodyFromHTML.js","../node_modules/draft-js/lib/RichTextEditorUtil.js","../node_modules/draft-js/lib/getDefaultKeyBinding.js","../node_modules/draft-js/lib/DraftStringKey.js","../node_modules/immutable/dist/immutable.js","../node_modules/draft-js/lib/AtomicBlockUtils.js","../node_modules/draft-js/lib/ContentStateInlineStyle.js","../node_modules/draft-js/lib/applyEntityToContentState.js","../node_modules/draft-js/lib/applyEntityToContentBlock.js","../node_modules/draft-js/lib/getCharacterRemovalRange.js","../node_modules/draft-js/lib/DraftEntitySegments.js","../node_modules/draft-js/lib/getRangesForDraftEntity.js","../node_modules/draft-js/lib/insertFragmentIntoContentState.js","../node_modules/draft-js/lib/insertTextIntoContentState.js","../node_modules/draft-js/lib/removeRangeFromContentState.js","../node_modules/draft-js/lib/splitBlockInContentState.js","../node_modules/draft-js/lib/BlockTree.js","../node_modules/draft-js/lib/uuid.js","../node_modules/draft-js/lib/EditorBidiService.js","../node_modules/fbjs/lib/UnicodeBidiService.js","../node_modules/draft-js/lib/moveBlockInContentState.js","../node_modules/draft-js/lib/CompositeDraftDecorator.js","../node_modules/draft-js/lib/DraftEditor.react.js","../node_modules/draft-js/lib/DraftEditorCompositionHandler.js","../node_modules/draft-js/lib/DOMObserver.js","../node_modules/fbjs/lib/UserAgentData.js","../node_modules/ua-parser-js/src/ua-parser.js","../node_modules/fbjs/lib/VersionRange.js","../node_modules/fbjs/lib/mapObject.js","../node_modules/fbjs/lib/memoizeStringOnly.js","../node_modules/draft-js/lib/DraftEditorContents.react.js","../node_modules/draft-js/lib/DraftEditorContentsExperimental.react.js","../node_modules/draft-js/lib/DraftEditorBlockNode.react.js","../node_modules/draft-js/lib/DraftEditorNode.react.js","../node_modules/draft-js/lib/DraftEditorDecoratedLeaves.react.js","../node_modules/draft-js/lib/DraftEditorTextNode.react.js","../node_modules/draft-js/lib/setDraftEditorSelection.js","../node_modules/fbjs/lib/isTextNode.js","../node_modules/fbjs/lib/isNode.js","../node_modules/fbjs/lib/getStyleProperty.js","../node_modules/fbjs/lib/camelize.js","../node_modules/fbjs/lib/hyphenate.js","../node_modules/fbjs/lib/getElementRect.js","../node_modules/fbjs/lib/getDocumentScrollElement.js","../node_modules/fbjs/lib/getUnboundedScrollPosition.js","../node_modules/draft-js/lib/DraftEditorContents-core.react.js","../node_modules/fbjs/lib/joinClasses.js","../node_modules/draft-js/lib/DraftEditorDragHandler.js","../node_modules/fbjs/lib/PhotosMimeType.js","../node_modules/fbjs/lib/createArrayFromMixed.js","../node_modules/draft-js/lib/DraftEditorEditHandler.js","../node_modules/draft-js/lib/editOnBeforeInput.js","../node_modules/draft-js/lib/isSelectionAtLeafStart.js","../node_modules/fbjs/lib/setImmediate.js","../node_modules/setimmediate/setImmediate.js","../node_modules/draft-js/lib/editOnBlur.js","../node_modules/draft-js/lib/editOnCompositionStart.js","../node_modules/draft-js/lib/editOnCopy.js","../node_modules/draft-js/lib/editOnCut.js","../node_modules/draft-js/lib/isInstanceOfNode.js","../node_modules/draft-js/lib/editOnDragOver.js","../node_modules/draft-js/lib/editOnDragStart.js","../node_modules/draft-js/lib/editOnFocus.js","../node_modules/draft-js/lib/editOnInput.js","../node_modules/draft-js/lib/editOnKeyDown.js","../node_modules/draft-js/lib/isSoftNewlineEvent.js","../node_modules/draft-js/lib/SecondaryClipboard.js","../node_modules/draft-js/lib/keyCommandBackspaceToStartOfLine.js","../node_modules/draft-js/lib/expandRangeToStartOfLine.js","../node_modules/draft-js/lib/keyCommandBackspaceWord.js","../node_modules/fbjs/lib/TokenizeUtil.js","../node_modules/draft-js/lib/keyCommandDeleteWord.js","../node_modules/draft-js/lib/keyCommandInsertNewline.js","../node_modules/draft-js/lib/keyCommandMoveSelectionToEndOfBlock.js","../node_modules/draft-js/lib/keyCommandMoveSelectionToStartOfBlock.js","../node_modules/draft-js/lib/keyCommandPlainDelete.js","../node_modules/draft-js/lib/keyCommandTransposeCharacters.js","../node_modules/draft-js/lib/keyCommandUndo.js","../node_modules/draft-js/lib/editOnPaste.js","../node_modules/draft-js/lib/DraftPasteProcessor.js","../node_modules/fbjs/lib/URI.js","../node_modules/draft-js/lib/isHTMLAnchorElement.js","../node_modules/draft-js/lib/isHTMLImageElement.js","../node_modules/draft-js/lib/adjustBlockDepthForContentState.js","../node_modules/draft-js/lib/splitTextIntoTextBlocks.js","../node_modules/draft-js/lib/DraftEditorFlushControlled.js","../node_modules/draft-js/lib/DraftEditorPlaceholder.react.js","../node_modules/draft-js/lib/convertFromDraftStateToRaw.js","../node_modules/draft-js/lib/encodeEntityRanges.js","../node_modules/draft-js/lib/encodeInlineStyleRanges.js","../node_modules/draft-js/lib/convertFromRawToDraftState.js","../node_modules/draft-js/lib/DraftTreeAdapter.js","../node_modules/draft-js/lib/DraftTreeInvariants.js","../node_modules/draft-js/lib/createCharacterList.js","../node_modules/draft-js/lib/decodeEntityRanges.js","../node_modules/draft-js/lib/decodeInlineStyleRanges.js","../node_modules/draft-js/lib/getVisibleSelectionRect.js","../node_modules/draft-js/lib/getRangeBoundingClientRect.js"],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","__proto__","module","exports","SLICE$0","Array","slice","createClass","ctor","Iterable","value","isIterable","Seq","KeyedIterable","isKeyed","KeyedSeq","IndexedIterable","isIndexed","IndexedSeq","SetIterable","isAssociative","SetSeq","maybeIterable","IS_ITERABLE_SENTINEL","maybeKeyed","IS_KEYED_SENTINEL","maybeIndexed","IS_INDEXED_SENTINEL","maybeAssociative","isOrdered","maybeOrdered","IS_ORDERED_SENTINEL","Keyed","Indexed","Set","DELETE","SHIFT","SIZE","MASK","NOT_SET","CHANGE_LENGTH","DID_ALTER","MakeRef","ref","SetRef","OwnerID","arrCopy","arr","offset","len","Math","max","length","newArr","ii","ensureSize","iter","undefined","size","__iterate","returnTrue","wrapIndex","index","uint32Index","NaN","wholeSlice","begin","end","resolveBegin","resolveIndex","resolveEnd","defaultIndex","min","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","Symbol","iterator","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","next","this","iteratorValue","type","k","v","iteratorResult","done","iteratorDone","hasIterator","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","call","isArrayLike","emptySequence","toSeq","seqFromValue","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","entrySeq","toIndexedSeq","indexedSeqFromValue","toSetSeq","toString","KEYS","VALUES","ENTRIES","inspect","toSource","of","arguments","__toString","cacheResult","_cache","__iterateUncached","toArray","fn","reverse","seqIterate","__iterator","seqIterator","isSeq","EMPTY_SEQ","EMPTY_REPEAT","EMPTY_RANGE","IS_SEQ_SENTINEL","ArraySeq","array","_array","ObjectSeq","object","keys","_object","_keys","IterableSeq","_iterable","IteratorSeq","_iterator","_iteratorCache","maybeSeq","seq","isArray","TypeError","maybeIndexedSeqFromValue","useKeys","cache","maxIndex","entry","__iteratorUncached","fromJS","json","converter","fromJSWith","fromJSDefault","key","parentJSON","map","isPlainObj","toList","toMap","is","valueA","valueB","valueOf","equals","deepEqual","a","b","__hash","notAssociative","entries","every","flipped","_","allEqual","bSize","has","get","Repeat","times","_value","Infinity","invariant","condition","error","Error","Range","start","step","abs","_start","_end","_step","ceil","Collection","KeyedCollection","IndexedCollection","SetCollection","notSetValue","hasOwnProperty","iterations","val","includes","searchValue","indexOf","lastIndexOf","this$0","other","possibleIndex","floor","offsetValue","imul","c","d","smi","i32","hash","o","h","STRING_HASH_CACHE_MIN_STRLEN","cachedHashString","hashString","hashCode","hashJSObj","string","stringHashCache","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","charCodeAt","obj","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","getIENodeHash","objHashUID","set","isExtensible","defineProperty","apply","nodeType","e","node","uniqueID","documentElement","WeakMap","assertNotInfinite","Map","emptyMap","isMap","withMutations","forEach","maybeMap","IS_MAP_SENTINEL","_root","updateMap","setIn","keyPath","updateIn","remove","deleteIn","update","updater","updatedValue","updateInDeepMap","forceIterator","clear","__ownerID","__altered","merge","mergeIntoMapWith","mergeWith","merger","mergeIn","iters","m","mergeDeep","deepMerger","mergeDeepWith","deepMergerWith","mergeDeepIn","sort","comparator","OrderedMap","sortFactory","sortBy","mapper","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","MapIterator","iterate","ownerID","makeMap","EMPTY_MAP","MapPrototype","ArrayMapNode","BitmapIndexedNode","bitmap","nodes","HashArrayMapNode","count","HashCollisionNode","keyHash","ValueNode","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","prev","__prev","root","newRoot","newSize","didChangeSize","didAlter","updateNode","shift","isLeafNode","mergeIntoNode","newNode","idx1","idx2","createNodes","packNodes","excluding","packedII","packedNodes","bit","expandNodes","including","expandedNodes","iterables","push","mergeIntoCollectionWith","existing","nextValue","collection","filter","x","mergeIntoMap","keyPathIter","isNotSet","existingValue","newValue","nextExisting","nextUpdated","popCount","idx","canEdit","newArray","spliceIn","newLen","after","spliceOut","pop","removeIn","removed","exists","MAX_ARRAY_MAP_SIZE","isEditable","newEntries","keyHashFrag","MAX_BITMAP_INDEXED_SIZE","newBitmap","newNodes","newCount","MIN_HASH_ARRAY_MAP_SIZE","keyMatch","stack","subNode","List","empty","emptyList","isList","makeList","VNode","list","setSize","i","maybeList","IS_LIST_SENTINEL","listNodeFor","_origin","updateList","splice","insert","_capacity","_level","_tail","values","oldSize","setListBounds","unshift","mergeIntoListWith","iterateList","DONE","ListPrototype","removeBefore","level","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","EMPTY_ORDERED_MAP","left","right","tailPos","getTailOffset","tail","iterateNodeOrLeaf","iterateLeaf","iterateNode","from","to","origin","capacity","newTail","updateVNode","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","maxSize","emptyOrderedMap","isOrderedMap","maybeOrderedMap","makeOrderedMap","omap","_map","_list","updateOrderedMap","newMap","newList","flip","ToKeyedSequence","indexed","_iter","_useKeys","ToIndexedSequence","ToSetSequence","FromEntriesSequence","flipFactory","flipSequence","makeSequence","reversedSequence","cacheResultThrough","mapFactory","context","mappedSequence","reverseFactory","filterFactory","predicate","filterSequence","countByFactory","grouper","groups","groupByFactory","isKeyedIter","coerce","iterableClass","reify","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","takeWhileFactory","takeSequence","iterating","skipWhileFactory","skipSequence","skipping","concatFactory","isKeyedIterable","concat","singleton","concatSeq","flatten","reduce","sum","flattenFactory","depth","flatSequence","stopped","flatDeep","currentDepth","flatMapFactory","interposeFactory","separator","interposedSequence","defaultComparator","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","zipSequence","iterators","isDone","steps","some","s","validateEntry","resolveSize","Record","defaultValues","name","hasInitialized","RecordType","setProps","RecordTypePrototype","_name","_defaultValues","RecordPrototype","valueSeq","indexedIterable","recordName","defaultVal","_empty","makeRecord","likeRecord","record","getPrototypeOf","names","setProp","bind","emptySet","isSet","add","maybeSet","IS_SET_SENTINEL","fromKeys","keySeq","updateSet","union","intersect","originalSet","subtract","OrderedSet","__make","EMPTY_SET","SetPrototype","__empty","makeSet","emptyOrderedSet","isOrderedSet","maybeOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","Stack","emptyStack","isStack","unshiftAll","maybeStack","IS_STACK_SENTINEL","head","_head","peek","makeStack","pushAll","EMPTY_STACK","StackPrototype","mixin","methods","keyCopier","getOwnPropertySymbols","toJS","__toJS","toJSON","toObject","toOrderedMap","toOrderedSet","toSet","toStack","__toStringMapper","join","returnValue","find","findEntry","found","findLastEntry","sideEffect","joined","isFirst","reducer","initialReduction","reduction","useFirst","reduceRight","reversed","not","butLast","isEmpty","countBy","entriesSequence","entryMapper","filterNot","findLast","first","flatMap","searchKey","getIn","searchKeyPath","nested","groupBy","hasIn","isSubset","isSuperset","keyMapper","last","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeUntil","hashIterable","IterablePrototype","quoteString","chain","contains","noLengthWarning","console","warn","findKey","findLastKey","keyOf","lastKeyOf","mapEntries","mapKeys","KeyedIterablePrototype","JSON","stringify","defaultZipper","ordered","keyed","murmurHashOfSize","hashMerge","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interleave","zipped","interleaved","zip","zipWith","factory","validateFormat","format","_len","args","_key","argIndex","replace","String","framesToPop","_objectSpread","target","source","ownKeys","sym","getOwnPropertyDescriptor","enumerable","_defineProperty","configurable","writable","BlockTree","require","ContentState","EditorBidiService","SelectionState","Immutable","EditorStateRecord","allowUndo","currentContent","decorator","directionMap","forceSelection","inCompositionMode","inlineStyleOverride","lastChangeType","nativelyRenderedContent","redoStack","selection","treeMap","undoStack","EditorState","createEmpty","createWithText","text","createWithContent","createFromText","contentState","getBlockMap","firstKey","getKey","config","recordConfig","generateNewTreeMap","getDirectionMap","editorState","put","getImmutable","state","existingDecorator","newContent","getCurrentContent","newTreeMap","content","blockMap","previousTreeMap","block","getDecorations","generate","regenerateTreeForNewDecorator","newBlockMap","newEntityMap","prevBlockMap","regenerateTreeForNewBlocks","getEntityMap","_proto","immutable","_immutable","getAllowUndo","getUndoStack","getRedoStack","getSelection","getDecorator","isInCompositionMode","mustForceSelection","getNativelyRenderedContent","getLastChangeType","getInlineStyleOverride","setInlineStyleOverride","getCurrentInlineStyle","override","isCollapsed","startKey","getStartKey","startOffset","getStartOffset","startBlock","getBlockForKey","getInlineStyleAt","getLength","lookUpwardForInlineStyle","getInlineStyleForCollapsedSelection","getInlineStyleForNonCollapsedSelection","getBlockTree","blockKey","isSelectionAtStartOfContent","hasEdgeWithin","isSelectionAtEndOfContent","acceptSelection","updateSelection","getHasFocus","moveSelectionToEnd","lastBlock","getLastBlock","lastKey","anchorKey","anchorOffset","focusKey","focusOffset","isBackward","moveFocusToEnd","afterSelectionMove","changeType","getSelectionAfter","mustBecomeBoundary","getSelectionBefore","overrideChangeTypes","editorStateChanges","undo","newCurrentContent","redo","fromKey","lastNonEmpty","CharacterMetadata","ContentStateInlineStyle","applyEntityToContentState","getCharacterRemovalRange","getContentStateFragment","insertFragmentIntoContentState","insertTextIntoContentState","modifyBlockForContentState","removeEntitiesAtEdges","removeRangeFromContentState","splitBlockInContentState","DraftModifier","replaceText","rangeToReplace","inlineStyle","entityKey","withoutEntities","withoutText","character","style","entity","insertText","targetRange","moveText","removalRange","movedFragment","afterRemoval","removeRange","replaceWithFragment","fragment","mergeBlockData","rangeToRemove","removalDirection","endKey","endBlock","getIsBackward","getFocusKey","getFocusOffset","getAnchorKey","getAnchorOffset","endOffset","getEndOffset","startEntityKey","getEntityAt","endEntityKey","adjustedRemovalRange","splitBlock","selectionState","applyInlineStyle","removeInlineStyle","setBlockType","blockType","setBlockData","blockData","data","getData","applyEntity","UserAgentData","VersionRange","mapObject","memoizeStringOnly","compare","version","query","normalizer","startsWith","range","normalizePlatformVersion","platformName","UserAgent","isBrowser","browserName","browserFullVersion","isBrowserArchitecture","browserArchitecture","isDevice","deviceName","isEngine","engineName","engineVersion","isPlatform","platformFullVersion","isPlatformArchitecture","platformArchitecture","AtomicBlockUtils","BlockMapBuilder","CompositeDraftDecorator","ContentBlock","DefaultDraftBlockRenderMap","DefaultDraftInlineStyle","DraftEditor","DraftEditorBlock","DraftEntity","DraftEntityInstance","KeyBindingUtil","RawDraftContentState","RichTextEditorUtil","convertFromDraftStateToRaw","convertFromRawToDraftState","generateRandomKey","getDefaultKeyBinding","getVisibleSelectionRect","DraftPublic","Editor","EditorBlock","CompositeDecorator","Entity","EntityInstance","Modifier","RichUtils","convertFromHTML","convertFromRaw","convertToRaw","genKey","_require","defaultRecord","_CharacterMetadataRec","getStyle","getEntity","hasStyle","applyStyle","withStyle","removeStyle","withoutStyle","withEntity","EMPTY","configMap","pool","newCharacter","_ref","findRangesImmutable","parent","characterList","children","prevSibling","nextSibling","haveEqualStyle","charA","charB","haveEqualEntity","decorateCharacterList","ContentBlockNode","props","getType","getText","getCharacterList","getDepth","getChildKeys","getParentKey","getPrevSiblingKey","getNextSiblingKey","findStyleRanges","filterFn","callback","findEntityRanges","window","n","r","t","default","l","j","getEndKey","u","tryToRemoveBlockStyle","p","f","g","delete","y","code","element","M","N","getBlockBefore","selectionBefore","selectionAfter","S","which","getModifierState","insertSoftNewline","E","C","L","BOLD","ITALIC","UNDERLINE","STRIKETHROUGH","CODE","SUPERSCRIPT","SUBSCRIPT","D","w","I","toLowerCase","getOwnPropertyDescriptors","defineProperties","color","bgcolor","fontSize","fontFamily","wordWrap","background","borderRadius","padding","position","top","display","bottom","O","toggleInlineStyle","A","substr","T","z","toStringTag","__esModule","textContent","trim","chunk","inlines","entities","blocks","fill","wrapper","blockquote","atomic","unstyled","aliasedElements","del","em","strong","ins","sub","sup","textAlign","marginLeft","HTMLAnchorElement","dataset","mention","url","href","innerHTML","__create","getAttribute","title","targetOption","RegExp","document","implementation","createHTMLDocument","getElementsByTagName","nodeName","mutability","HTMLImageElement","src","alt","height","width","float","alignment","HTMLVideoElement","HTMLIFrameElement","HTMLElement","backgroundColor","fontWeight","textDecoration","fontStyle","firstChild","__get","contentBlocks","split","entityMap","fuzzyLink","fuzzyEmail","fuzzyIP","validate","re","http","src_auth","src_host_port_strict","src_path","test","match","no_http","src_domain","src_domain_root","src_port","src_host_terminator","mailto","src_email_name","src_host_strict","normalize","__opts__","__tlds__","src_tlds","onCompile","__tlds_replaced__","src_xn","email_fuzzy","tpl_email_fuzzy","link_fuzzy","tpl_link_fuzzy","link_no_ip_fuzzy","tpl_link_no_ip_fuzzy","host_fuzzy_test","tpl_host_fuzzy_test","__compiled__","__schemas__","link","schema_test","src_ZPCc","schema_search","pretest","__index__","__text_cache__","__last_index__","schema","__schema__","lastIndex","raw","exec","testSchemaAt","search","tlds","resetWarningCache","isRequired","bool","func","number","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","src_Any","src_Cc","src_Z","src_P","src_ZCc","src_pseudo_letter","src_ip4","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","tpl_host_fuzzy_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","callBacks","suggestionCallback","editorFlag","suggestionFlag","closeAllModals","init","getElementById","addEventListener","onEditorClick","closeModals","registerCallBack","deregisterCallBack","setSuggestionCallback","removeSuggestionCallback","onSuggestionClick","inputFocused","editorMouseDown","onEditorMouseDown","editorFocused","onInputMouseDown","isEditorBlur","tagName","isEditorFocused","isToolbarFocused","isInputFocused","onKeyDown","stopPropagation","options","icon","ReferenceError","setPrototypeOf","onClick","disabled","className","activeClassName","active","createElement","P","U","Y","propTypes","defaultProps","F","highlighted","onChange","toggleExpansion","setHighlighted","setState","doExpand","doCollapse","expanded","optionWrapperClassName","ariaLabel","onExpandEvent","Children","cloneElement","onSelect","R","B","Q","H","Z","W","G","resetHighlighted","disabledClassName","highlightedClassName","onMouseEnter","onMouseLeave","J","V","q","K","X","$","currentState","translations","dropdownClassName","inDropdown","renderInDropDown","renderInFlatList","ee","te","ne","oe","ie","signalExpanded","expandCollapse","toUpperCase","changeKeys","modalHandler","currentStyles","getSelectionInlineStyle","component","ae","ce","le","se","ue","pe","getBlockTypes","label","displayName","blockTypes","renderInDropdown","renderFlat","de","me","fe","ge","ye","he","Me","blocksTypes","toggleBlockType","currentBlockType","getSelectedBlocksType","be","je","Ne","Se","Ee","Ce","Le","defaultFontSize","getElementsByClassName","getComputedStyle","getPropertyValue","substring","Number","ke","De","ve","we","xe","Ie","toggleFontSize","toggleCustomInlineStyle","currentFontSize","getSelectionCustomInlineStyle","FONTSIZE","Oe","Ae","Te","ze","_e","Pe","defaultFontFamily","Ue","Ye","Fe","Re","Be","Qe","He","toggleFontFamily","currentFontFamily","FONTFAMILY","Ze","We","Ge","Je","Ve","qe","indent","outdent","listType","indentDisabled","outdentDisabled","unordered","Ke","Xe","$e","et","tt","nt","adjustDepth","changeDepth","isIndentDisabled","currentBlock","getBlockBeforeSelectedBlock","isListBlock","isOutdentDisabled","getSelectedBlock","ot","rt","it","at","ct","lt","center","justify","textAlignment","st","ut","pt","dt","mt","ft","addBlockAlignmentData","currentTextAlignment","getSelectedBlocksMetadata","gt","yt","ht","Mt","bt","jt","currentStyle","setCurrentStyleColor","setCurrentStyleBgcolor","renderModal","popupClassName","colors","bgColor","Nt","St","Et","Ct","Lt","kt","Dt","currentColor","currentBgColor","toggleColor","COLOR","BGCOLOR","vt","wt","xt","It","Ot","At","Tt","zt","_t","showModal","linkTarget","linkTitle","linkTargetOption","defaultTargetOption","removeLink","addLink","updateValue","updateTargetOption","checked","hideModal","signalExpandShowModal","selectionText","forceExpandAndShowModal","htmlFor","id","onBlur","defaultChecked","unlink","renderAddLinkModal","Pt","Ut","Yt","Ft","Rt","Bt","Qt","Ht","Zt","Wt","Gt","linkCallback","getCurrentValues","currentEntity","getEntityRange","getSelectionText","toggleLink","createEntity","getLastCreatedEntityKey","getSelectionEntity","Jt","Vt","qt","Kt","Xt","$t","en","embeddedLink","defaultSize","placeholder","rendeEmbeddedLinkModal","tn","nn","on","rn","an","cn","ln","addEmbeddedLink","embedCallback","insertAtomicBlock","sn","un","pn","dn","mn","gn","emojis","renderEmojiModal","yn","hn","Mn","bn","jn","Nn","Sn","addEmoji","onCollpase","closeModal","En","Cn","Ln","kn","Dn","vn","wn","imgSrc","dragEnter","uploadHighlighted","uploadEnabled","uploadCallback","showImageLoading","onDragEnter","onImageDrop","preventDefault","dataTransfer","items","files","kind","getAsFile","uploadImage","showImageUploadOption","addImageFromState","isNaN","showImageURLOption","toggleShowImageLoading","selectImage","then","fileUpload","catch","fileUploadClick","urlEnabled","previewImage","inputAccept","onDragOver","onDrop","accept","present","mandatory","renderAddImageModal","xn","In","On","An","Tn","zn","_n","addImage","Pn","Un","Yn","Fn","Rn","Bn","Qn","Hn","Zn","removeInlineStyles","removeAllInlineStyles","Wn","Gn","Jn","Vn","qn","Kn","undoDisabled","redoDisabled","Xn","$n","eo","no","oo","ro","inline","colorPicker","embedded","emoji","image","history","io","ao","co","lo","so","uo","po","mo","fo","go","showOpenOptionOnHover","showPopOver","openLink","open","focus","toggleShowPopOver","yo","getMentionComponent","getMentionDecorator","strategy","findMentionEntities","ho","Mo","bo","jo","No","So","Eo","Co","findSuggestionEntities","getEditorState","trigger","getSuggestions","caseSensitive","getSuggestionComponent","activeOption","showSuggestions","onEditorKeyDown","filteredSuggestions","addMention","onOptionMouseEnter","onOptionMouseLeave","setSuggestionReference","suggestion","setDropdownReference","dropdown","closeSuggestionDropdown","filterSuggestions","getWrapperRef","getBoundingClientRect","optionClassName","contentEditable","suppressContentEditableWarning","spellCheck","getSuggestionDecorator","Lo","mentionClassName","ko","getHashtagComponent","findHashtagEntities","hashCharacter","getHashtagDecorator","Do","frameBorder","allowFullScreen","vo","wo","xo","Io","Oo","Ao","To","zo","hovered","setEntityAlignmentLeft","setEntityAlignment","setEntityAlignmentRight","setEntityAlignmentCenter","mergeEntityData","dummy","toggleHovered","isReadOnly","isImageAlignmentEnabled","renderAlignmentOptions","_o","Po","bold","italic","underline","strikethrough","monospace","superscript","subscript","alignmentEnabled","Uo","fr","zh","ru","nl","da","zh_tw","pl","es","ja","Yo","Fo","assign","Ro","Bo","Qo","Ho","Zo","Wo","Go","Jo","Vo","onEditorBlur","onEditorFocus","onFocus","focusHandler","keyBindingFn","onTab","shiftKey","onToolbarFocus","onWrapperBlur","readOnly","onEditorStateChange","wrapperId","afterChange","setWrapperReference","setEditorReference","editorRef","editor","getCompositeDecorator","customDecorators","hashtag","suggestions","setTimeout","onContentStateChange","toolbar","createEditorState","defaultEditorState","defaultContentState","initialContentState","filterEditorProps","getStyleMap","getCustomStyleMap","customStyleMap","changeEditorState","focusEditor","handleKeyCommand","handleReturn","handleNewLine","handlePastedTextFn","handlePastedText","stripPastedStyles","random","blockRendererFn","customBlockRenderFunc","editorProps","compositeDecorator","extractInlineStyle","locale","localization","toolbarCustomButtons","toolbarOnFocus","toolbarClassName","toolbarHidden","editorClassName","wrapperClassName","toolbarStyle","editorStyle","wrapperStyle","visibility","onMouseDown","blockStyleFn","blockRenderMap","tabIndex","ariaOwneeID","ariaActiveDescendantID","ariaAutoComplete","ariaDescribedBy","ariaExpanded","ariaHasPopup","qo","seenKeys","MULTIPLIER","pow","isEmptyString","str","blockTypesMapping","getBlockTag","getBlockStyle","styles","getHashtagRanges","blockText","hashtagConfig","sections","counter","startIndex","endIndex","getSections","lastOffset","sectionRanges","entityRanges","s1","s2","isAtomicEntityBlock","getStyleArrayForBlock","inlineStyleRanges","inlineStyles","getStylesAtOffset","sameStyleAsPrevious","sameStyled","addInlineStyleMarkup","getSectionText","ch","addStylePropertyMarkup","styleString","getEntityMarkup","customEntityTransform","html","getInlineStyleSections","styleSections","section","trimLeadingZeros","sectionText","replacedText","trimTrailingZeros","getStyleTagSectionMarkup","styleSection","getInlineStyleSectionMarkup","styleTagSections","styleSectionText","stylePropertySection","getSectionMarkup","entityInlineMarkup","getBlockInnerMarkup","blockMarkup","getBlockMarkup","directional","blockHtml","blockTag","blockStyle","getListMarkup","listBlocks","previousBlock","listHtml","nestedListBlock","nestedBlock","draftToHtml","editorContent","KEY_DELIMITER","DraftOffsetKey","encode","decoratorKey","leafKey","decode","offsetKey","_offsetKey$split$reve","parseInt","__DRAFT_GKX","ContentBlockRecord","_ContentBlockRecord","classNames","ownerDocument","Node","ELEMENT_NODE","SURROGATE_UNITS_REGEX","isCodeUnitInSurrogateRange","codeUnit","hasSurrogateUnit","getUTF16Length","pos","posA","posB","UnicodeUtils","getCodePoints","codePoints","codePointAt","isSurrogatePair","second","strlen","React","createContext","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","_this","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","status","nextCallback","getDerivedStateFromProps","prevState","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","timeout","mounting","performEnter","performExit","_this2","appearing","_ref2","nodeRef","ReactDOM","findDOMNode","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","_this3","onExit","onExiting","onExited","cancel","nextState","setNextCallback","_this4","event","handler","current","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","render","_this$props","childProps","_objectWithoutPropertiesLoose","TransitionGroupContext","Provider","only","Component","noop","contextType","createFromArray","haystack","areEqualFn","foundFn","cursor","nextIndex","__webpack_amd_options__","defaultView","experimentalTreeDataSupport","gkx","direction","anchorBlock","anchorBlockSibling","randomizeBlockMapKeys","blockKeys","chars","uuid","instances","instanceKey","logWarning","oldMethodCall","newMethodCall","__getLastCreatedEntityKey","instance","__add","__getAll","__loadWithEntities","mergeData","toMerge","__mergeData","replaceData","newData","__replaceData","newInstance","_SelectionStateRecord","serialize","selectionStart","selectionEnd","offsetToCheck","hasFocus","LTR","globalDir","isStrong","dir","getHTMLDir","setGlobalDir","UnicodeBidiDirection","NEUTRAL","RTL","getHTMLDirIfDifferent","otherDir","initGlobalDir","getGlobalDir","getCorrectDocumentFromNode","getSelectionOffsetKeyForNode","searchNode","parentNode","BACKSPACE","TAB","RETURN","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","COMMA","PERIOD","ZERO","NUMPAD_0","NUMPAD_9","_isNodeScrollable","overflow","Style","getScrollParent","body","parentWindow","getDocumentScrollElement","getUnboundedScrollPosition","scrollable","documentScrollElement","Window","scrollPosition","viewport","xMax","scrollWidth","clientWidth","yMax","scrollHeight","clientHeight","getOwnObjectValues","sanitizeDraftText","ImmutableMap","ContentStateRecord","ContentBlockNodeRecord","_ContentStateRecord","getKeyBefore","getKeyAfter","getBlockAfter","getBlocksAsArray","getFirstBlock","getPlainText","delimiter","hasText","escape","replaceEntityData","addEntity","getAllEntities","loadWithEntities","createFromBlockArray","theBlocks","strings","createContentBlockFromJS","RANGE_BY_BIDI_TYPE","REGEX_STRONG","REGEX_RTL","firstStrongChar","firstStrongCharDir","strongChar","resolveBlockDir","fallback","blockDir","getDirection","strongFallback","UnicodeBidi","isDirectionLTR","isDirectionRTL","cx","article","notEmptyKey","filterKey","getMutability","targetSelection","isTextNode","containsNode","outerNode","innerNode","compareDocumentPosition","_isViewportScrollElement","doc","Scroll","getTop","scrollTop","setTop","newTop","getLeft","scrollLeft","setLeft","newLeft","maxDistance","keyBefore","warning","isSoftNewlineEvent","isOSX","isCtrlKeyCommand","ctrlKey","altKey","isOptionKeyCommand","usesMacOSHeuristics","hasCommandModifier","metaKey","lastRootBlock","newKeysRef","blockMapState","oldKey","nextKey","prevKey","childrenKeys","parentKey","parentChildrenList","childKey","child","randomizeContentBlockNodeKeys","randomizeContentBlockKeys","removeForBlock","charBefore","charAfter","entityBeforeCursor","entityAfterCursor","_getRemovalRange","characters","getRemovalRange","updatedBlocks","updatedStart","updatedEnd","targetListArg","toInsert","targetList","operation","newBlocks","nextSiblingKey","nextNonDescendantBlock","_DraftEntityInstanceR","REGEX_BLOCK_DELIMITER","input","isElement","castedNode","childNodes","childOffsetKey","DraftJsDebugLogging","getContentEditableContainer","getDraftEditorSelection","_blockSelectEvents","_latestEditorState","logBlockedSelectionEvent","anonymizedDom","extraParams","stacktrace","documentSelection","updatedSelectionState","needsRecovery","logSelectionStateFailure","isHTMLElement","editorNode","editorContainer","getDraftEditorSelectionWithNodes","anchorNode","focusNode","rangeCount","findAncestorOffsetKey","getUpdatedSelectionState","nullthrows","getPointForNonTextNode","editorRoot","startNode","childOffset","firstLeaf","getFirstLeaf","nodeBeforeCursor","textLength","lastLeaf","lastChild","getLastLeaf","getTextContentLength","anchorIsTextNode","TEXT_NODE","focusIsTextNode","anchorPoint","focusPoint","anchorPath","anchorBlockKey","anchorLeafBlockTree","anchorLeaf","focusPath","focusBlockKey","focusLeafBlockTree","focusLeaf","anchorLeafStart","focusLeafStart","anchorBlockOffset","focusBlockOffset","anchorLeafEnd","focusLeafEnd","_assign","_assertThisInitialized","self","DraftEditorTextNode","isHTMLBRElement","setDraftEditorSelection","DraftEditorLeaf","_setSelection","leaf","targetNode","shouldComponentUpdate","nextProps","leafNode","styleSet","endsWith","isLast","_this$props2","customStyleFn","styleObj","styleName","mergedStyles","newStyles","initODS","handleExtensionCausedError","activeElement","getElementRect","rect","getViewportWidth","getViewportHeight","getViewportDimensions","innerWidth","innerHeight","withoutScrollbars","_extends","getElementPosition","getScrollPosition","isBlockOnSelectionEdge","tree","preventScroll","blockNode","_node","scrollDelta","scrollParent","nodePosition","scrollTo","offsetHeight","offsetTop","_renderChildren","lastLeafSet","hasSelection","leafSet","leavesForLeafSet","leaves","jj","DecoratorComponent","getComponentForKey","decoratorProps","getPropsForKey","decoratorOffsetKey","decoratedText","commonProps","PhotosMimeType","createArrayFromMixed","emptyFunction","CR_LF_REGEX","RICH_TEXT_TYPES","getFileFromDataTransfer","item","DataTransfer","types","isRichText","getHTML","isImage","isLink","getLink","getFiles","getCount","mozItemCount","thatReturnsArgument","hasFiles","makeEmptyFunction","arg","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","TEXT_CLIPPING_REGEX","TEXT_TYPES","readCount","results","file","global","FileReader","_contents","reader","onload","result","onerror","readAsText","readFile","moveSelectionBackward","removeTextWithStrategy","strategyState","charBehind","getRangeClientRects","tempRange","cloneRange","clientRects","ancestor","endContainer","atCommonAncestor","commonAncestorContainer","setStart","startContainer","rects","getClientRects","setEndBefore","WHITESPACE_AND_PUNCTUATION","getPunctuation","DELETE_REGEX","BACKSPACE_REGEX","getRemovableWord","matches","DraftRemovableWord","getBackward","getForward","_knownListItemDepthCl","URI","getSafeBodyFromHTML","isHTMLAnchorElement","isHTMLImageElement","REGEX_CR","REGEX_LF","REGEX_LEADING_LF","REGEX_NBSP","REGEX_CARRIAGE","REGEX_ZWS","boldValues","notBoldValues","anchorAttr","imgAttr","knownListItemDepthClasses","HTMLTagToRawInlineStyleMap","strike","mark","buildBlockTypeMap","blockTypeMap","desc","elements","detectInlineStyle","getListItemDepth","depthClass","classList","isValidAnchor","protocol","isValidImage","imageNode","attributes","getNamedItem","styleFromNodeAttributes","htmlElement","isListNode","ContentBlocksBuilder","disambiguate","blockConfigs","currentText","addDOMNode","_this$blockConfigs","_toBlockConfigs","_trimCurrentText","_makeBlockConfig","getContentBlocks","_toContentBlocks","_toFlatContentBlocks","childConfigs","wasCurrentDepth","wasWrapper","_addImgNode","_addAnchorNode","newStyle","_addBreakNode","_addTextNode","_wasCurrentDepth","_wasWrapper","_appendText","_this$characterList","characterMetadata","trimLeft","trimRight","entityConfig","attr","imageAttribute","anchor","anchorAttribute","_hoistContainersInBlockConfigs","blockConfig","_this2$_extractTextFr","_extractTextFromBlockConfigs","DOMBuilder","safeBody","tag","isOldIE","adjustBlockDepthForContentState","currentBlockContainsLink","getCurrentBlockType","getDataObjectForLinkURL","uri","command","eventTimeStamp","toggleCode","onBackspace","onDelete","newEditorState","blockBefore","withoutAtomicBlock","withoutBlockStyle","blockAfter","atomicBlockTarget","maxDepth","withAdjustment","typeToSet","withoutLink","Keys","shouldFixFirefoxMovement","shouldRemoveWord","keyCode","getZCommand","getDeleteCommand","getBackspaceCommand","DraftStringKey","unstringify","keyValues","moveBlockInContentState","afterSplit","insertionTarget","asAtomicBlock","charData","atomicBlockConfig","atomicDividerBlockConfig","fragmentArray","withAtomicBlock","moveAtomicBlock","atomicBlock","insertionMode","withMovedAtomicBlock","targetBlock","selectionAfterRemoval","_targetBlock","selectionAfterSplit","_targetBlock2","modifyInlineStyle","addOrRemove","sliceStart","sliceEnd","applyEntityToContentBlock","contentBlock","startArg","DraftEntitySegments","getRangesForDraftEntity","getEntityRemovalRange","isEntireSelectionWithinEntity","isEntityAtStart","sideToConsider","entityRange","newSelectionState","startSelectionState","endSelectionState","_startSelectionState","_endSelectionState","entityStart","segments","segment","segmentEnd","segmentStart","removalStart","removalEnd","entityEnd","atStart","atEnd","ranges","insertIntoList","updateExistingBlock","fragmentBlock","targetKey","targetOffset","finalKey","finalOffset","newBlock","insertFragment","isTreeBasedBlockMap","newBlockArr","fragmentSize","shouldNotUpdateFromFragmentBlock","headText","headCharacters","appendToHead","updateHead","blockSize","tailText","tailCharacters","prependToTail","updateTail","updatedBlockMap","originalBlockMap","fragmentHeadBlock","headKey","targetNextKey","targetParentKey","fragmentRootBlocks","rootBlock","rootBlocks","lastSiblingKey","getRootBlocks","lastRootFragmentBlockKey","originalTargetParentChildKeys","insertionIndex","newChildrenKeysArray","updateBlockMapLinks","fragmentBlockMap","newOffset","getNextDelimiterBlockKey","transformBlock","getAncestorsKeys","parents","getNextValidSibling","nextValidSiblingKey","getPrevValidSibling","prevValidSiblingKey","nextDelimiters","nextDelimiter","_block","getNextDelimitersBlockKeys","delimiterKey","prevSiblingKey","newParentKey","newParent","removeFromList","isExperimentalTreeBlock","parentAncestors","endBlockchildrenKeys","endBlockAncestors","modifiedStart","blockToSplit","keyBelow","blockAbove","blockBelow","blocksBefore","blocksAfter","originalBlock","belowBlock","originalBlockKey","belowBlockKey","newChildrenArray","LeafRange","DecoratorRange","leafSets","decorations","areEqual","generateLeaves","excluded","sourceKeys","bidiService","UnicodeBidiService","prevBidiMap","reset","nextBidi","bidiMap","defaultDir","_defaultDir","_lastDir","originalBlockToBeMoved","originalTargetBlock","isInsertedAfterTarget","originalTargetKey","originalParentKey","originalNextSiblingKey","originalPrevSiblingKey","newNextSiblingKey","newPrevSiblingKey","newParentChildrenList","targetBlockIndex","blockToBeMoved","blocksToBeMoved","blockMapWithoutBlocksToBeMoved","nextDelimiterBlockKey","isBlockToBeMoved","hasNextSiblingAndIsNotNextSibling","doesNotHaveNextSiblingAndIsNotDelimiter","slicedBlocks","decorators","_decorators","canOccupySlice","targetArr","componentKey","occupySlice","DraftEditorCompositionHandler","DraftEditorContents","DraftEditorDragHandler","DraftEditorEditHandler","flushControlled","DraftEditorPlaceholder","DraftEffects","isIE","allowSpellCheck","handlerMap","edit","composite","drag","cut","didInitODS","UpdateDraftEditorFlags","_update","_React$Component2","alreadyHasFocus","blur","mode","onPaste","onCut","onCopy","editHandler","_handler","setMode","contentsKey","clipboard","_clipboard","_dragCount","exitCurrentMode","_editorKey","editorKey","_placeholderAccessibilityID","_latestCommittedEditorState","_onBeforeInput","_buildHandler","_onBlur","_onCharacterData","_onCompositionEnd","_onCompositionStart","_onCopy","_onCut","_onDragEnd","_onDragOver","_onDragStart","_onDrop","_onInput","_onFocus","_onKeyDown","_onKeyPress","_onKeyUp","_onMouseDown","_onMouseUp","_onPaste","_onSelect","getEditorKey","_proto2","eventName","method","_showPlaceholder","_renderPlaceholder","placeHolderProps","accessibilityID","_renderARIADescribedBy","describedBy","placeholderID","textDirectionality","rootClass","ariaRole","role","editorContentsProps","_handleEditorContainerRef","ariaControls","ariaLabelledBy","ariaMultiline","autoCapitalize","autoComplete","autoCorrect","notranslate","webDriverTestID","onBeforeInput","onCompositionEnd","onCompositionStart","onDragEnd","onDragLeave","onDragStart","onInput","onKeyPress","onKeyUp","onMouseUp","outline","userSelect","WebkitUserSelect","whiteSpace","execCommand","DOMObserver","editOnSelect","getEntityKeyForSelection","resolved","stillComposing","domObserver","startDOMObserver","resolveComposition","_editor","mutations","stopAndFlushMutations","composedChars","_DraftOffsetKey$decod","_editorState$getBlock","replacementRange","compositionEndSelectionState","restoreEditorDOM","editorStateWithUpdatedSelection","getWindowForNode","DOM_OBSERVER_OPTIONS","subtree","characterData","childList","characterDataOldValue","USE_CHAR_DATA","container","containerWindow","MutationObserver","observer","registerMutations","onCharData","registerMutation","observe","takeRecords","disconnect","removeEventListener","getMutationTextContent","mutation","removedNodes","UAParser","UNKNOWN","PLATFORM_MAP","getResult","browserVersionData","major","minor","parts","getBrowserVersion","browser","uaData","cpu","architecture","browserMinorVersion","browserVersion","device","model","engine","os","platformVersion","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SONY","XIAOMI","ZEBRA","FACEBOOK","enumerize","enums","str1","str2","lowerize","rgxMapper","ua","arrays","regex","strMapper","windowsVersionMap","regexes","CHROME","EDGE","extensions","_ua","navigator","userAgent","_rgxmap","mergedRegexes","extend","getBrowser","_browser","getCPU","_cpu","getDevice","_device","getEngine","_engine","getOS","_os","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","define","jQuery","Zepto","parser","prop","componentRegex","orRegex","rangeRegex","modifierRegex","numericRegex","checkOrExpression","expressions","checkSimpleExpression","startVersion","endVersion","isSimpleVersion","checkRangeExpression","versionComponents","_getModifierAndCompon","getModifierAndComponents","modifier","rangeComponents","checkLessThan","compareComponents","checkLessThanOrEqual","checkGreaterThanOrEqual","lowerBound","upperBound","numeric","isNumber","checkApproximateVersion","checkEqual","isFinite","zeroPad","compareNumeric","aPrefix","bPrefix","aNumeric","bNumeric","_normalizeVersions","normalizeVersions","aNormalized","bNormalized","DraftEditorBlockNode","DraftEditorContentsExperimental","prevEditorState","nextEditorState","nextNativeContent","wasComposing","nowComposing","prevContent","nextContent","prevDecorator","nextDecorator","processedBlocks","nodeBlock","blockProps","wrapperTemplate","nextBlockKey","outputBlocks","info","wrapperElement","DraftEditorNode","getDraftRenderConfig","configForType","Element","getCustomRenderConfig","customRenderer","CustomComponent","customProps","customEditable","getElementPropsConfig","customConfig","elementProps","customClass","createRef","isContainerNode","blockHasChanged","wrapperRef","htmlBlockNode","acc","_getDraftRenderConfig","shouldNotAddWrapperElement","wrappedSiblings","_iteratorNormalCompletion","_didIteratorError","_iteratorError","sibling","err","childrenIs","applyWrapperElementToSiblings","DraftEditorDecoratedLeaves","Leaves","useNewlineChar","_forceFlag","shouldBeNewline","elementNode","isNewline","NEWLINE_B","getActiveElement","getAnonymizedDOM","getNodeLabels","anonymized","anonymizeTextWithin","outerHTML","labels","createTextNode","clone","cloneNode","setAttribute","appendChild","getAnonymizedEditorDOM","currentNode","hasAttribute","getNodeLength","nodeValue","addFocusToSelection","nodeWasFocus","activeElementName","nodeIsFocus","selectionRangeCount","selectionAnchorNodeName","selectionAnchorOffset","selectionFocusNodeName","selectionFocusOffset","message","getRangeAt","setEnd","addRange","addPointToSelection","createRange","process","nodeStart","nodeEnd","documentObject","tempKey","tempOffset","hasAnchor","removeAllRanges","storedFocusNode","storedFocusOffset","isNode","camelize","hyphenate","asString","computedStyle","cssFloat","styleFloat","_hyphenPattern","_uppercasePattern","elem","docElem","round","clientLeft","clientTop","isWebkit","scrollingElement","compatMode","pageXOffset","pageYOffset","joinClasses","getListItemClasses","shouldResetCount","blocksAsArray","lastWrapperTemplate","componentProps","_className","_ii","newClassName","argLength","nextClass","getTextContentFromFiles","isEventHandled","endDrag","nativeEvent","dropSelection","eventTargetDocument","currentTarget","caretRangeFromPoint","dropRange","rangeParent","rangeOffset","getSelectionForEvent","handleDroppedFiles","fileText","insertTextAtSelection","dragType","_internalDrag","handleDrop","newContentState","mouseUpEvent","MouseEvent","view","bubbles","cancelable","dispatchEvent","mimeString","getParts","isJpeg","hasArrayNature","callee","ret","isChrome","isFirefox","selectionHandler","isSelectionAtLeafStart","setImmediate","_pendingStateFromBeforeInput","handleBeforeInput","timeStamp","mustPreventNative","oldBlockTree","newBlockTree","oldLeafSet","newLeafSet","oldStart","adjustedStart","oldEnd","adjustedEnd","newStart","newEnd","newDecoratorKey","blockTree","isAtStart","leafStart","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","handle","nextTick","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","messagePrefix","onGlobalMessage","attachEvent","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","script","onreadystatechange","removeChild","installReadyStateChangeImplementation","Function","task","clearImmediate","run","Boolean","preserveSelectionOnBlur","_selection","currentSelection","getFragmentFromSelection","setClipboard","removeFragment","keyCommandPlainBackspace","isGecko","domSelection","isNotTextOrElementNode","previousSibling","span","domText","modelText","preserveEntity","charDelta","contentWithAdjustedDOMSelection","inputType","onInputType","SecondaryClipboard","keyCommandBackspaceToStartOfLine","keyCommandBackspaceWord","keyCommandDeleteWord","keyCommandInsertNewline","keyCommandMoveSelectionToEndOfBlock","keyCommandMoveSelectionToStartOfBlock","keyCommandPlainDelete","keyCommandTransposeCharacters","keyCommandUndo","callDeprecatedHandler","handlerName","deprecatedHandler","newState","paste","onKeyCommand","blockEnd","keyAfter","expandRangeToStartOfLine","areRectsOnOneLine","lineHeight","minTop","minBottom","maxTop","maxBottom","DOCUMENT_TYPE_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","collapsed","containingElement","computed","correctDocument","div","documentBody","getLineHeightPx","bestContainer","bestOffset","setStartBefore","currentContainer","maxIndexToConsider","toRemove","moveSelectionForward","charAhead","finalSelection","afterInsert","updateFn","undoneState","DraftPasteProcessor","splitTextIntoTextBlocks","clipboardData","defaultFileText","handlePastedFiles","processText","withInsertedText","textBlocks","formatPastedText","_editor$props$formatP","_html","internalClipboard","getClipboard","areTextBlocksAndClipboardEqual","htmlFragment","processHTML","htmlMap","textFragment","textMap","convertFromHTMLToContentBlocks","textLine","blockNodeConfig","prevSiblingIndex","_uri","adjustment","NEWLINE_REGEX","unstable_flushControlled","encodeEntityRanges","encodeInlineStyleRanges","createRawBlock","entityStorageMap","insertRawBlock","rawBlocks","blockCacheRef","rawBlock","rawDraftContentState","rawState","entityCacheRef","entityStorageKey","stringifiedEntityKey","encodeRawBlocks","rawEntityMap","encodeRawEntityMap","storageMap","encoded","isTruthy","EMPTY_ARRAY","styleList","styleToEncode","filteredInlines","getEncodedInlinesForType","DraftTreeAdapter","createCharacterList","decodeEntityRanges","decodeInlineStyleRanges","decodeBlockNodeConfig","decodeCharacterList","rawEntityRanges","rawInlineStyleRanges","addKeyIfMissing","updateNodeStack","parentRef","nodesWithParentRef","decodeRawBlocks","isTreeRawBlock","fromRawStateToRawTreeState","decodeContentBlocks","fromRawTreeStateToRawState","contentBlockNode","siblings","_index","isValidBlock","_children","_contentBlockNode","decodeContentBlockNodes","rawEntityKey","_rawEntityMap$rawEnti","decodeRawEntityMap","draftTreeState","transformedBlocks","traverseInDepthOrder","addDepthToChildren","draftState","parentStack","treeBlock","lastParent","DraftTreeInvariants","isConnectedTree","eligibleFirstNodes","nodesSeen","currentKey","visitedStack","childKeys","_firstNode","isValidTree","characterArray","getRangeBoundingClientRect","boundingRect","_rects$","_rects$2"],"mappings":"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","file":"static/js/2.6ce7e868.chunk.js","sourcesContent":["export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.Immutable = factory();\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step > 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n findEntry: function(predicate, context) {\n var found;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findLastEntry: function(predicate, context) {\n return this.toSeq().reverse().findEntry(predicate, context);\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n // Temporary warning about using length\n (function () {\n try {\n Object.defineProperty(IterablePrototype, 'length', {\n get: function () {\n if (!Iterable.noLengthWarning) {\n var stack;\n try {\n throw new Error();\n } catch (error) {\n stack = error.stack;\n }\n if (stack.indexOf('_wrapObject') === -1) {\n console && console.warn && console.warn(\n 'iterable.length has been deprecated, '+\n 'use iterable.size or iterable.count(). '+\n 'This warning will become a silent error in a future version. ' +\n stack\n );\n return this.size;\n }\n }\n }\n });\n } catch (e) {}\n })();\n\n\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLastKey: function(predicate, context) {\n return this.toSeq().reverse().findKey(predicate, context);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n lastKeyOf: function(searchValue) {\n return this.findLastKey(function(value ) {return is(value, searchValue)});\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.toKeyedSeq().keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.toKeyedSeq().reverse().keyOf(searchValue);\n return key === undefined ? -1 : key;\n\n // var index =\n // return this.toSeq().reverse().indexOf(searchValue);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var key = this.toKeyedSeq().findLastKey(predicate, context);\n return key === undefined ? -1 : key;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : value;\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {\n if (format === undefined) {\n throw new Error('invariant(...): Second argument must be a string.');\n }\n} : function (format) {};\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return String(args[argIndex++]);\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // Skip invariant's own stack frame.\n\n throw error;\n }\n}\n\nmodule.exports = invariant;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar BlockTree = require(\"./BlockTree\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar EditorBidiService = require(\"./EditorBidiService\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Stack = Immutable.Stack,\n OrderedMap = Immutable.OrderedMap,\n List = Immutable.List; // When configuring an editor, the user can chose to provide or not provide\n// basically all keys. `currentContent` varies, so this type doesn't include it.\n// (See the types defined below.)\n\nvar defaultRecord = {\n allowUndo: true,\n currentContent: null,\n decorator: null,\n directionMap: null,\n forceSelection: false,\n inCompositionMode: false,\n inlineStyleOverride: null,\n lastChangeType: null,\n nativelyRenderedContent: null,\n redoStack: Stack(),\n selection: null,\n treeMap: null,\n undoStack: Stack()\n};\nvar EditorStateRecord = Record(defaultRecord);\n\nvar EditorState = /*#__PURE__*/function () {\n EditorState.createEmpty = function createEmpty(decorator) {\n return this.createWithText('', decorator);\n };\n\n EditorState.createWithText = function createWithText(text, decorator) {\n return EditorState.createWithContent(ContentState.createFromText(text), decorator);\n };\n\n EditorState.createWithContent = function createWithContent(contentState, decorator) {\n if (contentState.getBlockMap().count() === 0) {\n return EditorState.createEmpty(decorator);\n }\n\n var firstKey = contentState.getBlockMap().first().getKey();\n return EditorState.create({\n currentContent: contentState,\n undoStack: Stack(),\n redoStack: Stack(),\n decorator: decorator || null,\n selection: SelectionState.createEmpty(firstKey)\n });\n };\n\n EditorState.create = function create(config) {\n var currentContent = config.currentContent,\n decorator = config.decorator;\n\n var recordConfig = _objectSpread({}, config, {\n treeMap: generateNewTreeMap(currentContent, decorator),\n directionMap: EditorBidiService.getDirectionMap(currentContent)\n });\n\n return new EditorState(new EditorStateRecord(recordConfig));\n };\n\n EditorState.fromJS = function fromJS(config) {\n return new EditorState(new EditorStateRecord(_objectSpread({}, config, {\n directionMap: config.directionMap != null ? OrderedMap(config.directionMap) : config.directionMap,\n inlineStyleOverride: config.inlineStyleOverride != null ? OrderedSet(config.inlineStyleOverride) : config.inlineStyleOverride,\n nativelyRenderedContent: config.nativelyRenderedContent != null ? ContentState.fromJS(config.nativelyRenderedContent) : config.nativelyRenderedContent,\n redoStack: config.redoStack != null ? Stack(config.redoStack.map(function (v) {\n return ContentState.fromJS(v);\n })) : config.redoStack,\n selection: config.selection != null ? new SelectionState(config.selection) : config.selection,\n treeMap: config.treeMap != null ? OrderedMap(config.treeMap).map(function (v) {\n return List(v).map(function (v) {\n return BlockTree.fromJS(v);\n });\n }) : config.treeMap,\n undoStack: config.undoStack != null ? Stack(config.undoStack.map(function (v) {\n return ContentState.fromJS(v);\n })) : config.undoStack,\n currentContent: ContentState.fromJS(config.currentContent)\n })));\n };\n\n EditorState.set = function set(editorState, put) {\n var map = editorState.getImmutable().withMutations(function (state) {\n var existingDecorator = state.get('decorator');\n var decorator = existingDecorator;\n\n if (put.decorator === null) {\n decorator = null;\n } else if (put.decorator) {\n decorator = put.decorator;\n }\n\n var newContent = put.currentContent || editorState.getCurrentContent();\n\n if (decorator !== existingDecorator) {\n var treeMap = state.get('treeMap');\n var newTreeMap;\n\n if (decorator && existingDecorator) {\n newTreeMap = regenerateTreeForNewDecorator(newContent, newContent.getBlockMap(), treeMap, decorator, existingDecorator);\n } else {\n newTreeMap = generateNewTreeMap(newContent, decorator);\n }\n\n state.merge({\n decorator: decorator,\n treeMap: newTreeMap,\n nativelyRenderedContent: null\n });\n return;\n }\n\n var existingContent = editorState.getCurrentContent();\n\n if (newContent !== existingContent) {\n state.set('treeMap', regenerateTreeForNewBlocks(editorState, newContent.getBlockMap(), newContent.getEntityMap(), decorator));\n }\n\n state.merge(put);\n });\n return new EditorState(map);\n };\n\n var _proto = EditorState.prototype;\n\n _proto.toJS = function toJS() {\n return this.getImmutable().toJS();\n };\n\n _proto.getAllowUndo = function getAllowUndo() {\n return this.getImmutable().get('allowUndo');\n };\n\n _proto.getCurrentContent = function getCurrentContent() {\n return this.getImmutable().get('currentContent');\n };\n\n _proto.getUndoStack = function getUndoStack() {\n return this.getImmutable().get('undoStack');\n };\n\n _proto.getRedoStack = function getRedoStack() {\n return this.getImmutable().get('redoStack');\n };\n\n _proto.getSelection = function getSelection() {\n return this.getImmutable().get('selection');\n };\n\n _proto.getDecorator = function getDecorator() {\n return this.getImmutable().get('decorator');\n };\n\n _proto.isInCompositionMode = function isInCompositionMode() {\n return this.getImmutable().get('inCompositionMode');\n };\n\n _proto.mustForceSelection = function mustForceSelection() {\n return this.getImmutable().get('forceSelection');\n };\n\n _proto.getNativelyRenderedContent = function getNativelyRenderedContent() {\n return this.getImmutable().get('nativelyRenderedContent');\n };\n\n _proto.getLastChangeType = function getLastChangeType() {\n return this.getImmutable().get('lastChangeType');\n }\n /**\n * While editing, the user may apply inline style commands with a collapsed\n * cursor, intending to type text that adopts the specified style. In this\n * case, we track the specified style as an \"override\" that takes precedence\n * over the inline style of the text adjacent to the cursor.\n *\n * If null, there is no override in place.\n */\n ;\n\n _proto.getInlineStyleOverride = function getInlineStyleOverride() {\n return this.getImmutable().get('inlineStyleOverride');\n };\n\n EditorState.setInlineStyleOverride = function setInlineStyleOverride(editorState, inlineStyleOverride) {\n return EditorState.set(editorState, {\n inlineStyleOverride: inlineStyleOverride\n });\n }\n /**\n * Get the appropriate inline style for the editor state. If an\n * override is in place, use it. Otherwise, the current style is\n * based on the location of the selection state.\n */\n ;\n\n _proto.getCurrentInlineStyle = function getCurrentInlineStyle() {\n var override = this.getInlineStyleOverride();\n\n if (override != null) {\n return override;\n }\n\n var content = this.getCurrentContent();\n var selection = this.getSelection();\n\n if (selection.isCollapsed()) {\n return getInlineStyleForCollapsedSelection(content, selection);\n }\n\n return getInlineStyleForNonCollapsedSelection(content, selection);\n };\n\n _proto.getBlockTree = function getBlockTree(blockKey) {\n return this.getImmutable().getIn(['treeMap', blockKey]);\n };\n\n _proto.isSelectionAtStartOfContent = function isSelectionAtStartOfContent() {\n var firstKey = this.getCurrentContent().getBlockMap().first().getKey();\n return this.getSelection().hasEdgeWithin(firstKey, 0, 0);\n };\n\n _proto.isSelectionAtEndOfContent = function isSelectionAtEndOfContent() {\n var content = this.getCurrentContent();\n var blockMap = content.getBlockMap();\n var last = blockMap.last();\n var end = last.getLength();\n return this.getSelection().hasEdgeWithin(last.getKey(), end, end);\n };\n\n _proto.getDirectionMap = function getDirectionMap() {\n return this.getImmutable().get('directionMap');\n }\n /**\n * Incorporate native DOM selection changes into the EditorState. This\n * method can be used when we simply want to accept whatever the DOM\n * has given us to represent selection, and we do not need to re-render\n * the editor.\n *\n * To forcibly move the DOM selection, see `EditorState.forceSelection`.\n */\n ;\n\n EditorState.acceptSelection = function acceptSelection(editorState, selection) {\n return updateSelection(editorState, selection, false);\n }\n /**\n * At times, we need to force the DOM selection to be where we\n * need it to be. This can occur when the anchor or focus nodes\n * are non-text nodes, for instance. In this case, we want to trigger\n * a re-render of the editor, which in turn forces selection into\n * the correct place in the DOM. The `forceSelection` method\n * accomplishes this.\n *\n * This method should be used in cases where you need to explicitly\n * move the DOM selection from one place to another without a change\n * in ContentState.\n */\n ;\n\n EditorState.forceSelection = function forceSelection(editorState, selection) {\n if (!selection.getHasFocus()) {\n selection = selection.set('hasFocus', true);\n }\n\n return updateSelection(editorState, selection, true);\n }\n /**\n * Move selection to the end of the editor without forcing focus.\n */\n ;\n\n EditorState.moveSelectionToEnd = function moveSelectionToEnd(editorState) {\n var content = editorState.getCurrentContent();\n var lastBlock = content.getLastBlock();\n var lastKey = lastBlock.getKey();\n var length = lastBlock.getLength();\n return EditorState.acceptSelection(editorState, new SelectionState({\n anchorKey: lastKey,\n anchorOffset: length,\n focusKey: lastKey,\n focusOffset: length,\n isBackward: false\n }));\n }\n /**\n * Force focus to the end of the editor. This is useful in scenarios\n * where we want to programmatically focus the input and it makes sense\n * to allow the user to continue working seamlessly.\n */\n ;\n\n EditorState.moveFocusToEnd = function moveFocusToEnd(editorState) {\n var afterSelectionMove = EditorState.moveSelectionToEnd(editorState);\n return EditorState.forceSelection(afterSelectionMove, afterSelectionMove.getSelection());\n }\n /**\n * Push the current ContentState onto the undo stack if it should be\n * considered a boundary state, and set the provided ContentState as the\n * new current content.\n */\n ;\n\n EditorState.push = function push(editorState, contentState, changeType) {\n var forceSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (editorState.getCurrentContent() === contentState) {\n return editorState;\n }\n\n var directionMap = EditorBidiService.getDirectionMap(contentState, editorState.getDirectionMap());\n\n if (!editorState.getAllowUndo()) {\n return EditorState.set(editorState, {\n currentContent: contentState,\n directionMap: directionMap,\n lastChangeType: changeType,\n selection: contentState.getSelectionAfter(),\n forceSelection: forceSelection,\n inlineStyleOverride: null\n });\n }\n\n var selection = editorState.getSelection();\n var currentContent = editorState.getCurrentContent();\n var undoStack = editorState.getUndoStack();\n var newContent = contentState;\n\n if (selection !== currentContent.getSelectionAfter() || mustBecomeBoundary(editorState, changeType)) {\n undoStack = undoStack.push(currentContent);\n newContent = newContent.set('selectionBefore', selection);\n } else if (changeType === 'insert-characters' || changeType === 'backspace-character' || changeType === 'delete-character') {\n // Preserve the previous selection.\n newContent = newContent.set('selectionBefore', currentContent.getSelectionBefore());\n }\n\n var inlineStyleOverride = editorState.getInlineStyleOverride(); // Don't discard inline style overrides for the following change types:\n\n var overrideChangeTypes = ['adjust-depth', 'change-block-type', 'split-block'];\n\n if (overrideChangeTypes.indexOf(changeType) === -1) {\n inlineStyleOverride = null;\n }\n\n var editorStateChanges = {\n currentContent: newContent,\n directionMap: directionMap,\n undoStack: undoStack,\n redoStack: Stack(),\n lastChangeType: changeType,\n selection: contentState.getSelectionAfter(),\n forceSelection: forceSelection,\n inlineStyleOverride: inlineStyleOverride\n };\n return EditorState.set(editorState, editorStateChanges);\n }\n /**\n * Make the top ContentState in the undo stack the new current content and\n * push the current content onto the redo stack.\n */\n ;\n\n EditorState.undo = function undo(editorState) {\n if (!editorState.getAllowUndo()) {\n return editorState;\n }\n\n var undoStack = editorState.getUndoStack();\n var newCurrentContent = undoStack.peek();\n\n if (!newCurrentContent) {\n return editorState;\n }\n\n var currentContent = editorState.getCurrentContent();\n var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n return EditorState.set(editorState, {\n currentContent: newCurrentContent,\n directionMap: directionMap,\n undoStack: undoStack.shift(),\n redoStack: editorState.getRedoStack().push(currentContent),\n forceSelection: true,\n inlineStyleOverride: null,\n lastChangeType: 'undo',\n nativelyRenderedContent: null,\n selection: currentContent.getSelectionBefore()\n });\n }\n /**\n * Make the top ContentState in the redo stack the new current content and\n * push the current content onto the undo stack.\n */\n ;\n\n EditorState.redo = function redo(editorState) {\n if (!editorState.getAllowUndo()) {\n return editorState;\n }\n\n var redoStack = editorState.getRedoStack();\n var newCurrentContent = redoStack.peek();\n\n if (!newCurrentContent) {\n return editorState;\n }\n\n var currentContent = editorState.getCurrentContent();\n var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n return EditorState.set(editorState, {\n currentContent: newCurrentContent,\n directionMap: directionMap,\n undoStack: editorState.getUndoStack().push(currentContent),\n redoStack: redoStack.shift(),\n forceSelection: true,\n inlineStyleOverride: null,\n lastChangeType: 'redo',\n nativelyRenderedContent: null,\n selection: newCurrentContent.getSelectionAfter()\n });\n }\n /**\n * Not for public consumption.\n */\n ;\n\n function EditorState(immutable) {\n _defineProperty(this, \"_immutable\", void 0);\n\n this._immutable = immutable;\n }\n /**\n * Not for public consumption.\n */\n\n\n _proto.getImmutable = function getImmutable() {\n return this._immutable;\n };\n\n return EditorState;\n}();\n/**\n * Set the supplied SelectionState as the new current selection, and set\n * the `force` flag to trigger manual selection placement by the view.\n */\n\n\nfunction updateSelection(editorState, selection, forceSelection) {\n return EditorState.set(editorState, {\n selection: selection,\n forceSelection: forceSelection,\n nativelyRenderedContent: null,\n inlineStyleOverride: null\n });\n}\n/**\n * Regenerate the entire tree map for a given ContentState and decorator.\n * Returns an OrderedMap that maps all available ContentBlock objects.\n */\n\n\nfunction generateNewTreeMap(contentState, decorator) {\n return contentState.getBlockMap().map(function (block) {\n return BlockTree.generate(contentState, block, decorator);\n }).toOrderedMap();\n}\n/**\n * Regenerate tree map objects for all ContentBlocks that have changed\n * between the current editorState and newContent. Returns an OrderedMap\n * with only changed regenerated tree map objects.\n */\n\n\nfunction regenerateTreeForNewBlocks(editorState, newBlockMap, newEntityMap, decorator) {\n var contentState = editorState.getCurrentContent().set('entityMap', newEntityMap);\n var prevBlockMap = contentState.getBlockMap();\n var prevTreeMap = editorState.getImmutable().get('treeMap');\n return prevTreeMap.merge(newBlockMap.toSeq().filter(function (block, key) {\n return block !== prevBlockMap.get(key);\n }).map(function (block) {\n return BlockTree.generate(contentState, block, decorator);\n }));\n}\n/**\n * Generate tree map objects for a new decorator object, preserving any\n * decorations that are unchanged from the previous decorator.\n *\n * Note that in order for this to perform optimally, decoration Lists for\n * decorators should be preserved when possible to allow for direct immutable\n * List comparison.\n */\n\n\nfunction regenerateTreeForNewDecorator(content, blockMap, previousTreeMap, decorator, existingDecorator) {\n return previousTreeMap.merge(blockMap.toSeq().filter(function (block) {\n return decorator.getDecorations(block, content) !== existingDecorator.getDecorations(block, content);\n }).map(function (block) {\n return BlockTree.generate(content, block, decorator);\n }));\n}\n/**\n * Return whether a change should be considered a boundary state, given\n * the previous change type. Allows us to discard potential boundary states\n * during standard typing or deletion behavior.\n */\n\n\nfunction mustBecomeBoundary(editorState, changeType) {\n var lastChangeType = editorState.getLastChangeType();\n return changeType !== lastChangeType || changeType !== 'insert-characters' && changeType !== 'backspace-character' && changeType !== 'delete-character';\n}\n\nfunction getInlineStyleForCollapsedSelection(content, selection) {\n var startKey = selection.getStartKey();\n var startOffset = selection.getStartOffset();\n var startBlock = content.getBlockForKey(startKey); // If the cursor is not at the start of the block, look backward to\n // preserve the style of the preceding character.\n\n if (startOffset > 0) {\n return startBlock.getInlineStyleAt(startOffset - 1);\n } // The caret is at position zero in this block. If the block has any\n // text at all, use the style of the first character.\n\n\n if (startBlock.getLength()) {\n return startBlock.getInlineStyleAt(0);\n } // Otherwise, look upward in the document to find the closest character.\n\n\n return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction getInlineStyleForNonCollapsedSelection(content, selection) {\n var startKey = selection.getStartKey();\n var startOffset = selection.getStartOffset();\n var startBlock = content.getBlockForKey(startKey); // If there is a character just inside the selection, use its style.\n\n if (startOffset < startBlock.getLength()) {\n return startBlock.getInlineStyleAt(startOffset);\n } // Check if the selection at the end of a non-empty block. Use the last\n // style in the block.\n\n\n if (startOffset > 0) {\n return startBlock.getInlineStyleAt(startOffset - 1);\n } // Otherwise, look upward in the document to find the closest character.\n\n\n return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction lookUpwardForInlineStyle(content, fromKey) {\n var lastNonEmpty = content.getBlockMap().reverse().skipUntil(function (_, k) {\n return k === fromKey;\n }).skip(1).skipUntil(function (block, _) {\n return block.getLength();\n }).first();\n\n if (lastNonEmpty) {\n return lastNonEmpty.getInlineStyleAt(lastNonEmpty.getLength() - 1);\n }\n\n return OrderedSet();\n}\n\nmodule.exports = EditorState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentStateInlineStyle = require(\"./ContentStateInlineStyle\");\n\nvar applyEntityToContentState = require(\"./applyEntityToContentState\");\n\nvar getCharacterRemovalRange = require(\"./getCharacterRemovalRange\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nvar Immutable = require(\"immutable\");\n\nvar insertFragmentIntoContentState = require(\"./insertFragmentIntoContentState\");\n\nvar insertTextIntoContentState = require(\"./insertTextIntoContentState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar modifyBlockForContentState = require(\"./modifyBlockForContentState\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar removeRangeFromContentState = require(\"./removeRangeFromContentState\");\n\nvar splitBlockInContentState = require(\"./splitBlockInContentState\");\n\nvar OrderedSet = Immutable.OrderedSet;\n/**\n * `DraftModifier` provides a set of convenience methods that apply\n * modifications to a `ContentState` object based on a target `SelectionState`.\n *\n * Any change to a `ContentState` should be decomposable into a series of\n * transaction functions that apply the required changes and return output\n * `ContentState` objects.\n *\n * These functions encapsulate some of the most common transaction sequences.\n */\n\nvar DraftModifier = {\n replaceText: function replaceText(contentState, rangeToReplace, text, inlineStyle, entityKey) {\n var withoutEntities = removeEntitiesAtEdges(contentState, rangeToReplace);\n var withoutText = removeRangeFromContentState(withoutEntities, rangeToReplace);\n var character = CharacterMetadata.create({\n style: inlineStyle || OrderedSet(),\n entity: entityKey || null\n });\n return insertTextIntoContentState(withoutText, withoutText.getSelectionAfter(), text, character);\n },\n insertText: function insertText(contentState, targetRange, text, inlineStyle, entityKey) {\n !targetRange.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Target range must be collapsed for `insertText`.') : invariant(false) : void 0;\n return DraftModifier.replaceText(contentState, targetRange, text, inlineStyle, entityKey);\n },\n moveText: function moveText(contentState, removalRange, targetRange) {\n var movedFragment = getContentStateFragment(contentState, removalRange);\n var afterRemoval = DraftModifier.removeRange(contentState, removalRange, 'backward');\n return DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n },\n replaceWithFragment: function replaceWithFragment(contentState, targetRange, fragment) {\n var mergeBlockData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'REPLACE_WITH_NEW_DATA';\n var withoutEntities = removeEntitiesAtEdges(contentState, targetRange);\n var withoutText = removeRangeFromContentState(withoutEntities, targetRange);\n return insertFragmentIntoContentState(withoutText, withoutText.getSelectionAfter(), fragment, mergeBlockData);\n },\n removeRange: function removeRange(contentState, rangeToRemove, removalDirection) {\n var startKey, endKey, startBlock, endBlock;\n\n if (rangeToRemove.getIsBackward()) {\n rangeToRemove = rangeToRemove.merge({\n anchorKey: rangeToRemove.getFocusKey(),\n anchorOffset: rangeToRemove.getFocusOffset(),\n focusKey: rangeToRemove.getAnchorKey(),\n focusOffset: rangeToRemove.getAnchorOffset(),\n isBackward: false\n });\n }\n\n startKey = rangeToRemove.getAnchorKey();\n endKey = rangeToRemove.getFocusKey();\n startBlock = contentState.getBlockForKey(startKey);\n endBlock = contentState.getBlockForKey(endKey);\n var startOffset = rangeToRemove.getStartOffset();\n var endOffset = rangeToRemove.getEndOffset();\n var startEntityKey = startBlock.getEntityAt(startOffset);\n var endEntityKey = endBlock.getEntityAt(endOffset - 1); // Check whether the selection state overlaps with a single entity.\n // If so, try to remove the appropriate substring of the entity text.\n\n if (startKey === endKey) {\n if (startEntityKey && startEntityKey === endEntityKey) {\n var adjustedRemovalRange = getCharacterRemovalRange(contentState.getEntityMap(), startBlock, endBlock, rangeToRemove, removalDirection);\n return removeRangeFromContentState(contentState, adjustedRemovalRange);\n }\n }\n\n var withoutEntities = removeEntitiesAtEdges(contentState, rangeToRemove);\n return removeRangeFromContentState(withoutEntities, rangeToRemove);\n },\n splitBlock: function splitBlock(contentState, selectionState) {\n var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n var withoutText = removeRangeFromContentState(withoutEntities, selectionState);\n return splitBlockInContentState(withoutText, withoutText.getSelectionAfter());\n },\n applyInlineStyle: function applyInlineStyle(contentState, selectionState, inlineStyle) {\n return ContentStateInlineStyle.add(contentState, selectionState, inlineStyle);\n },\n removeInlineStyle: function removeInlineStyle(contentState, selectionState, inlineStyle) {\n return ContentStateInlineStyle.remove(contentState, selectionState, inlineStyle);\n },\n setBlockType: function setBlockType(contentState, selectionState, blockType) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n type: blockType,\n depth: 0\n });\n });\n },\n setBlockData: function setBlockData(contentState, selectionState, blockData) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n data: blockData\n });\n });\n },\n mergeBlockData: function mergeBlockData(contentState, selectionState, blockData) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n data: block.getData().merge(blockData)\n });\n });\n },\n applyEntity: function applyEntity(contentState, selectionState, entityKey) {\n var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n return applyEntityToContentState(withoutEntities, selectionState, entityKey);\n }\n};\nmodule.exports = DraftModifier;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar nullthrows = function nullthrows(x) {\n if (x != null) {\n return x;\n }\n\n throw new Error(\"Got unexpected null or undefined\");\n};\n\nmodule.exports = nullthrows;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar UserAgentData = require(\"./UserAgentData\");\n\nvar VersionRange = require(\"./VersionRange\");\n\nvar mapObject = require(\"./mapObject\");\n\nvar memoizeStringOnly = require(\"./memoizeStringOnly\");\n/**\n * Checks to see whether `name` and `version` satisfy `query`.\n *\n * @param {string} name Name of the browser, device, engine or platform\n * @param {?string} version Version of the browser, engine or platform\n * @param {string} query Query of form \"Name [range expression]\"\n * @param {?function} normalizer Optional pre-processor for range expression\n * @return {boolean}\n */\n\n\nfunction compare(name, version, query, normalizer) {\n // check for exact match with no version\n if (name === query) {\n return true;\n } // check for non-matching names\n\n\n if (!query.startsWith(name)) {\n return false;\n } // full comparison with version\n\n\n var range = query.slice(name.length);\n\n if (version) {\n range = normalizer ? normalizer(range) : range;\n return VersionRange.contains(range, version);\n }\n\n return false;\n}\n/**\n * Normalizes `version` by stripping any \"NT\" prefix, but only on the Windows\n * platform.\n *\n * Mimics the stripping performed by the `UserAgentWindowsPlatform` PHP class.\n *\n * @param {string} version\n * @return {string}\n */\n\n\nfunction normalizePlatformVersion(version) {\n if (UserAgentData.platformName === 'Windows') {\n return version.replace(/^\\s*NT/, '');\n }\n\n return version;\n}\n/**\n * Provides client-side access to the authoritative PHP-generated User Agent\n * information supplied by the server.\n */\n\n\nvar UserAgent = {\n /**\n * Check if the User Agent browser matches `query`.\n *\n * `query` should be a string like \"Chrome\" or \"Chrome > 33\".\n *\n * Valid browser names include:\n *\n * - ACCESS NetFront\n * - AOL\n * - Amazon Silk\n * - Android\n * - BlackBerry\n * - BlackBerry PlayBook\n * - Chrome\n * - Chrome for iOS\n * - Chrome frame\n * - Facebook PHP SDK\n * - Facebook for iOS\n * - Firefox\n * - IE\n * - IE Mobile\n * - Mobile Safari\n * - Motorola Internet Browser\n * - Nokia\n * - Openwave Mobile Browser\n * - Opera\n * - Opera Mini\n * - Opera Mobile\n * - Safari\n * - UIWebView\n * - Unknown\n * - webOS\n * - etc...\n *\n * An authoritative list can be found in the PHP `BrowserDetector` class and\n * related classes in the same file (see calls to `new UserAgentBrowser` here:\n * https://fburl.com/50728104).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isBrowser: function isBrowser(query) {\n return compare(UserAgentData.browserName, UserAgentData.browserFullVersion, query);\n },\n\n /**\n * Check if the User Agent browser uses a 32 or 64 bit architecture.\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"32\" or \"64\".\n * @return {boolean}\n */\n isBrowserArchitecture: function isBrowserArchitecture(query) {\n return compare(UserAgentData.browserArchitecture, null, query);\n },\n\n /**\n * Check if the User Agent device matches `query`.\n *\n * `query` should be a string like \"iPhone\" or \"iPad\".\n *\n * Valid device names include:\n *\n * - Kindle\n * - Kindle Fire\n * - Unknown\n * - iPad\n * - iPhone\n * - iPod\n * - etc...\n *\n * An authoritative list can be found in the PHP `DeviceDetector` class and\n * related classes in the same file (see calls to `new UserAgentDevice` here:\n * https://fburl.com/50728332).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name\"\n * @return {boolean}\n */\n isDevice: function isDevice(query) {\n return compare(UserAgentData.deviceName, null, query);\n },\n\n /**\n * Check if the User Agent rendering engine matches `query`.\n *\n * `query` should be a string like \"WebKit\" or \"WebKit >= 537\".\n *\n * Valid engine names include:\n *\n * - Gecko\n * - Presto\n * - Trident\n * - WebKit\n * - etc...\n *\n * An authoritative list can be found in the PHP `RenderingEngineDetector`\n * class related classes in the same file (see calls to `new\n * UserAgentRenderingEngine` here: https://fburl.com/50728617).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isEngine: function isEngine(query) {\n return compare(UserAgentData.engineName, UserAgentData.engineVersion, query);\n },\n\n /**\n * Check if the User Agent platform matches `query`.\n *\n * `query` should be a string like \"Windows\" or \"iOS 5 - 6\".\n *\n * Valid platform names include:\n *\n * - Android\n * - BlackBerry OS\n * - Java ME\n * - Linux\n * - Mac OS X\n * - Mac OS X Calendar\n * - Mac OS X Internet Account\n * - Symbian\n * - SymbianOS\n * - Windows\n * - Windows Mobile\n * - Windows Phone\n * - iOS\n * - iOS Facebook Integration Account\n * - iOS Facebook Social Sharing UI\n * - webOS\n * - Chrome OS\n * - etc...\n *\n * An authoritative list can be found in the PHP `PlatformDetector` class and\n * related classes in the same file (see calls to `new UserAgentPlatform`\n * here: https://fburl.com/50729226).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isPlatform: function isPlatform(query) {\n return compare(UserAgentData.platformName, UserAgentData.platformFullVersion, query, normalizePlatformVersion);\n },\n\n /**\n * Check if the User Agent platform is a 32 or 64 bit architecture.\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"32\" or \"64\".\n * @return {boolean}\n */\n isPlatformArchitecture: function isPlatformArchitecture(query) {\n return compare(UserAgentData.platformArchitecture, null, query);\n }\n};\nmodule.exports = mapObject(UserAgent, memoizeStringOnly);","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nvar AtomicBlockUtils = require(\"./AtomicBlockUtils\");\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar CompositeDraftDecorator = require(\"./CompositeDraftDecorator\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DefaultDraftInlineStyle = require(\"./DefaultDraftInlineStyle\");\n\nvar DraftEditor = require(\"./DraftEditor.react\");\n\nvar DraftEditorBlock = require(\"./DraftEditorBlock.react\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar RawDraftContentState = require(\"./RawDraftContentState\");\n\nvar RichTextEditorUtil = require(\"./RichTextEditorUtil\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar convertFromDraftStateToRaw = require(\"./convertFromDraftStateToRaw\");\n\nvar convertFromRawToDraftState = require(\"./convertFromRawToDraftState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getDefaultKeyBinding = require(\"./getDefaultKeyBinding\");\n\nvar getVisibleSelectionRect = require(\"./getVisibleSelectionRect\");\n\nvar convertFromHTML = require(\"./convertFromHTMLToContentBlocks\");\n\nvar DraftPublic = {\n Editor: DraftEditor,\n EditorBlock: DraftEditorBlock,\n EditorState: EditorState,\n CompositeDecorator: CompositeDraftDecorator,\n Entity: DraftEntity,\n EntityInstance: DraftEntityInstance,\n BlockMapBuilder: BlockMapBuilder,\n CharacterMetadata: CharacterMetadata,\n ContentBlock: ContentBlock,\n ContentState: ContentState,\n RawDraftContentState: RawDraftContentState,\n SelectionState: SelectionState,\n AtomicBlockUtils: AtomicBlockUtils,\n KeyBindingUtil: KeyBindingUtil,\n Modifier: DraftModifier,\n RichUtils: RichTextEditorUtil,\n DefaultDraftBlockRenderMap: DefaultDraftBlockRenderMap,\n DefaultDraftInlineStyle: DefaultDraftInlineStyle,\n convertFromHTML: convertFromHTML,\n convertFromRaw: convertFromRawToDraftState,\n convertToRaw: convertFromDraftStateToRaw,\n genKey: generateRandomKey,\n getDefaultKeyBinding: getDefaultKeyBinding,\n getVisibleSelectionRect: getVisibleSelectionRect\n};\nmodule.exports = DraftPublic;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar _require = require(\"immutable\"),\n Map = _require.Map,\n OrderedSet = _require.OrderedSet,\n Record = _require.Record; // Immutable.map is typed such that the value for every key in the map\n// must be the same type\n\n\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n style: EMPTY_SET,\n entity: null\n};\nvar CharacterMetadataRecord = Record(defaultRecord);\n\nvar CharacterMetadata = /*#__PURE__*/function (_CharacterMetadataRec) {\n _inheritsLoose(CharacterMetadata, _CharacterMetadataRec);\n\n function CharacterMetadata() {\n return _CharacterMetadataRec.apply(this, arguments) || this;\n }\n\n var _proto = CharacterMetadata.prototype;\n\n _proto.getStyle = function getStyle() {\n return this.get('style');\n };\n\n _proto.getEntity = function getEntity() {\n return this.get('entity');\n };\n\n _proto.hasStyle = function hasStyle(style) {\n return this.getStyle().includes(style);\n };\n\n CharacterMetadata.applyStyle = function applyStyle(record, style) {\n var withStyle = record.set('style', record.getStyle().add(style));\n return CharacterMetadata.create(withStyle);\n };\n\n CharacterMetadata.removeStyle = function removeStyle(record, style) {\n var withoutStyle = record.set('style', record.getStyle().remove(style));\n return CharacterMetadata.create(withoutStyle);\n };\n\n CharacterMetadata.applyEntity = function applyEntity(record, entityKey) {\n var withEntity = record.getEntity() === entityKey ? record : record.set('entity', entityKey);\n return CharacterMetadata.create(withEntity);\n }\n /**\n * Use this function instead of the `CharacterMetadata` constructor.\n * Since most content generally uses only a very small number of\n * style/entity permutations, we can reuse these objects as often as\n * possible.\n */\n ;\n\n CharacterMetadata.create = function create(config) {\n if (!config) {\n return EMPTY;\n }\n\n var defaultConfig = {\n style: EMPTY_SET,\n entity: null\n }; // Fill in unspecified properties, if necessary.\n\n var configMap = Map(defaultConfig).merge(config);\n var existing = pool.get(configMap);\n\n if (existing) {\n return existing;\n }\n\n var newCharacter = new CharacterMetadata(configMap);\n pool = pool.set(configMap, newCharacter);\n return newCharacter;\n };\n\n CharacterMetadata.fromJS = function fromJS(_ref) {\n var style = _ref.style,\n entity = _ref.entity;\n return new CharacterMetadata({\n style: Array.isArray(style) ? OrderedSet(style) : style,\n entity: Array.isArray(entity) ? OrderedSet(entity) : entity\n });\n };\n\n return CharacterMetadata;\n}(CharacterMetadataRecord);\n\nvar EMPTY = new CharacterMetadata();\nvar pool = Map([[Map(defaultRecord), EMPTY]]);\nCharacterMetadata.EMPTY = EMPTY;\nmodule.exports = CharacterMetadata;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of ContentBlock adding support for nesting references by\n * providing links to children, parent, prevSibling, and nextSibling.\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n parent: null,\n characterList: List(),\n data: Map(),\n depth: 0,\n key: '',\n text: '',\n type: 'unstyled',\n children: List(),\n prevSibling: null,\n nextSibling: null\n};\n\nvar haveEqualStyle = function haveEqualStyle(charA, charB) {\n return charA.getStyle() === charB.getStyle();\n};\n\nvar haveEqualEntity = function haveEqualEntity(charA, charB) {\n return charA.getEntity() === charB.getEntity();\n};\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n if (!config) {\n return config;\n }\n\n var characterList = config.characterList,\n text = config.text;\n\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlockNode = /*#__PURE__*/function (_ref) {\n _inheritsLoose(ContentBlockNode, _ref);\n\n function ContentBlockNode() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultRecord;\n\n /* eslint-disable-next-line constructor-super */\n return _ref.call(this, decorateCharacterList(props)) || this;\n }\n\n var _proto = ContentBlockNode.prototype;\n\n _proto.getKey = function getKey() {\n return this.get('key');\n };\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getText = function getText() {\n return this.get('text');\n };\n\n _proto.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n _proto.getLength = function getLength() {\n return this.getText().length;\n };\n\n _proto.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n _proto.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n };\n\n _proto.getChildKeys = function getChildKeys() {\n return this.get('children');\n };\n\n _proto.getParentKey = function getParentKey() {\n return this.get('parent');\n };\n\n _proto.getPrevSiblingKey = function getPrevSiblingKey() {\n return this.get('prevSibling');\n };\n\n _proto.getNextSiblingKey = function getNextSiblingKey() {\n return this.get('nextSibling');\n };\n\n _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n };\n\n _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n };\n\n return ContentBlockNode;\n}(Record(defaultRecord));\n\nmodule.exports = ContentBlockNode;","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\"),require(\"draft-js\"),require(\"immutable\")):\"function\"==typeof define&&define.amd?define([\"react\",\"draft-js\",\"immutable\"],t):\"object\"==typeof exports?exports.reactDraftWysiwyg=t(require(\"react\"),require(\"draft-js\"),require(\"immutable\")):e.reactDraftWysiwyg=t(e.react,e[\"draft-js\"],e.immutable)}(window,function(n,o,r){return c={},i.m=a=[function(e,t,n){e.exports=n(9)()},function(e,t){e.exports=n},function(e,t,n){var o;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n!function(){\"use strict\";var a={}.hasOwnProperty;function c(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if(\"string\"==o||\"number\"==o)e.push(n);else if(Array.isArray(n)&&n.length){var r=c.apply(null,n);r&&e.push(r)}else if(\"object\"==o)for(var i in n)a.call(n,i)&&n[i]&&e.push(i)}}return e.join(\" \")}e.exports?(c.default=c,e.exports=c):void 0===(o=function(){return c}.apply(t,[]))||(e.exports=o)}()},function(e,t){e.exports=o},function(e,t,n){function r(e){if(c[e])return c[e].exports;var t=c[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}var o,i,a,c;window,e.exports=(o=n(3),i=n(5),c={},r.m=a=[function(e,t){e.exports=o},function(e,t){e.exports=i},function(e,t,n){e.exports=n(3)},function(e,t,n){\"use strict\";n.r(t);var b=n(0),i=n(1);function j(e){var t=e.getSelection(),n=e.getCurrentContent(),o=t.getStartKey(),r=t.getEndKey(),i=n.getBlockMap();return i.toSeq().skipUntil(function(e,t){return t===o}).takeUntil(function(e,t){return t===r}).concat([[r,i.get(r)]])}function u(e){return j(e).toList()}function l(e){if(e)return u(e).get(0)}function o(e){if(e){var n=l(e),t=e.getCurrentContent().getBlockMap().toSeq().toList(),o=0;if(t.forEach(function(e,t){e.get(\"key\")===n.get(\"key\")&&(o=t-1)}),-1<o)return t.get(o)}}function r(e){return e?e.getCurrentContent().getBlockMap().toList():new i.List}function a(e){var t=u(e);if(!t.some(function(e){return e.type!==t.get(0).type}))return t.get(0).type}function c(e){var t=b.RichUtils.tryToRemoveBlockStyle(e);return t?b.EditorState.push(e,t,\"change-block-type\"):e}function s(e){var t=\"\",n=e.getSelection(),o=n.getAnchorOffset(),r=n.getFocusOffset(),i=u(e);if(0<i.size){if(n.getIsBackward()){var a=o;o=r,r=a}for(var c=0;c<i.size;c+=1){var l=0===c?o:0,s=c===i.size-1?r:i.get(c).getText().length;t+=i.get(c).getText().slice(l,s)}}return t}function p(e){var t=e.getCurrentContent(),n=e.getSelection(),o=b.Modifier.removeRange(t,n,\"forward\"),r=o.getSelectionAfter(),i=o.getBlockForKey(r.getStartKey());return o=b.Modifier.insertText(o,r,\"\\n\",i.getInlineStyleAt(r.getStartOffset()),null),b.EditorState.push(e,o,\"insert-fragment\")}function d(e){var t=b.Modifier.splitBlock(e.getCurrentContent(),e.getSelection());return c(b.EditorState.push(e,t,\"split-block\"))}function m(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()}),o=b.Modifier.removeRange(e.getCurrentContent(),n,\"forward\");return b.EditorState.push(e,o,\"remove-range\")}function f(e,t){var n=b.Modifier.setBlockData(e.getCurrentContent(),e.getSelection(),t);return b.EditorState.push(e,n,\"change-block-data\")}function g(e){var o=new i.Map({}),t=u(e);if(t&&0<t.size)for(var n=function(e){var n=t.get(e).getData();if(!n||0===n.size)return o=o.clear(),\"break\";if(0===e)o=n;else if(o.forEach(function(e,t){n.get(t)&&n.get(t)===e||(o=o.delete(t))}),0===o.size)return o=o.clear(),\"break\"},r=0;r<t.size&&\"break\"!==n(r);r+=1);return o}var y=Object(i.Map)({code:{element:\"pre\"}}),h=b.DefaultDraftBlockRenderMap.merge(y);function M(e){if(e){var t=e.getType();return\"unordered-list-item\"===t||\"ordered-list-item\"===t}return!1}function N(e,t,n){var o,r=e.getSelection();o=r.getIsBackward()?r.getFocusKey():r.getAnchorKey();var i=e.getCurrentContent(),a=i.getBlockForKey(o),c=a.getType();if(\"unordered-list-item\"!==c&&\"ordered-list-item\"!==c)return e;var l=i.getBlockBefore(o);if(!l)return e;if(l.getType()!==c)return e;var s=a.getDepth();if(1===t&&s===n)return e;var u,p,d,m,f,g,y,h=Math.min(l.getDepth()+1,n),M=(p=t,d=h,m=(u=e).getSelection(),f=u.getCurrentContent(),g=f.getBlockMap(),y=j(u).map(function(e){var t=e.getDepth()+p;return t=Math.max(0,Math.min(t,d)),e.set(\"depth\",t)}),g=g.merge(y),f.merge({blockMap:g,selectionBefore:m,selectionAfter:m}));return b.EditorState.push(e,M,\"adjust-depth\")}function S(e,t){var n;return 13===(n=t).which&&(n.getModifierState(\"Shift\")||n.getModifierState(\"Alt\")||n.getModifierState(\"Control\"))?e.getSelection().isCollapsed()?b.RichUtils.insertSoftNewline(e):p(e):function(e){var t=e.getSelection();if(t.isCollapsed()){var n=e.getCurrentContent(),o=t.getStartKey(),r=n.getBlockForKey(o);if(!M(r)&&\"unstyled\"!==r.getType()&&r.getLength()===t.getStartOffset())return d(e);if(M(r)&&0===r.getLength()){var i=r.getDepth();if(0===i)return c(e);if(0<i)return N(e,-1,i)}}}(e)}function E(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function C(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function L(e){return(L=\"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})(e)}function k(e){var t=e.getSelection();if(t.isCollapsed()){var n={},o=e.getCurrentInlineStyle().toList().toJS();if(o)return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(e){n[e]=0<=o.indexOf(e)}),n}var a=t.getStartOffset(),c=t.getEndOffset(),l=u(e);if(0<l.size){var r=function(){for(var n={BOLD:!0,ITALIC:!0,UNDERLINE:!0,STRIKETHROUGH:!0,CODE:!0,SUPERSCRIPT:!0,SUBSCRIPT:!0},o=0;o<l.size;o+=1){var e=0===o?a:0,t=o===l.size-1?c:l.get(o).getText().length;e===t&&0===e?(e=1,t=2):e===t&&--e;for(var r=function(e){var t=l.get(o).getInlineStyleAt(e);[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(e){n[e]=n[e]&&t.get(e)===e})},i=e;i<t;i+=1)r(i)}return{v:n}}();if(\"object\"===L(r))return r.v}return{}}function D(e){var t,n=e.getSelection(),o=n.getStartOffset(),r=n.getEndOffset();o===r&&0===o?r=1:o===r&&--o;for(var i=l(e),a=o;a<r;a+=1){var c=i.getEntityAt(a);if(!c){t=void 0;break}if(a===o)t=c;else if(t!==c){t=void 0;break}}return t}function v(e,t){var n,o=l(e);return o.findEntityRanges(function(e){return e.get(\"entity\")===t},function(e,t){n={start:e,end:t,text:o.get(\"text\").slice(e,t)}}),n}function w(e,t,n){I[e][\"\".concat(e.toLowerCase(),\"-\").concat(n)]=C({},\"\".concat(t),n)}function x(){return function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?E(Object(n),!0).forEach(function(e){C(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):E(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},I.color,{},I.bgcolor,{},I.fontSize,{},I.fontFamily,{CODE:I.CODE,SUPERSCRIPT:I.SUPERSCRIPT,SUBSCRIPT:I.SUBSCRIPT})}var I={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 O(e,t,n){var o=e.getSelection(),r=Object.keys(I[t]).reduce(function(e,t){return b.Modifier.removeInlineStyle(e,o,t)},e.getCurrentContent()),i=b.EditorState.push(e,r,\"changeinline-style\"),a=e.getCurrentInlineStyle();if(o.isCollapsed()&&(i=a.reduce(function(e,t){return b.RichUtils.toggleInlineStyle(e,t)},i)),\"SUPERSCRIPT\"===t||\"SUBSCRIPT\"==t)a.has(n)||(i=b.RichUtils.toggleInlineStyle(i,n));else{var c=\"bgcolor\"===t?\"backgroundColor\":t;a.has(\"\".concat(c,\"-\").concat(n))||(i=b.RichUtils.toggleInlineStyle(i,\"\".concat(t.toLowerCase(),\"-\").concat(n)),w(t,c,n))}return i}function A(e){e&&e.getCurrentContent().getBlockMap().map(function(e){return e.get(\"characterList\")}).toList().flatten().forEach(function(e){e&&0===e.indexOf(\"color-\")?w(\"color\",\"color\",e.substr(6)):e&&0===e.indexOf(\"bgcolor-\")?w(\"bgcolor\",\"backgroundColor\",e.substr(8)):e&&0===e.indexOf(\"fontsize-\")?w(\"fontSize\",\"fontSize\",+e.substr(9)):e&&0===e.indexOf(\"fontfamily-\")&&w(\"fontFamily\",\"fontFamily\",e.substr(11))})}function T(e,t,n){var o=e.getInlineStyleAt(n).toList().filter(function(e){return e.startsWith(t.toLowerCase())});if(o&&0<o.size)return o.get(0)}function z(o,s){if(o&&s&&0<s.length){var e=function(){var e=o.getSelection(),i={};if(e.isCollapsed())return s.forEach(function(e){i[e]=function(e,t){var n=e.getCurrentInlineStyle().toList().filter(function(e){return e.startsWith(t.toLowerCase())});if(n&&0<n.size)return n.get(0)}(o,e)}),{v:i};var a=e.getStartOffset(),c=e.getEndOffset(),l=u(o);if(0<l.size){for(var t=function(n){var e=0===n?a:0,t=n===l.size-1?c:l.get(n).getText().length;e===t&&0===e?(e=1,t=2):e===t&&--e;for(var o=function(t){t===e?s.forEach(function(e){i[e]=T(l.get(n),e,t)}):s.forEach(function(e){i[e]&&i[e]!==T(l.get(n),e,t)&&(i[e]=void 0)})},r=e;r<t;r+=1)o(r)},n=0;n<l.size;n+=1)t(n);return{v:i}}}();if(\"object\"===L(e))return e.v}return{}}function _(t){var e=t.getCurrentInlineStyle(),n=t.getCurrentContent();return e.forEach(function(e){n=b.Modifier.removeInlineStyle(n,t.getSelection(),e)}),b.EditorState.push(t,n,\"change-inline-style\")}n.d(t,\"isListBlock\",function(){return M}),n.d(t,\"changeDepth\",function(){return N}),n.d(t,\"handleNewLine\",function(){return S}),n.d(t,\"getEntityRange\",function(){return v}),n.d(t,\"getCustomStyleMap\",function(){return x}),n.d(t,\"toggleCustomInlineStyle\",function(){return O}),n.d(t,\"getSelectionEntity\",function(){return D}),n.d(t,\"extractInlineStyle\",function(){return A}),n.d(t,\"removeAllInlineStyles\",function(){return _}),n.d(t,\"getSelectionInlineStyle\",function(){return k}),n.d(t,\"getSelectionCustomInlineStyle\",function(){return z}),n.d(t,\"getSelectedBlocksMap\",function(){return j}),n.d(t,\"getSelectedBlocksList\",function(){return u}),n.d(t,\"getSelectedBlock\",function(){return l}),n.d(t,\"getBlockBeforeSelectedBlock\",function(){return o}),n.d(t,\"getAllBlocks\",function(){return r}),n.d(t,\"getSelectedBlocksType\",function(){return a}),n.d(t,\"removeSelectedBlocksStyle\",function(){return c}),n.d(t,\"getSelectionText\",function(){return s}),n.d(t,\"addLineBreakRemovingSelection\",function(){return p}),n.d(t,\"insertNewUnstyledBlock\",function(){return d}),n.d(t,\"clearEditorContent\",function(){return m}),n.d(t,\"setBlockData\",function(){return f}),n.d(t,\"getSelectedBlocksMetadata\",function(){return g}),n.d(t,\"blockRenderMap\",function(){return h})}],r.c=c,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=2))},function(e,t){e.exports=r},function(e,t,n){function r(e){if(c[e])return c[e].exports;var t=c[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}var o,i,a,c;window,e.exports=(o=n(5),i=n(3),c={},r.m=a=[function(e,t){e.exports=o},function(e,t){e.exports=i},function(e,t,n){e.exports=n(3)},function(e,t,n){\"use strict\";n.r(t);var j=n(1),s=n(0),N=function(e,t,n){var o,r=e.textContent;return\"\"===r.trim()?{chunk:(o=n,{text:\" \",inlines:[new s.OrderedSet],entities:[o],blocks:[]})}:{chunk:{text:r,inlines:Array(r.length).fill(t),entities:Array(r.length).fill(n),blocks:[]}}},S=function(){return{text:\"\\n\",inlines:[new s.OrderedSet],entities:new Array(1),blocks:[]}},E=function(){return{text:\"\",inlines:[],entities:[],blocks:[]}},C=function(e,t){return{text:\"\",inlines:[],entities:[],blocks:[{type:e,depth:0,data:t||new s.Map({})}]}},L=function(e,t,n){return{text:\"\\r\",inlines:[],entities:[],blocks:[{type:e,depth:Math.max(0,Math.min(4,t)),data:n||new s.Map({})}]}},k=function(e){return{text:\"\\r \",inlines:[new s.OrderedSet],entities:[e],blocks:[{type:\"atomic\",depth:0,data:new s.Map({})}]}},D=function(e,t){return{text:e.text+t.text,inlines:e.inlines.concat(t.inlines),entities:e.entities.concat(t.entities),blocks:e.blocks.concat(t.blocks)}},v=new s.Map({\"header-one\":{element:\"h1\"},\"header-two\":{element:\"h2\"},\"header-three\":{element:\"h3\"},\"header-four\":{element:\"h4\"},\"header-five\":{element:\"h5\"},\"header-six\":{element:\"h6\"},\"unordered-list-item\":{element:\"li\",wrapper:\"ul\"},\"ordered-list-item\":{element:\"li\",wrapper:\"ol\"},blockquote:{element:\"blockquote\"},code:{element:\"pre\"},atomic:{element:\"figure\"},unstyled:{element:\"p\",aliasedElements:[\"div\"]}}),w={code:\"CODE\",del:\"STRIKETHROUGH\",em:\"ITALIC\",strong:\"BOLD\",ins:\"UNDERLINE\",sub:\"SUBSCRIPT\",sup:\"SUPERSCRIPT\"};function x(e){return e.style.textAlign?new s.Map({\"text-align\":e.style.textAlign}):e.style.marginLeft?new s.Map({\"margin-left\":e.style.marginLeft}):void 0}var I=function(e){var t=void 0;if(e instanceof HTMLAnchorElement){var n={};t=e.dataset&&void 0!==e.dataset.mention?(n.url=e.href,n.text=e.innerHTML,n.value=e.dataset.value,j.Entity.__create(\"MENTION\",\"IMMUTABLE\",n)):(n.url=e.getAttribute&&e.getAttribute(\"href\")||e.href,n.title=e.innerHTML,n.targetOption=e.target,j.Entity.__create(\"LINK\",\"MUTABLE\",n))}return t};n.d(t,\"default\",function(){return o});var u=\" \",p=new RegExp(\" \",\"g\"),O=!0;function o(e,t){var n,o,r,i=(n=t,o=e.trim().replace(p,u),(r=function(e){var t,n=null;return document.implementation&&document.implementation.createHTMLDocument&&((t=document.implementation.createHTMLDocument(\"foo\")).documentElement.innerHTML=e,n=t.getElementsByTagName(\"body\")[0]),n}(o))?(O=!0,{chunk:function e(t,n,o,r,i,a){var c=t.nodeName.toLowerCase();if(a){var l=a(c,t);if(l){var s=j.Entity.__create(l.type,l.mutability,l.data||{});return{chunk:k(s)}}}if(\"#text\"===c&&\"\\n\"!==t.textContent)return N(t,n,i);if(\"br\"===c)return{chunk:S()};if(\"img\"===c&&t instanceof HTMLImageElement){var u={};u.src=t.getAttribute&&t.getAttribute(\"src\")||t.src,u.alt=t.alt,u.height=t.style.height,u.width=t.style.width,t.style.float&&(u.alignment=t.style.float);var p=j.Entity.__create(\"IMAGE\",\"MUTABLE\",u);return{chunk:k(p)}}if(\"video\"===c&&t instanceof HTMLVideoElement){var d={};d.src=t.getAttribute&&t.getAttribute(\"src\")||t.src,d.alt=t.alt,d.height=t.style.height,d.width=t.style.width,t.style.float&&(d.alignment=t.style.float);var m=j.Entity.__create(\"VIDEO\",\"MUTABLE\",d);return{chunk:k(m)}}if(\"iframe\"===c&&t instanceof HTMLIFrameElement){var f={};f.src=t.getAttribute&&t.getAttribute(\"src\")||t.src,f.height=t.height,f.width=t.width;var g=j.Entity.__create(\"EMBEDDED_LINK\",\"MUTABLE\",f);return{chunk:k(g)}}var y,h=function(t,n){var e=v.filter(function(e){return e.element===t&&(!e.wrapper||e.wrapper===n)||e.wrapper===t||e.aliasedElements&&-1<e.aliasedElements.indexOf(t)}).keySeq().toSet().toArray();if(1===e.length)return e[0]}(c,r);h&&(\"ul\"===c||\"ol\"===c?(r=c,o+=1):(\"unordered-list-item\"!==h&&\"ordered-list-item\"!==h&&(r=\"\",o=-1),O?(y=C(h,x(t)),O=!1):y=L(h,o,x(t)))),y=y||E(),n=function(e,t,n){var o,r=w[e];if(r)o=n.add(r).toOrderedSet();else if(t instanceof HTMLElement){var l=t;o=(o=n).withMutations(function(e){var t=l.style.color,n=l.style.backgroundColor,o=l.style.fontSize,r=l.style.fontFamily.replace(/^\"|\"$/g,\"\"),i=l.style.fontWeight,a=l.style.textDecoration,c=l.style.fontStyle;t&&e.add(\"color-\".concat(t.replace(/ /g,\"\"))),n&&e.add(\"bgcolor-\".concat(n.replace(/ /g,\"\"))),o&&e.add(\"fontsize-\".concat(o.replace(/px$/g,\"\"))),r&&e.add(\"fontfamily-\".concat(r)),\"bold\"===i&&e.add(w.strong),\"underline\"===a&&e.add(w.ins),\"italic\"===c&&e.add(w.em)}).toOrderedSet()}return o}(c,t,n);for(var M=t.firstChild;M;){var b=e(M,n,o,r,I(M)||i,a).chunk;y=D(y,b),M=M.nextSibling}return{chunk:y}}(r,new s.OrderedSet,-1,\"\",void 0,n).chunk}):null);if(i){var a=i.chunk,c=new s.OrderedMap({});a.entities&&a.entities.forEach(function(e){e&&(c=c.set(e,j.Entity.__get(e)))});var l=0;return{contentBlocks:a.text.split(\"\\r\").map(function(e,t){var n=l+e.length,o=a&&a.inlines.slice(l,n),r=a&&a.entities.slice(l,n),i=new s.List(o.map(function(e,t){var n={style:e,entity:null};return r[t]&&(n.entity=r[t]),j.CharacterMetadata.create(n)}));return l=n,new j.ContentBlock({key:Object(j.genKey)(),type:a&&a.blocks[t]&&a.blocks[t].type||\"unstyled\",depth:a&&a.blocks[t]&&a.blocks[t].depth,data:a&&a.blocks[t]&&a.blocks[t].data||new s.Map({}),text:e,characterList:i})}),entityMap:c}}return null}}],r.c=c,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=2))},function(e,t,l){\"use strict\";function o(n){return Array.prototype.slice.call(arguments,1).forEach(function(t){t&&Object.keys(t).forEach(function(e){n[e]=t[e]})}),n}function s(e){return Object.prototype.toString.call(e)}function u(e){return\"[object Function]\"===s(e)}function p(e){return e.replace(/[.?*+^$[\\]\\\\(){}|-]/g,\"\\\\$&\")}var r={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var i={\"http:\":{validate:function(e,t,n){var o=e.slice(t);return n.re.http||(n.re.http=new RegExp(\"^\\\\/\\\\/\"+n.re.src_auth+n.re.src_host_port_strict+n.re.src_path,\"i\")),n.re.http.test(o)?o.match(n.re.http)[0].length:0}},\"https:\":\"http:\",\"ftp:\":\"http:\",\"//\":{validate:function(e,t,n){var o=e.slice(t);return n.re.no_http||(n.re.no_http=new RegExp(\"^\"+n.re.src_auth+\"(?:localhost|(?:(?:\"+n.re.src_domain+\")\\\\.)+\"+n.re.src_domain_root+\")\"+n.re.src_port+n.re.src_host_terminator+n.re.src_path,\"i\")),n.re.no_http.test(o)?3<=t&&\":\"===e[t-3]?0:3<=t&&\"/\"===e[t-3]?0:o.match(n.re.no_http)[0].length:0}},\"mailto:\":{validate:function(e,t,n){var o=e.slice(t);return n.re.mailto||(n.re.mailto=new RegExp(\"^\"+n.re.src_email_name+\"@\"+n.re.src_host_strict,\"i\")),n.re.mailto.test(o)?o.match(n.re.mailto)[0].length:0}}},d=\"a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]\",a=\"biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\".split(\"|\");function m(){return function(e,t){t.normalize(e)}}function c(r){var t=r.re=l(21)(r.__opts__),e=r.__tlds__.slice();function n(e){return e.replace(\"%TLDS%\",t.src_tlds)}r.onCompile(),r.__tlds_replaced__||e.push(d),e.push(t.src_xn),t.src_tlds=e.join(\"|\"),t.email_fuzzy=RegExp(n(t.tpl_email_fuzzy),\"i\"),t.link_fuzzy=RegExp(n(t.tpl_link_fuzzy),\"i\"),t.link_no_ip_fuzzy=RegExp(n(t.tpl_link_no_ip_fuzzy),\"i\"),t.host_fuzzy_test=RegExp(n(t.tpl_host_fuzzy_test),\"i\");var i=[];function a(e,t){throw new Error('(LinkifyIt) Invalid schema \"'+e+'\": '+t)}r.__compiled__={},Object.keys(r.__schemas__).forEach(function(e){var t=r.__schemas__[e];if(null!==t){var o,n={validate:null,link:null};if(r.__compiled__[e]=n,\"[object Object]\"===s(t))return\"[object RegExp]\"===s(t.validate)?n.validate=(o=t.validate,function(e,t){var n=e.slice(t);return o.test(n)?n.match(o)[0].length:0}):u(t.validate)?n.validate=t.validate:a(e,t),void(u(t.normalize)?n.normalize=t.normalize:t.normalize?a(e,t):n.normalize=m());if(\"[object String]\"!==s(t))a(e,t);else i.push(e)}}),i.forEach(function(e){r.__compiled__[r.__schemas__[e]]&&(r.__compiled__[e].validate=r.__compiled__[r.__schemas__[e]].validate,r.__compiled__[e].normalize=r.__compiled__[r.__schemas__[e]].normalize)}),r.__compiled__[\"\"]={validate:null,normalize:m()};var o,c=Object.keys(r.__compiled__).filter(function(e){return 0<e.length&&r.__compiled__[e]}).map(p).join(\"|\");r.re.schema_test=RegExp(\"(^|(?!_)(?:[><|]|\"+t.src_ZPCc+\"))(\"+c+\")\",\"i\"),r.re.schema_search=RegExp(\"(^|(?!_)(?:[><|]|\"+t.src_ZPCc+\"))(\"+c+\")\",\"ig\"),r.re.pretest=RegExp(\"(\"+r.re.schema_test.source+\")|(\"+r.re.host_fuzzy_test.source+\")|@\",\"i\"),(o=r).__index__=-1,o.__text_cache__=\"\"}function f(e,t){var n=e.__index__,o=e.__last_index__,r=e.__text_cache__.slice(n,o);this.schema=e.__schema__.toLowerCase(),this.index=n+t,this.lastIndex=o+t,this.raw=r,this.text=r,this.url=r}function g(e,t){var n=new f(e,t);return e.__compiled__[n.schema].normalize(n,e),n}function y(e,t){if(!(this instanceof y))return new y(e,t);var n;t||(n=e,Object.keys(n||{}).reduce(function(e,t){return e||r.hasOwnProperty(t)},!1)&&(t=e,e={})),this.__opts__=o({},r,t),this.__index__=-1,this.__last_index__=-1,this.__schema__=\"\",this.__text_cache__=\"\",this.__schemas__=o({},i,e),this.__compiled__={},this.__tlds__=a,this.__tlds_replaced__=!1,this.re={},c(this)}y.prototype.add=function(e,t){return this.__schemas__[e]=t,c(this),this},y.prototype.set=function(e){return this.__opts__=o(this.__opts__,e),this},y.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var t,n,o,r,i,a,c,l;if(this.re.schema_test.test(e))for((c=this.re.schema_search).lastIndex=0;null!==(t=c.exec(e));)if(r=this.testSchemaAt(e,t[2],c.lastIndex)){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+r;break}return this.__opts__.fuzzyLink&&this.__compiled__[\"http:\"]&&0<=(l=e.search(this.re.host_fuzzy_test))&&(this.__index__<0||l<this.__index__)&&null!==(n=e.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(i=n.index+n[1].length,(this.__index__<0||i<this.__index__)&&(this.__schema__=\"\",this.__index__=i,this.__last_index__=n.index+n[0].length)),this.__opts__.fuzzyEmail&&this.__compiled__[\"mailto:\"]&&0<=e.indexOf(\"@\")&&null!==(o=e.match(this.re.email_fuzzy))&&(i=o.index+o[1].length,a=o.index+o[0].length,(this.__index__<0||i<this.__index__||i===this.__index__&&a>this.__last_index__)&&(this.__schema__=\"mailto:\",this.__index__=i,this.__last_index__=a)),0<=this.__index__},y.prototype.pretest=function(e){return this.re.pretest.test(e)},y.prototype.testSchemaAt=function(e,t,n){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,n,this):0},y.prototype.match=function(e){var t=0,n=[];0<=this.__index__&&this.__text_cache__===e&&(n.push(g(this,t)),t=this.__last_index__);for(var o=t?e.slice(t):e;this.test(o);)n.push(g(this,t)),o=o.slice(this.__last_index__),t+=this.__last_index__;return n.length?n:null},y.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?this.__tlds__=this.__tlds__.concat(e).sort().filter(function(e,t,n){return e!==n[t-1]}).reverse():(this.__tlds__=e.slice(),this.__tlds_replaced__=!0),c(this),this},y.prototype.normalize=function(e){e.schema||(e.url=\"http://\"+e.url),\"mailto:\"!==e.schema||/^mailto:/i.test(e.url)||(e.url=\"mailto:\"+e.url)},y.prototype.onCompile=function(){},e.exports=y},function(e,t,n){e.exports=n(40)},function(e,t,n){\"use strict\";var c=n(10);function o(){}function r(){}r.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,r,i){if(i!==c){var a=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw a.name=\"Invariant Violation\",a}}function t(){return e}var n={array:e.isRequired=e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:r,resetWarningCache:o};return n.PropTypes=n}},function(e,t,n){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,o){\"use strict\";e.exports=function(e){var t={};t.src_Any=o(22).source,t.src_Cc=o(23).source,t.src_Z=o(24).source,t.src_P=o(25).source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join(\"|\"),t.src_ZCc=[t.src_Z,t.src_Cc].join(\"|\");var n=\"[><|]\";return t.src_pseudo_letter=\"(?:(?![><|]|\"+t.src_ZPCc+\")\"+t.src_Any+\")\",t.src_ip4=\"(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\",t.src_auth=\"(?:(?:(?!\"+t.src_ZCc+\"|[@/\\\\[\\\\]()]).)+@)?\",t.src_port=\"(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?\",t.src_host_terminator=\"(?=$|[><|]|\"+t.src_ZPCc+\")(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|\"+t.src_ZPCc+\"))\",t.src_path=\"(?:[/?#](?:(?!\"+t.src_ZCc+\"|\"+n+\"|[()[\\\\]{}.,\\\"'?!\\\\-]).|\\\\[(?:(?!\"+t.src_ZCc+\"|\\\\]).)*\\\\]|\\\\((?:(?!\"+t.src_ZCc+\"|[)]).)*\\\\)|\\\\{(?:(?!\"+t.src_ZCc+'|[}]).)*\\\\}|\\\\\"(?:(?!'+t.src_ZCc+'|[\"]).)+\\\\\"|\\\\\\'(?:(?!'+t.src_ZCc+\"|[']).)+\\\\'|\\\\'(?=\"+t.src_pseudo_letter+\"|[-]).|\\\\.{2,4}[a-zA-Z0-9%/]|\\\\.(?!\"+t.src_ZCc+\"|[.]).|\"+(e&&e[\"---\"]?\"\\\\-(?!--(?:[^-]|$))(?:-*)|\":\"\\\\-+|\")+\"\\\\,(?!\"+t.src_ZCc+\").|\\\\!(?!\"+t.src_ZCc+\"|[!]).|\\\\?(?!\"+t.src_ZCc+\"|[?]).)+|\\\\/)?\",t.src_email_name='[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*',t.src_xn=\"xn--[a-z0-9\\\\-]{1,59}\",t.src_domain_root=\"(?:\"+t.src_xn+\"|\"+t.src_pseudo_letter+\"{1,63})\",t.src_domain=\"(?:\"+t.src_xn+\"|(?:\"+t.src_pseudo_letter+\")|(?:\"+t.src_pseudo_letter+\"(?:-|\"+t.src_pseudo_letter+\"){0,61}\"+t.src_pseudo_letter+\"))\",t.src_host=\"(?:(?:(?:(?:\"+t.src_domain+\")\\\\.)*\"+t.src_domain+\"))\",t.tpl_host_fuzzy=\"(?:\"+t.src_ip4+\"|(?:(?:(?:\"+t.src_domain+\")\\\\.)+(?:%TLDS%)))\",t.tpl_host_no_ip_fuzzy=\"(?:(?:(?:\"+t.src_domain+\")\\\\.)+(?:%TLDS%))\",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test=\"localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:\"+t.src_ZPCc+\"|>|$))\",t.tpl_email_fuzzy='(^|[><|]|\"|\\\\(|'+t.src_ZCc+\")(\"+t.src_email_name+\"@\"+t.tpl_host_fuzzy_strict+\")\",t.tpl_link_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`||]|\"+t.src_ZPCc+\"))((?![$+<=>^`||])\"+t.tpl_host_port_fuzzy_strict+t.src_path+\")\",t.tpl_link_no_ip_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`||]|\"+t.src_ZPCc+\"))((?![$+<=>^`||])\"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+\")\",t}},function(e,t){e.exports=/[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/},function(e,t){e.exports=/[\\0-\\x1F\\x7F-\\x9F]/},function(e,t){e.exports=/[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/},function(e,t){e.exports=/[!-#%-\\*,-/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E44\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){\"use strict\";n.r(t);var m=n(1),S=n.n(m),o=n(0),f=n.n(o),E=n(3),C=n(4),r=n(2),L=n.n(r);function i(){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i),this.callBacks=[],this.suggestionCallback=void 0,this.editorFlag=!1,this.suggestionFlag=!1,this.closeAllModals=function(t){n.callBacks.forEach(function(e){e(t)})},this.init=function(e){var t=document.getElementById(e);t&&t.addEventListener(\"click\",function(){n.editorFlag=!0}),document&&(document.addEventListener(\"click\",function(){n.editorFlag?n.editorFlag=!1:(n.closeAllModals(),n.suggestionCallback&&n.suggestionCallback())}),document.addEventListener(\"keydown\",function(e){\"Escape\"===e.key&&n.closeAllModals()}))},this.onEditorClick=function(){n.closeModals(),!n.suggestionFlag&&n.suggestionCallback?n.suggestionCallback():n.suggestionFlag=!1},this.closeModals=function(e){n.closeAllModals(e)},this.registerCallBack=function(e){n.callBacks.push(e)},this.deregisterCallBack=function(t){n.callBacks=n.callBacks.filter(function(e){return e!==t})},this.setSuggestionCallback=function(e){n.suggestionCallback=e},this.removeSuggestionCallback=function(){n.suggestionCallback=void 0},this.onSuggestionClick=function(){n.suggestionFlag=!0}}function c(){var t=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,c),this.inputFocused=!1,this.editorMouseDown=!1,this.onEditorMouseDown=function(){t.editorFocused=!0},this.onInputMouseDown=function(){t.inputFocused=!0},this.isEditorBlur=function(e){return\"INPUT\"!==e.target.tagName&&\"LABEL\"!==e.target.tagName&&\"TEXTAREA\"!==e.target.tagName||t.editorFocused?!(\"INPUT\"===e.target.tagName&&\"LABEL\"===e.target.tagName&&\"TEXTAREA\"===e.target.tagName||t.inputFocused)&&!(t.editorFocused=!1):!(t.inputFocused=!1)},this.isEditorFocused=function(){return!t.inputFocused||(t.inputFocused=!1)},this.isToolbarFocused=function(){return!t.editorFocused||(t.editorFocused=!1)},this.isInputFocused=function(){return t.inputFocused}}var a,l=[],k={onKeyDown:function(t){l.forEach(function(e){e(t)})},registerCallBack:function(e){l.push(e)},deregisterCallBack:function(t){l=l.filter(function(e){return e!==t})}},g=function(){a=!0},y=function(){a=!1},s=function(){return a};function D(e){var t=e.getData()&&e.getData().get(\"text-align\");return t?\"rdw-\".concat(t,\"-aligned-block\"):\"\"}function u(e,t){if(e)for(var n in e)!{}.hasOwnProperty.call(e,n)||t(n,e[n])}function p(e,t){var n=!1;if(e)for(var o in e)if({}.hasOwnProperty.call(e,o)&&t===o){n=!0;break}return n}function d(e){e.stopPropagation()}function h(e){return e[e.options[0]].icon}function M(e,o){if(e&&void 0===o)return e;var r={};return u(e,function(e,t){var n;n=t,\"[object Object]\"===Object.prototype.toString.call(n)?r[e]=M(t,o[e]):r[e]=void 0!==o[e]?o[e]:t}),r}var b=n(6),j=n.n(b),N=n(5);n(11);function v(e){return(v=\"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})(e)}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function I(e,t){return!t||\"object\"!==v(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function O(e){return(O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function A(e,t){return(A=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var T=function(){function i(){var e,r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(r=I(this,(e=O(i)).call.apply(e,[this].concat(n)))).onClick=function(){var e=r.props,t=e.disabled,n=e.onClick,o=e.value;t||n(o)},r}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&A(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"render\",value:function(){var e,t=this.props,n=t.children,o=t.className,r=t.activeClassName,i=t.active,a=t.disabled,c=t.title;return S.a.createElement(\"div\",{className:L()(\"rdw-option-wrapper\",o,(w(e={},\"rdw-option-active \".concat(r),i),w(e,\"rdw-option-disabled\",a),e)),onClick:this.onClick,\"aria-selected\":i,title:c},n)}}])&&x(e.prototype,t),n&&x(e,n),i}();T.propTypes={onClick:f.a.func.isRequired,children:f.a.any,value:f.a.string,className:f.a.string,activeClassName:f.a.string,active:f.a.bool,disabled:f.a.bool,title:f.a.string},T.defaultProps={activeClassName:\"\"};n(12);function z(e){return(z=\"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})(e)}function _(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function P(e,t){return!t||\"object\"!==z(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function U(e){return(U=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Y(e,t){return(Y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var F=function(){function i(){var e,o;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return(o=P(this,(e=U(i)).call.apply(e,[this].concat(n)))).state={highlighted:-1},o.onChange=function(e){var t=o.props.onChange;t&&t(e),o.toggleExpansion()},o.setHighlighted=function(e){o.setState({highlighted:e})},o.toggleExpansion=function(){var e=o.props,t=e.doExpand,n=e.doCollapse;e.expanded?n():t()},o}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Y(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.expanded;e.expanded&&!t&&this.setState({highlighted:-1})}},{key:\"render\",value:function(){var n=this,e=this.props,t=e.expanded,o=e.children,r=e.className,i=e.optionWrapperClassName,a=e.ariaLabel,c=e.onExpandEvent,l=e.title,s=this.state.highlighted,u=o.slice(1,o.length);return S.a.createElement(\"div\",{className:L()(\"rdw-dropdown-wrapper\",r),\"aria-expanded\":t,\"aria-label\":a||\"rdw-dropdown\"},S.a.createElement(\"a\",{className:\"rdw-dropdown-selectedtext\",onClick:c,title:l},o[0],S.a.createElement(\"div\",{className:L()({\"rdw-dropdown-carettoclose\":t,\"rdw-dropdown-carettoopen\":!t})})),t?S.a.createElement(\"ul\",{className:L()(\"rdw-dropdown-optionwrapper\",i),onClick:d},S.a.Children.map(u,function(e,t){return e&&S.a.cloneElement(e,{onSelect:n.onChange,highlighted:s===t,setHighlighted:n.setHighlighted,index:t})})):void 0)}}])&&_(e.prototype,t),n&&_(e,n),i}();F.propTypes={children:f.a.any,onChange:f.a.func,className:f.a.string,expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,optionWrapperClassName:f.a.string,ariaLabel:f.a.string,title:f.a.string};n(13);function R(e){return(R=\"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})(e)}function B(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Q(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function H(e,t){return!t||\"object\"!==R(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Z(e){return(Z=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function W(e,t){return(W=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var G=function(){function r(){var e,i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(i=H(this,(e=Z(r)).call.apply(e,[this].concat(n)))).onClick=function(e){var t=i.props,n=t.onSelect,o=t.onClick,r=t.value;t.disabled||(n&&n(r),o&&(e.stopPropagation(),o(r)))},i.setHighlighted=function(){var e=i.props;(0,e.setHighlighted)(e.index)},i.resetHighlighted=function(){(0,i.props.setHighlighted)(-1)},i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&W(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"render\",value:function(){var e,t=this.props,n=t.children,o=t.active,r=t.disabled,i=t.highlighted,a=t.className,c=t.activeClassName,l=t.disabledClassName,s=t.highlightedClassName,u=t.title;return S.a.createElement(\"li\",{className:L()(\"rdw-dropdownoption-default\",a,(B(e={},\"rdw-dropdownoption-active \".concat(c),o),B(e,\"rdw-dropdownoption-highlighted \".concat(s),i),B(e,\"rdw-dropdownoption-disabled \".concat(l),r),e)),onMouseEnter:this.setHighlighted,onMouseLeave:this.resetHighlighted,onClick:this.onClick,title:u},n)}}])&&Q(e.prototype,t),n&&Q(e,n),r}();G.propTypes={children:f.a.any,value:f.a.any,onClick:f.a.func,onSelect:f.a.func,setHighlighted:f.a.func,index:f.a.number,disabled:f.a.bool,active:f.a.bool,highlighted:f.a.bool,className:f.a.string,activeClassName:f.a.string,disabledClassName:f.a.string,highlightedClassName:f.a.string,title:f.a.string},G.defaultProps={activeClassName:\"\",disabledClassName:\"\",highlightedClassName:\"\"};n(14);function J(e){return(J=\"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})(e)}function V(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function q(e,t){return!t||\"object\"!==J(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function K(e){return(K=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function X(e,t){return(X=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var $=function(){function e(){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),q(this,K(e).apply(this,arguments))}var t,n,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&X(e,t)}(e,m[\"Component\"]),t=e,(n=[{key:\"renderInFlatList\",value:function(){var e=this.props,n=e.config,o=e.currentState,r=e.onChange,i=e.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-inline-wrapper\",n.className),\"aria-label\":\"rdw-inline-control\"},n.options.map(function(e,t){return S.a.createElement(T,{key:t,value:e,onClick:r,className:L()(n[e].className),active:!0===o[e]||\"MONOSPACE\"===e&&o.CODE,title:n[e].title||i[\"components.controls.inline.\".concat(e)]},S.a.createElement(\"img\",{alt:\"\",src:n[e].icon}))}))}},{key:\"renderInDropDown\",value:function(){var e=this.props,n=e.config,t=e.expanded,o=e.doExpand,r=e.onExpandEvent,i=e.doCollapse,a=e.currentState,c=e.onChange,l=e.translations,s=n.className,u=n.dropdownClassName,p=n.title;return S.a.createElement(F,{className:L()(\"rdw-inline-dropdown\",s),optionWrapperClassName:L()(u),onChange:c,expanded:t,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-inline-control\",title:p},S.a.createElement(\"img\",{src:h(n),alt:\"\"}),n.options.map(function(e,t){return S.a.createElement(G,{key:t,value:e,className:L()(\"rdw-inline-dropdownoption\",n[e].className),active:!0===a[e]||\"MONOSPACE\"===e&&a.CODE,title:n[e].title||l[\"components.controls.inline.\".concat(e)]},S.a.createElement(\"img\",{src:n[e].icon,alt:\"\"}))}))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&V(t.prototype,n),o&&V(t,o),e}();function ee(e){return(ee=\"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})(e)}function te(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ne(e,t){return!t||\"object\"!==ee(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function oe(e){return(oe=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function re(e,t){return(re=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}$.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var ie=function(){function r(e){var l;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(l=ne(this,oe(r).call(this,e))).onExpandEvent=function(){l.signalExpanded=!l.state.expanded},l.expandCollapse=function(){l.setState({expanded:l.signalExpanded}),l.signalExpanded=!1},l.toggleInlineStyle=function(e){var t=\"monospace\"===e?\"CODE\":e.toUpperCase(),n=l.props,o=n.editorState,r=n.onChange,i=E.RichUtils.toggleInlineStyle(o,t);if(\"subscript\"===e||\"superscript\"===e){var a=\"subscript\"===e?\"SUPERSCRIPT\":\"SUBSCRIPT\",c=E.Modifier.removeInlineStyle(i.getCurrentContent(),i.getSelection(),a);i=E.EditorState.push(i,c,\"change-inline-style\")}i&&r(i)},l.changeKeys=function(e){if(e){var n={};return u(e,function(e,t){n[\"CODE\"===e?\"monospace\":e.toLowerCase()]=t}),n}},l.doExpand=function(){l.setState({expanded:!0})},l.doCollapse=function(){l.setState({expanded:!1})};var t=l.props,n=t.editorState,o=t.modalHandler;return l.state={currentStyles:n?l.changeKeys(Object(C.getSelectionInlineStyle)(n)):{}},o.registerCallBack(l.expandCollapse),l}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&re(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentStyles:this.changeKeys(Object(C.getSelectionInlineStyle)(t))})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentStyles,a=t.component||$;return S.a.createElement(a,{config:t,translations:n,currentState:i,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.toggleInlineStyle})}}])&&te(e.prototype,t),n&&te(e,n),r}();ie.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(15);function ae(e){return(ae=\"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})(e)}function ce(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function le(e,t){return!t||\"object\"!==ae(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function se(e){return(se=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ue(e,t){return(ue=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var pe=function(){function n(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),(t=le(this,se(n).call(this,e))).getBlockTypes=function(e){return[{label:\"Normal\",displayName:e[\"components.controls.blocktype.normal\"]},{label:\"H1\",displayName:e[\"components.controls.blocktype.h1\"]},{label:\"H2\",displayName:e[\"components.controls.blocktype.h2\"]},{label:\"H3\",displayName:e[\"components.controls.blocktype.h3\"]},{label:\"H4\",displayName:e[\"components.controls.blocktype.h4\"]},{label:\"H5\",displayName:e[\"components.controls.blocktype.h5\"]},{label:\"H6\",displayName:e[\"components.controls.blocktype.h6\"]},{label:\"Blockquote\",displayName:e[\"components.controls.blocktype.blockquote\"]},{label:\"Code\",displayName:e[\"components.controls.blocktype.code\"]}]},t.state={blockTypes:t.getBlockTypes(e.translations)},t}var e,t,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ue(e,t)}(n,m[\"Component\"]),e=n,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.translations;t!==e.translations&&this.setState({blockTypes:this.getBlockTypes(t)})}},{key:\"renderFlat\",value:function(e){var t=this.props,n=t.config.className,o=t.onChange,r=t.currentState.blockType;return S.a.createElement(\"div\",{className:L()(\"rdw-inline-wrapper\",n)},e.map(function(e,t){return S.a.createElement(T,{key:t,value:e.label,active:r===e.label,onClick:o},e.displayName)}))}},{key:\"renderInDropdown\",value:function(e){var t=this.props,n=t.config,o=n.className,r=n.dropdownClassName,i=n.title,a=t.currentState.blockType,c=t.expanded,l=t.doExpand,s=t.onExpandEvent,u=t.doCollapse,p=t.onChange,d=t.translations,m=this.state.blockTypes.filter(function(e){return e.label===a}),f=m&&m[0]&&m[0].displayName;return S.a.createElement(\"div\",{className:\"rdw-block-wrapper\",\"aria-label\":\"rdw-block-control\"},S.a.createElement(F,{className:L()(\"rdw-block-dropdown\",o),optionWrapperClassName:L()(r),onChange:p,expanded:c,doExpand:l,doCollapse:u,onExpandEvent:s,title:i||d[\"components.controls.blocktype.blocktype\"]},S.a.createElement(\"span\",null,f||d[\"components.controls.blocktype.blocktype\"]),e.map(function(e,t){return S.a.createElement(G,{active:a===e.label,value:e.label,key:t},e.displayName)})))}},{key:\"render\",value:function(){var n=this.props.config,e=n.inDropdown,t=this.state.blockTypes.filter(function(e){var t=e.label;return-1<n.options.indexOf(t)});return e?this.renderInDropdown(t):this.renderFlat(t)}}])&&ce(e.prototype,t),o&&ce(e,o),n}();pe.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doExpand:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var de=pe;function me(e){return(me=\"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})(e)}function fe(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ge(e,t){return!t||\"object\"!==me(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function ye(e){return(ye=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function he(e,t){return(he=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Me=function(){function o(e){var a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,o),(a=ge(this,ye(o).call(this,e))).onExpandEvent=function(){a.signalExpanded=!a.state.expanded},a.expandCollapse=function(){a.setState({expanded:a.signalExpanded}),a.signalExpanded=!1},a.blocksTypes=[{label:\"Normal\",style:\"unstyled\"},{label:\"H1\",style:\"header-one\"},{label:\"H2\",style:\"header-two\"},{label:\"H3\",style:\"header-three\"},{label:\"H4\",style:\"header-four\"},{label:\"H5\",style:\"header-five\"},{label:\"H6\",style:\"header-six\"},{label:\"Blockquote\",style:\"blockquote\"},{label:\"Code\",style:\"code\"}],a.doExpand=function(){a.setState({expanded:!0})},a.doCollapse=function(){a.setState({expanded:!1})},a.toggleBlockType=function(t){var e=a.blocksTypes.find(function(e){return e.label===t}).style,n=a.props,o=n.editorState,r=n.onChange,i=E.RichUtils.toggleBlockType(o,e);i&&r(i)};var t=e.editorState,n=e.modalHandler;return a.state={expanded:!1,currentBlockType:t?Object(C.getSelectedBlocksType)(t):\"unstyled\"},n.registerCallBack(a.expandCollapse),a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&he(e,t)}(o,m[\"Component\"]),e=o,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentBlockType:Object(C.getSelectedBlocksType)(t)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentBlockType,a=t.component||de,c=this.blocksTypes.find(function(e){return e.style===i});return S.a.createElement(a,{config:t,translations:n,currentState:{blockType:c&&c.label},onChange:this.toggleBlockType,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&fe(e.prototype,t),n&&fe(e,n),o}();Me.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var be=Me;n(16);function je(e){return(je=\"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})(e)}function Ne(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Se(e,t){return!t||\"object\"!==je(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Ee(e){return(Ee=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ce(e,t){return(Ce=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Le=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Se(this,(e=Ee(i)).call.apply(e,[this].concat(o)))).state={defaultFontSize:void 0},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ce(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidMount\",value:function(){var e=document.getElementsByClassName(\"DraftEditor-root\");if(e&&0<e.length){var t=window.getComputedStyle(e[0]).getPropertyValue(\"font-size\");t=t.substring(0,t.length-2),this.setState({defaultFontSize:t})}}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.dropdownClassName,i=t.options,a=t.title,c=e.onChange,l=e.expanded,s=e.doCollapse,u=e.onExpandEvent,p=e.doExpand,d=e.translations,m=this.props.currentState.fontSize,f=this.state.defaultFontSize;return f=Number(f),m=m||i&&0<=i.indexOf(f)&&f,S.a.createElement(\"div\",{className:\"rdw-fontsize-wrapper\",\"aria-label\":\"rdw-font-size-control\"},S.a.createElement(F,{className:L()(\"rdw-fontsize-dropdown\",o),optionWrapperClassName:L()(r),onChange:c,expanded:l,doExpand:p,doCollapse:s,onExpandEvent:u,title:a||d[\"components.controls.fontsize.fontsize\"]},m?S.a.createElement(\"span\",null,m):S.a.createElement(\"img\",{src:n,alt:\"\"}),i.map(function(e,t){return S.a.createElement(G,{className:\"rdw-fontsize-option\",active:m===e,value:e,key:t},e)})))}}])&&Ne(e.prototype,t),n&&Ne(e,n),i}();function ke(e){return(ke=\"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})(e)}function De(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ve(e,t){return!t||\"object\"!==ke(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function we(e){return(we=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function xe(e,t){return(xe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}Le.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doExpand:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var Ie=function(){function o(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,o),(i=ve(this,we(o).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleFontSize=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=Object(C.toggleCustomInlineStyle)(n,\"fontSize\",e);r&&o(r)};var t=e.editorState,n=e.modalHandler;return i.state={expanded:void 0,currentFontSize:t?Object(C.getSelectionCustomInlineStyle)(t,[\"FONTSIZE\"]).FONTSIZE:void 0},n.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&xe(e,t)}(o,m[\"Component\"]),e=o,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentFontSize:Object(C.getSelectionCustomInlineStyle)(t,[\"FONTSIZE\"]).FONTSIZE})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentFontSize,a=t.component||Le,c=i&&Number(i.substring(9));return S.a.createElement(a,{config:t,translations:n,currentState:{fontSize:c},onChange:this.toggleFontSize,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&De(e.prototype,t),n&&De(e,n),o}();Ie.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(17);function Oe(e){return(Oe=\"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})(e)}function Ae(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Te(e,t){return!t||\"object\"!==Oe(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function ze(e){return(ze=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _e(e,t){return(_e=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Pe=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Te(this,(e=ze(i)).call.apply(e,[this].concat(o)))).state={defaultFontFamily:void 0},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_e(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidMount\",value:function(){var e=document.getElementsByClassName(\"DraftEditor-root\");if(e&&0<e.length){var t=window.getComputedStyle(e[0]).getPropertyValue(\"font-family\");this.setState({defaultFontFamily:t})}}},{key:\"render\",value:function(){var t=this.state.defaultFontFamily,e=this.props,n=e.config,o=n.className,r=n.dropdownClassName,i=n.options,a=n.title,c=e.translations,l=e.onChange,s=e.expanded,u=e.doCollapse,p=e.onExpandEvent,d=e.doExpand,m=this.props.currentState.fontFamily;return m=m||i&&t&&i.some(function(e){return e.toLowerCase()===t.toLowerCase()})&&t,S.a.createElement(\"div\",{className:\"rdw-fontfamily-wrapper\",\"aria-label\":\"rdw-font-family-control\"},S.a.createElement(F,{className:L()(\"rdw-fontfamily-dropdown\",o),optionWrapperClassName:L()(\"rdw-fontfamily-optionwrapper\",r),onChange:l,expanded:s,doExpand:d,doCollapse:u,onExpandEvent:p,title:a||c[\"components.controls.fontfamily.fontfamily\"]},S.a.createElement(\"span\",{className:\"rdw-fontfamily-placeholder\"},m||c[\"components.controls.fontfamily.fontfamily\"]),i.map(function(e,t){return S.a.createElement(G,{active:m===e,value:e,key:t},e)})))}}])&&Ae(e.prototype,t),n&&Ae(e,n),i}();Pe.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doExpand:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var Ue=Pe;function Ye(e){return(Ye=\"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})(e)}function Fe(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Re(e,t){return!t||\"object\"!==Ye(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Be(e){return(Be=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Qe(e,t){return(Qe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var He=function(){function o(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,o),(i=Re(this,Be(o).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleFontFamily=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=Object(C.toggleCustomInlineStyle)(n,\"fontFamily\",e);r&&o(r)};var t=e.editorState,n=e.modalHandler;return i.state={expanded:void 0,currentFontFamily:t?Object(C.getSelectionCustomInlineStyle)(t,[\"FONTFAMILY\"]).FONTFAMILY:void 0},n.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Qe(e,t)}(o,m[\"Component\"]),e=o,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentFontFamily:Object(C.getSelectionCustomInlineStyle)(t,[\"FONTFAMILY\"]).FONTFAMILY})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentFontFamily,a=t.component||Ue,c=i&&i.substring(11);return S.a.createElement(a,{translations:n,config:t,currentState:{fontFamily:c},onChange:this.toggleFontFamily,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&Fe(e.prototype,t),n&&Fe(e,n),o}();He.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(18);function Ze(e){return(Ze=\"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})(e)}function We(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Ge(e,t){return!t||\"object\"!==Ze(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Je(e){return(Je=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ve(e,t){return(Ve=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var qe=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Ge(this,(e=Je(i)).call.apply(e,[this].concat(o)))).options=[\"unordered\",\"ordered\",\"indent\",\"outdent\"],t.toggleBlockType=function(e){(0,t.props.onChange)(e)},t.indent=function(){(0,t.props.onChange)(\"indent\")},t.outdent=function(){(0,t.props.onChange)(\"outdent\")},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ve(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=e.currentState.listType,o=e.translations,r=e.indentDisabled,i=e.outdentDisabled,a=t.options,c=t.unordered,l=t.ordered,s=t.indent,u=t.outdent,p=t.className;return S.a.createElement(\"div\",{className:L()(\"rdw-list-wrapper\",p),\"aria-label\":\"rdw-list-control\"},0<=a.indexOf(\"unordered\")&&S.a.createElement(T,{value:\"unordered\",onClick:this.toggleBlockType,className:L()(c.className),active:\"unordered\"===n,title:c.title||o[\"components.controls.list.unordered\"]},S.a.createElement(\"img\",{src:c.icon,alt:\"\"})),0<=a.indexOf(\"ordered\")&&S.a.createElement(T,{value:\"ordered\",onClick:this.toggleBlockType,className:L()(l.className),active:\"ordered\"===n,title:l.title||o[\"components.controls.list.ordered\"]},S.a.createElement(\"img\",{src:l.icon,alt:\"\"})),0<=a.indexOf(\"indent\")&&S.a.createElement(T,{onClick:this.indent,disabled:r,className:L()(s.className),title:s.title||o[\"components.controls.list.indent\"]},S.a.createElement(\"img\",{src:s.icon,alt:\"\"})),0<=a.indexOf(\"outdent\")&&S.a.createElement(T,{onClick:this.outdent,disabled:i,className:L()(u.className),title:u.title||o[\"components.controls.list.outdent\"]},S.a.createElement(\"img\",{src:u.icon,alt:\"\"})))}},{key:\"renderInDropDown\",value:function(){var n=this,e=this.props,o=e.config,t=e.expanded,r=e.doCollapse,i=e.doExpand,a=e.onExpandEvent,c=e.onChange,l=e.currentState.listType,s=e.translations,u=o.options,p=o.className,d=o.dropdownClassName,m=o.title;return S.a.createElement(F,{className:L()(\"rdw-list-dropdown\",p),optionWrapperClassName:L()(d),onChange:c,expanded:t,doExpand:i,doCollapse:r,onExpandEvent:a,\"aria-label\":\"rdw-list-control\",title:m||s[\"components.controls.list.list\"]},S.a.createElement(\"img\",{src:h(o),alt:\"\"}),this.options.filter(function(e){return 0<=u.indexOf(e)}).map(function(e,t){return S.a.createElement(G,{key:t,value:e,disabled:n.props[\"\".concat(e,\"Disabled\")],className:L()(\"rdw-list-dropdownOption\",o[e].className),active:l===e,title:o[e].title||s[\"components.controls.list.\".concat(e)]},S.a.createElement(\"img\",{src:o[e].icon,alt:\"\"}))}))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&We(e.prototype,t),n&&We(e,n),i}();function Ke(e){return(Ke=\"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})(e)}function Xe(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function $e(e,t){return!t||\"object\"!==Ke(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function et(e){return(et=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function tt(e,t){return(tt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}qe.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object,indentDisabled:f.a.bool,outdentDisabled:f.a.bool};var nt=function(){function r(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(i=$e(this,et(r).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.onChange=function(e){\"unordered\"===e?i.toggleBlockType(\"unordered-list-item\"):\"ordered\"===e?i.toggleBlockType(\"ordered-list-item\"):\"indent\"===e?i.adjustDepth(1):i.adjustDepth(-1)},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleBlockType=function(e){var t=i.props,n=t.onChange,o=t.editorState,r=E.RichUtils.toggleBlockType(o,e);r&&n(r)},i.adjustDepth=function(e){var t=i.props,n=t.onChange,o=t.editorState,r=Object(C.changeDepth)(o,e,4);r&&n(r)},i.isIndentDisabled=function(){var e=i.props.editorState,t=i.state.currentBlock,n=Object(C.getBlockBeforeSelectedBlock)(e);return!n||!Object(C.isListBlock)(t)||n.get(\"type\")!==t.get(\"type\")||n.get(\"depth\")<t.get(\"depth\")},i.isOutdentDisabled=function(){var e=i.state.currentBlock;return!e||!Object(C.isListBlock)(e)||e.get(\"depth\")<=0};var t=i.props,n=t.editorState,o=t.modalHandler;return i.state={expanded:!1,currentBlock:n?Object(C.getSelectedBlock)(n):void 0},o.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&tt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentBlock:Object(C.getSelectedBlock)(t)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e,t=this.props,n=t.config,o=t.translations,r=this.state,i=r.expanded,a=r.currentBlock,c=n.component||qe;\"unordered-list-item\"===a.get(\"type\")?e=\"unordered\":\"ordered-list-item\"===a.get(\"type\")&&(e=\"ordered\");var l=this.isIndentDisabled(),s=this.isOutdentDisabled();return S.a.createElement(c,{config:n,translations:o,currentState:{listType:e},expanded:i,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.onChange,indentDisabled:l,outdentDisabled:s})}}])&&Xe(e.prototype,t),n&&Xe(e,n),r}();nt.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(19);function ot(e){return(ot=\"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})(e)}function rt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function it(e,t){return!t||\"object\"!==ot(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function at(e){return(at=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ct(e,t){return(ct=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var lt=function(){function e(){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),it(this,at(e).apply(this,arguments))}var t,n,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ct(e,t)}(e,m[\"Component\"]),t=e,(n=[{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=t.options,o=t.left,r=t.center,i=t.right,a=t.justify,c=t.className,l=e.onChange,s=e.currentState.textAlignment,u=e.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-text-align-wrapper\",c),\"aria-label\":\"rdw-textalign-control\"},0<=n.indexOf(\"left\")&&S.a.createElement(T,{value:\"left\",className:L()(o.className),active:\"left\"===s,onClick:l,title:o.title||u[\"components.controls.textalign.left\"]},S.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"center\")&&S.a.createElement(T,{value:\"center\",className:L()(r.className),active:\"center\"===s,onClick:l,title:r.title||u[\"components.controls.textalign.center\"]},S.a.createElement(\"img\",{src:r.icon,alt:\"\"})),0<=n.indexOf(\"right\")&&S.a.createElement(T,{value:\"right\",className:L()(i.className),active:\"right\"===s,onClick:l,title:i.title||u[\"components.controls.textalign.right\"]},S.a.createElement(\"img\",{src:i.icon,alt:\"\"})),0<=n.indexOf(\"justify\")&&S.a.createElement(T,{value:\"justify\",className:L()(a.className),active:\"justify\"===s,onClick:l,title:a.title||u[\"components.controls.textalign.justify\"]},S.a.createElement(\"img\",{src:a.icon,alt:\"\"})))}},{key:\"renderInDropDown\",value:function(){var e=this.props,t=e.config,n=e.expanded,o=e.doExpand,r=e.onExpandEvent,i=e.doCollapse,a=e.currentState.textAlignment,c=e.onChange,l=e.translations,s=t.options,u=t.left,p=t.center,d=t.right,m=t.justify,f=t.className,g=t.dropdownClassName,y=t.title;return S.a.createElement(F,{className:L()(\"rdw-text-align-dropdown\",f),optionWrapperClassName:L()(g),onChange:c,expanded:n,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-textalign-control\",title:y||l[\"components.controls.textalign.textalign\"]},S.a.createElement(\"img\",{src:a&&t[a]&&t[a].icon||h(t),alt:\"\"}),0<=s.indexOf(\"left\")&&S.a.createElement(G,{value:\"left\",active:\"left\"===a,className:L()(\"rdw-text-align-dropdownOption\",u.className),title:u.title||l[\"components.controls.textalign.left\"]},S.a.createElement(\"img\",{src:u.icon,alt:\"\"})),0<=s.indexOf(\"center\")&&S.a.createElement(G,{value:\"center\",active:\"center\"===a,className:L()(\"rdw-text-align-dropdownOption\",p.className),title:p.title||l[\"components.controls.textalign.center\"]},S.a.createElement(\"img\",{src:p.icon,alt:\"\"})),0<=s.indexOf(\"right\")&&S.a.createElement(G,{value:\"right\",active:\"right\"===a,className:L()(\"rdw-text-align-dropdownOption\",d.className),title:d.title||l[\"components.controls.textalign.right\"]},S.a.createElement(\"img\",{src:d.icon,alt:\"\"})),0<=s.indexOf(\"justify\")&&S.a.createElement(G,{value:\"justify\",active:\"justify\"===a,className:L()(\"rdw-text-align-dropdownOption\",m.className),title:m.title||l[\"components.controls.textalign.justify\"]},S.a.createElement(\"img\",{src:m.icon,alt:\"\"})))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&rt(t.prototype,n),o&&rt(t,o),e}();function st(e){return(st=\"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})(e)}function ut(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function pt(e,t){return!t||\"object\"!==st(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function dt(e){return(dt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function mt(e,t){return(mt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}lt.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var ft=function(){function n(e){var r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),(r=pt(this,dt(n).call(this,e))).onExpandEvent=function(){r.signalExpanded=!r.state.expanded},r.expandCollapse=function(){r.setState({expanded:r.signalExpanded}),r.signalExpanded=!1},r.doExpand=function(){r.setState({expanded:!0})},r.doCollapse=function(){r.setState({expanded:!1})},r.addBlockAlignmentData=function(e){var t=r.props,n=t.editorState,o=t.onChange;o(r.state.currentTextAlignment!==e?Object(C.setBlockData)(n,{\"text-align\":e}):Object(C.setBlockData)(n,{\"text-align\":void 0}))};var t=r.props.modalHandler;return r.state={currentTextAlignment:void 0},t.registerCallBack(r.expandCollapse),r}var e,t,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&mt(e,t)}(n,m[\"Component\"]),e=n,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t!==e.editorState&&this.setState({currentTextAlignment:Object(C.getSelectedBlocksMetadata)(t).get(\"text-align\")})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentTextAlignment,a=t.component||lt;return S.a.createElement(a,{config:t,translations:n,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{textAlignment:i},onChange:this.addBlockAlignmentData})}}])&&ut(e.prototype,t),o&&ut(e,o),n}();ft.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(20);function gt(e){return(gt=\"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})(e)}function yt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ht(e,t){return!t||\"object\"!==gt(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Mt(e){return(Mt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function bt(e,t){return(bt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var jt=function(){function r(){var e,u;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(u=ht(this,(e=Mt(r)).call.apply(e,[this].concat(n)))).state={currentStyle:\"color\"},u.onChange=function(e){(0,u.props.onChange)(u.state.currentStyle,e)},u.setCurrentStyleColor=function(){u.setState({currentStyle:\"color\"})},u.setCurrentStyleBgcolor=function(){u.setState({currentStyle:\"bgcolor\"})},u.renderModal=function(){var e=u.props,t=e.config,n=t.popupClassName,o=t.colors,r=e.currentState,i=r.color,a=r.bgColor,c=e.translations,l=u.state.currentStyle,s=\"color\"===l?i:a;return S.a.createElement(\"div\",{className:L()(\"rdw-colorpicker-modal\",n),onClick:d},S.a.createElement(\"span\",{className:\"rdw-colorpicker-modal-header\"},S.a.createElement(\"span\",{className:L()(\"rdw-colorpicker-modal-style-label\",{\"rdw-colorpicker-modal-style-label-active\":\"color\"===l}),onClick:u.setCurrentStyleColor},c[\"components.controls.colorpicker.text\"]),S.a.createElement(\"span\",{className:L()(\"rdw-colorpicker-modal-style-label\",{\"rdw-colorpicker-modal-style-label-active\":\"bgcolor\"===l}),onClick:u.setCurrentStyleBgcolor},c[\"components.controls.colorpicker.background\"])),S.a.createElement(\"span\",{className:\"rdw-colorpicker-modal-options\"},o.map(function(e,t){return S.a.createElement(T,{value:e,key:t,className:\"rdw-colorpicker-option\",activeClassName:\"rdw-colorpicker-option-active\",active:s===e,onClick:u.onChange},S.a.createElement(\"span\",{style:{backgroundColor:e},className:\"rdw-colorpicker-cube\"}))})))},u}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&bt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){this.props.expanded&&!e.expanded&&this.setState({currentStyle:\"color\"})}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-colorpicker-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-color-picker\",title:r||c[\"components.controls.colorpicker.colorpicker\"]},S.a.createElement(T,{onClick:a,className:L()(o)},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderModal():void 0)}}])&&yt(e.prototype,t),n&&yt(e,n),r}();jt.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var Nt=jt;function St(e){return(St=\"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})(e)}function Et(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Ct(e,t){return!t||\"object\"!==St(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Lt(e){return(Lt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function kt(e,t){return(kt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Dt=function(){function r(e){var a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(a=Ct(this,Lt(r).call(this,e))).state={expanded:!1,currentColor:void 0,currentBgColor:void 0},a.onExpandEvent=function(){a.signalExpanded=!a.state.expanded},a.expandCollapse=function(){a.setState({expanded:a.signalExpanded}),a.signalExpanded=!1},a.doExpand=function(){a.setState({expanded:!0})},a.doCollapse=function(){a.setState({expanded:!1})},a.toggleColor=function(e,t){var n=a.props,o=n.editorState,r=n.onChange,i=Object(C.toggleCustomInlineStyle)(o,e,t);i&&r(i),a.doCollapse()};var t=e.editorState,n=e.modalHandler,o={expanded:!1,currentColor:void 0,currentBgColor:void 0};return t&&(o.currentColor=Object(C.getSelectionCustomInlineStyle)(t,[\"COLOR\"]).COLOR,o.currentBgColor=Object(C.getSelectionCustomInlineStyle)(t,[\"BGCOLOR\"]).BGCOLOR),a.state=o,n.registerCallBack(a.expandCollapse),a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&kt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentColor:Object(C.getSelectionCustomInlineStyle)(t,[\"COLOR\"]).COLOR,currentBgColor:Object(C.getSelectionCustomInlineStyle)(t,[\"BGCOLOR\"]).BGCOLOR})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.currentColor,i=o.currentBgColor,a=o.expanded,c=t.component||Nt,l=r&&r.substring(6),s=i&&i.substring(8);return S.a.createElement(c,{config:t,translations:n,onChange:this.toggleColor,expanded:a,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{color:l,bgColor:s}})}}])&&Et(e.prototype,t),n&&Et(e,n),r}();Dt.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var vt=Dt,wt=n(7),xt=n.n(wt);n(26);function It(e){return(It=\"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})(e)}function Ot(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function At(e,t){return!t||\"object\"!==It(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Tt(e){return(Tt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function zt(e,t){return(zt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var _t=function(){function r(){var e,a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(a=At(this,(e=Tt(r)).call.apply(e,[this].concat(n)))).state={showModal:!1,linkTarget:\"\",linkTitle:\"\",linkTargetOption:a.props.config.defaultTargetOption},a.removeLink=function(){(0,a.props.onChange)(\"unlink\")},a.addLink=function(){var e=a.props.onChange,t=a.state;e(\"link\",t.linkTitle,t.linkTarget,t.linkTargetOption)},a.updateValue=function(e){var t,n,o;a.setState((t={},n=\"\".concat(e.target.name),o=e.target.value,n in t?Object.defineProperty(t,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[n]=o,t))},a.updateTargetOption=function(e){a.setState({linkTargetOption:e.target.checked?\"_blank\":\"_self\"})},a.hideModal=function(){a.setState({showModal:!1})},a.signalExpandShowModal=function(){var e=a.props,t=e.onExpandEvent,n=e.currentState,o=n.link,r=n.selectionText,i=a.state.linkTargetOption;t(),a.setState({showModal:!0,linkTarget:o&&o.target||\"\",linkTargetOption:o&&o.targetOption||i,linkTitle:o&&o.title||r})},a.forceExpandAndShowModal=function(){var e=a.props,t=e.doExpand,n=e.currentState,o=n.link,r=n.selectionText,i=a.state.linkTargetOption;t(),a.setState({showModal:!0,linkTarget:o&&o.target,linkTargetOption:o&&o.targetOption||i,linkTitle:o&&o.title||r})},a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&zt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){e.expanded&&!this.props.expanded&&this.setState({showModal:!1,linkTarget:\"\",linkTitle:\"\",linkTargetOption:this.props.config.defaultTargetOption})}},{key:\"renderAddLinkModal\",value:function(){var e=this.props,t=e.config.popupClassName,n=e.doCollapse,o=e.translations,r=this.state,i=r.linkTitle,a=r.linkTarget,c=r.linkTargetOption;return S.a.createElement(\"div\",{className:L()(\"rdw-link-modal\",t),onClick:d},S.a.createElement(\"label\",{className:\"rdw-link-modal-label\",htmlFor:\"linkTitle\"},o[\"components.controls.link.linkTitle\"]),S.a.createElement(\"input\",{id:\"linkTitle\",className:\"rdw-link-modal-input\",onChange:this.updateValue,onBlur:this.updateValue,name:\"linkTitle\",value:i}),S.a.createElement(\"label\",{className:\"rdw-link-modal-label\",htmlFor:\"linkTarget\"},o[\"components.controls.link.linkTarget\"]),S.a.createElement(\"input\",{id:\"linkTarget\",className:\"rdw-link-modal-input\",onChange:this.updateValue,onBlur:this.updateValue,name:\"linkTarget\",value:a}),S.a.createElement(\"label\",{className:\"rdw-link-modal-target-option\",htmlFor:\"openLinkInNewWindow\"},S.a.createElement(\"input\",{id:\"openLinkInNewWindow\",type:\"checkbox\",defaultChecked:\"_blank\"===c,value:\"_blank\",onChange:this.updateTargetOption}),S.a.createElement(\"span\",null,o[\"components.controls.link.linkTargetOption\"])),S.a.createElement(\"span\",{className:\"rdw-link-modal-buttonsection\"},S.a.createElement(\"button\",{className:\"rdw-link-modal-btn\",onClick:this.addLink,disabled:!a||!i},o[\"generic.add\"]),S.a.createElement(\"button\",{className:\"rdw-link-modal-btn\",onClick:n},o[\"generic.cancel\"])))}},{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=t.options,o=t.link,r=t.unlink,i=t.className,a=e.currentState,c=e.expanded,l=e.translations,s=this.state.showModal;return S.a.createElement(\"div\",{className:L()(\"rdw-link-wrapper\",i),\"aria-label\":\"rdw-link-control\"},0<=n.indexOf(\"link\")&&S.a.createElement(T,{value:\"unordered-list-item\",className:L()(o.className),onClick:this.signalExpandShowModal,\"aria-haspopup\":\"true\",\"aria-expanded\":s,title:o.title||l[\"components.controls.link.link\"]},S.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"unlink\")&&S.a.createElement(T,{disabled:!a.link,value:\"ordered-list-item\",className:L()(r.className),onClick:this.removeLink,title:r.title||l[\"components.controls.link.unlink\"]},S.a.createElement(\"img\",{src:r.icon,alt:\"\"})),c&&s?this.renderAddLinkModal():void 0)}},{key:\"renderInDropDown\",value:function(){var e=this.props,t=e.expanded,n=e.onExpandEvent,o=e.doCollapse,r=e.doExpand,i=e.onChange,a=e.config,c=e.currentState,l=e.translations,s=a.options,u=a.link,p=a.unlink,d=a.className,m=a.dropdownClassName,f=a.title,g=this.state.showModal;return S.a.createElement(\"div\",{className:\"rdw-link-wrapper\",\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-link-control\",\"aria-expanded\":t,title:f},S.a.createElement(F,{className:L()(\"rdw-link-dropdown\",d),optionWrapperClassName:L()(m),onChange:i,expanded:t&&!g,doExpand:r,doCollapse:o,onExpandEvent:n},S.a.createElement(\"img\",{src:h(a),alt:\"\"}),0<=s.indexOf(\"link\")&&S.a.createElement(G,{onClick:this.forceExpandAndShowModal,className:L()(\"rdw-link-dropdownoption\",u.className),title:u.title||l[\"components.controls.link.link\"]},S.a.createElement(\"img\",{src:u.icon,alt:\"\"})),0<=s.indexOf(\"unlink\")&&S.a.createElement(G,{onClick:this.removeLink,disabled:!c.link,className:L()(\"rdw-link-dropdownoption\",p.className),title:p.title||l[\"components.controls.link.unlink\"]},S.a.createElement(\"img\",{src:p.icon,alt:\"\"}))),t&&g?this.renderAddLinkModal():void 0)}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&Ot(e.prototype,t),n&&Ot(e,n),r}();_t.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var Pt=_t;function Ut(e){return(Ut=\"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})(e)}function Yt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Ft(e,t){return!t||\"object\"!==Ut(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Rt(e){return(Rt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Bt(e,t){return(Bt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Qt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function Ht(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Zt(e){var t=Wt.match(e.target);return function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Qt(Object(n),!0).forEach(function(e){Ht(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Qt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},e,{target:t&&t[0]&&t[0].url||e.target})}var Wt=xt()(),Gt=function(){function r(e){var d;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(d=Ft(this,Rt(r).call(this,e))).onExpandEvent=function(){d.signalExpanded=!d.state.expanded},d.onChange=function(e,t,n,o){var r=d.props.config.linkCallback;if(\"link\"===e){var i=(r||Zt)({title:t,target:n,targetOption:o});d.addLink(i.title,i.target,i.targetOption)}else d.removeLink()},d.getCurrentValues=function(){var e=d.props.editorState,t=d.state.currentEntity,n=e.getCurrentContent(),o={};if(t&&\"LINK\"===n.getEntity(t).get(\"type\")){o.link={};var r=t&&Object(C.getEntityRange)(e,t);o.link.target=t&&n.getEntity(t).get(\"data\").url,o.link.targetOption=t&&n.getEntity(t).get(\"data\").targetOption,o.link.title=r&&r.text}return o.selectionText=Object(C.getSelectionText)(e),o},d.doExpand=function(){d.setState({expanded:!0})},d.expandCollapse=function(){d.setState({expanded:d.signalExpanded}),d.signalExpanded=!1},d.doCollapse=function(){d.setState({expanded:!1})},d.removeLink=function(){var e=d.props,t=e.editorState,n=e.onChange,o=d.state.currentEntity,r=t.getSelection();if(o){var i=Object(C.getEntityRange)(t,o);r=r.getIsBackward()?r.merge({anchorOffset:i.end,focusOffset:i.start}):r.merge({anchorOffset:i.start,focusOffset:i.end}),n(E.RichUtils.toggleLink(t,r,null))}},d.addLink=function(e,t,n){var o=d.props,r=o.editorState,i=o.onChange,a=d.state.currentEntity,c=r.getSelection();if(a){var l=Object(C.getEntityRange)(r,a);c=c.getIsBackward()?c.merge({anchorOffset:l.end,focusOffset:l.start}):c.merge({anchorOffset:l.start,focusOffset:l.end})}var s=r.getCurrentContent().createEntity(\"LINK\",\"MUTABLE\",{url:t,targetOption:n}).getLastCreatedEntityKey(),u=E.Modifier.replaceText(r.getCurrentContent(),c,\"\".concat(e),r.getCurrentInlineStyle(),s),p=E.EditorState.push(r,u,\"insert-characters\");c=p.getSelection().merge({anchorOffset:c.get(\"anchorOffset\")+e.length,focusOffset:c.get(\"anchorOffset\")+e.length}),p=E.EditorState.acceptSelection(p,c),u=E.Modifier.insertText(p.getCurrentContent(),c,\" \",p.getCurrentInlineStyle(),void 0),i(E.EditorState.push(p,u,\"insert-characters\")),d.doCollapse()};var t=d.props,n=t.editorState,o=t.modalHandler;return d.state={expanded:!1,link:void 0,selectionText:void 0,currentEntity:n?Object(C.getSelectionEntity)(n):void 0},o.registerCallBack(d.expandCollapse),d}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Bt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentEntity:Object(C.getSelectionEntity)(t)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=this.getCurrentValues(),i=r.link,a=r.selectionText,c=t.component||Pt;return S.a.createElement(c,{config:t,translations:n,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{link:i,selectionText:a},onChange:this.onChange})}}])&&Yt(e.prototype,t),n&&Yt(e,n),r}();Gt.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var Jt=Gt;n(27);function Vt(e){return(Vt=\"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})(e)}function qt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Kt(e,t){return!t||\"object\"!==Vt(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Xt(e){return(Xt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function $t(e,t){return($t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var en=function(){function i(){var e,r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(r=Kt(this,(e=Xt(i)).call.apply(e,[this].concat(n)))).state={embeddedLink:\"\",height:r.props.config.defaultSize.height,width:r.props.config.defaultSize.width},r.onChange=function(){var e=r.props.onChange,t=r.state;e(t.embeddedLink,t.height,t.width)},r.updateValue=function(e){var t,n,o;r.setState((t={},n=\"\".concat(e.target.name),o=e.target.value,n in t?Object.defineProperty(t,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[n]=o,t))},r}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&$t(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props,n=t.expanded,o=t.config;if(!n&&e.expanded){var r=o.defaultSize,i=r.height,a=r.width;this.setState({embeddedLink:\"\",height:i,width:a})}}},{key:\"rendeEmbeddedLinkModal\",value:function(){var e=this.state,t=e.embeddedLink,n=e.height,o=e.width,r=this.props,i=r.config.popupClassName,a=r.doCollapse,c=r.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-embedded-modal\",i),onClick:d},S.a.createElement(\"div\",{className:\"rdw-embedded-modal-header\"},S.a.createElement(\"span\",{className:\"rdw-embedded-modal-header-option\"},c[\"components.controls.embedded.embeddedlink\"],S.a.createElement(\"span\",{className:\"rdw-embedded-modal-header-label\"}))),S.a.createElement(\"div\",{className:\"rdw-embedded-modal-link-section\"},S.a.createElement(\"span\",{className:\"rdw-embedded-modal-link-input-wrapper\"},S.a.createElement(\"input\",{className:\"rdw-embedded-modal-link-input\",placeholder:c[\"components.controls.embedded.enterlink\"],onChange:this.updateValue,onBlur:this.updateValue,value:t,name:\"embeddedLink\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),S.a.createElement(\"div\",{className:\"rdw-embedded-modal-size\"},S.a.createElement(\"span\",null,S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:n,name:\"height\",className:\"rdw-embedded-modal-size-input\",placeholder:\"Height\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),S.a.createElement(\"span\",null,S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:o,name:\"width\",className:\"rdw-embedded-modal-size-input\",placeholder:\"Width\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")))),S.a.createElement(\"span\",{className:\"rdw-embedded-modal-btn-section\"},S.a.createElement(\"button\",{type:\"button\",className:\"rdw-embedded-modal-btn\",onClick:this.onChange,disabled:!t||!n||!o},c[\"generic.add\"]),S.a.createElement(\"button\",{type:\"button\",className:\"rdw-embedded-modal-btn\",onClick:a},c[\"generic.cancel\"])))}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-embedded-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-embedded-control\"},S.a.createElement(T,{className:L()(o),value:\"unordered-list-item\",onClick:a,title:r||c[\"components.controls.embedded.embedded\"]},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.rendeEmbeddedLinkModal():void 0)}}])&&qt(e.prototype,t),n&&qt(e,n),i}();en.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,onChange:f.a.func,config:f.a.object,translations:f.a.object,doCollapse:f.a.func};var tn=en;function nn(e){return(nn=\"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})(e)}function on(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function rn(e,t){return!t||\"object\"!==nn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function an(e){return(an=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function cn(e,t){return(cn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var ln=function(){function r(){var e,s;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(s=rn(this,(e=an(r)).call.apply(e,[this].concat(n)))).state={expanded:!1},s.onExpandEvent=function(){s.signalExpanded=!s.state.expanded},s.expandCollapse=function(){s.setState({expanded:s.signalExpanded}),s.signalExpanded=!1},s.doExpand=function(){s.setState({expanded:!0})},s.doCollapse=function(){s.setState({expanded:!1})},s.addEmbeddedLink=function(e,t,n){var o=s.props,r=o.editorState,i=o.onChange,a=o.config.embedCallback,c=a?a(e):e,l=r.getCurrentContent().createEntity(\"EMBEDDED_LINK\",\"MUTABLE\",{src:c,height:t,width:n}).getLastCreatedEntityKey();i(E.AtomicBlockUtils.insertAtomicBlock(r,l,\" \")),s.doCollapse()},s}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&cn(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||tn;return S.a.createElement(r,{config:t,translations:n,onChange:this.addEmbeddedLink,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&on(e.prototype,t),n&&on(e,n),r}();ln.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var sn=ln;n(28);function un(e){return(un=\"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})(e)}function pn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function dn(e,t){return!t||\"object\"!==un(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function mn(e){return(mn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function fn(e,t){return(fn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var gn=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=dn(this,(e=mn(i)).call.apply(e,[this].concat(o)))).onChange=function(e){(0,t.props.onChange)(e.target.innerHTML)},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&fn(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"renderEmojiModal\",value:function(){var n=this,e=this.props.config,t=e.popupClassName,o=e.emojis;return S.a.createElement(\"div\",{className:L()(\"rdw-emoji-modal\",t),onClick:d},o.map(function(e,t){return S.a.createElement(\"span\",{key:t,className:\"rdw-emoji-icon\",alt:\"\",onClick:n.onChange},e)}))}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-emoji-wrapper\",\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-emoji-control\",\"aria-expanded\":i,title:r||c[\"components.controls.emoji.emoji\"]},S.a.createElement(T,{className:L()(o),value:\"unordered-list-item\",onClick:a},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderEmojiModal():void 0)}}])&&pn(e.prototype,t),n&&pn(e,n),i}();gn.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,onChange:f.a.func,config:f.a.object,translations:f.a.object};var yn=gn;function hn(e){return(hn=\"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})(e)}function Mn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function bn(e,t){return!t||\"object\"!==hn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function jn(e){return(jn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Nn(e,t){return(Nn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Sn=function(){function r(){var e,i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(i=bn(this,(e=jn(r)).call.apply(e,[this].concat(n)))).state={expanded:!1},i.onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.addEmoji=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=E.Modifier.replaceText(n.getCurrentContent(),n.getSelection(),e,n.getCurrentInlineStyle());o(E.EditorState.push(n,r,\"insert-characters\")),i.doCollapse()},i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Nn(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||yn;return S.a.createElement(r,{config:t,translations:n,onChange:this.addEmoji,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onCollpase:this.closeModal})}}])&&Mn(e.prototype,t),n&&Mn(e,n),r}();Sn.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};function En(){return S.a.createElement(\"div\",{className:\"rdw-spinner\"},S.a.createElement(\"div\",{className:\"rdw-bounce1\"}),S.a.createElement(\"div\",{className:\"rdw-bounce2\"}),S.a.createElement(\"div\",{className:\"rdw-bounce3\"}))}n(29),n(30);function Cn(e){return(Cn=\"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})(e)}function Ln(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function kn(e,t){return!t||\"object\"!==Cn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Dn(e){return(Dn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function vn(e,t){return(vn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var wn=function(){function r(){var e,c;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(c=kn(this,(e=Dn(r)).call.apply(e,[this].concat(n)))).state={imgSrc:\"\",dragEnter:!1,uploadHighlighted:c.props.config.uploadEnabled&&!!c.props.config.uploadCallback,showImageLoading:!1,height:c.props.config.defaultSize.height,width:c.props.config.defaultSize.width,alt:\"\"},c.onDragEnter=function(e){c.stopPropagation(e),c.setState({dragEnter:!0})},c.onImageDrop=function(e){var t,n;e.preventDefault(),e.stopPropagation(),c.setState({dragEnter:!1}),n=e.dataTransfer.items?(t=e.dataTransfer.items,!0):(t=e.dataTransfer.files,!1);for(var o=0;o<t.length;o+=1)if((!n||\"file\"===t[o].kind)&&t[o].type.match(\"^image/\")){var r=n?t[o].getAsFile():t[o];c.uploadImage(r)}},c.showImageUploadOption=function(){c.setState({uploadHighlighted:!0})},c.addImageFromState=function(){var e=c.state,t=e.imgSrc,n=e.alt,o=c.state,r=o.height,i=o.width,a=c.props.onChange;isNaN(r)||(r+=\"px\"),isNaN(i)||(i+=\"px\"),a(t,r,i,n)},c.showImageURLOption=function(){c.setState({uploadHighlighted:!1})},c.toggleShowImageLoading=function(){var e=!c.state.showImageLoading;c.setState({showImageLoading:e})},c.updateValue=function(e){var t,n,o;c.setState((t={},n=\"\".concat(e.target.name),o=e.target.value,n in t?Object.defineProperty(t,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[n]=o,t))},c.selectImage=function(e){e.target.files&&0<e.target.files.length&&c.uploadImage(e.target.files[0])},c.uploadImage=function(e){c.toggleShowImageLoading(),(0,c.props.config.uploadCallback)(e).then(function(e){var t=e.data;c.setState({showImageLoading:!1,dragEnter:!1,imgSrc:t.link||t.url}),c.fileUpload=!1}).catch(function(){c.setState({showImageLoading:!1,dragEnter:!1})})},c.fileUploadClick=function(e){c.fileUpload=!0,e.stopPropagation()},c.stopPropagation=function(e){c.fileUpload?c.fileUpload=!1:(e.preventDefault(),e.stopPropagation())},c}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&vn(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.config;e.expanded&&!this.props.expanded?this.setState({imgSrc:\"\",dragEnter:!1,uploadHighlighted:t.uploadEnabled&&!!t.uploadCallback,showImageLoading:!1,height:t.defaultSize.height,width:t.defaultSize.width,alt:\"\"}):t.uploadCallback===e.config.uploadCallback&&t.uploadEnabled===e.config.uploadEnabled||this.setState({uploadHighlighted:t.uploadEnabled&&!!t.uploadCallback})}},{key:\"renderAddImageModal\",value:function(){var e=this.state,t=e.imgSrc,n=e.uploadHighlighted,o=e.showImageLoading,r=e.dragEnter,i=e.height,a=e.width,c=e.alt,l=this.props,s=l.config,u=s.popupClassName,p=s.uploadCallback,d=s.uploadEnabled,m=s.urlEnabled,f=s.previewImage,g=s.inputAccept,y=s.alt,h=l.doCollapse,M=l.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-image-modal\",u),onClick:this.stopPropagation},S.a.createElement(\"div\",{className:\"rdw-image-modal-header\"},d&&p&&S.a.createElement(\"span\",{onClick:this.showImageUploadOption,className:\"rdw-image-modal-header-option\"},M[\"components.controls.image.fileUpload\"],S.a.createElement(\"span\",{className:L()(\"rdw-image-modal-header-label\",{\"rdw-image-modal-header-label-highlighted\":n})})),m&&S.a.createElement(\"span\",{onClick:this.showImageURLOption,className:\"rdw-image-modal-header-option\"},M[\"components.controls.image.byURL\"],S.a.createElement(\"span\",{className:L()(\"rdw-image-modal-header-label\",{\"rdw-image-modal-header-label-highlighted\":!n})}))),n?S.a.createElement(\"div\",{onClick:this.fileUploadClick},S.a.createElement(\"div\",{onDragEnter:this.onDragEnter,onDragOver:this.stopPropagation,onDrop:this.onImageDrop,className:L()(\"rdw-image-modal-upload-option\",{\"rdw-image-modal-upload-option-highlighted\":r})},S.a.createElement(\"label\",{htmlFor:\"file\",className:\"rdw-image-modal-upload-option-label\"},f&&t?S.a.createElement(\"img\",{src:t,alt:t,className:\"rdw-image-modal-upload-option-image-preview\"}):t||M[\"components.controls.image.dropFileText\"])),S.a.createElement(\"input\",{type:\"file\",id:\"file\",accept:g,onChange:this.selectImage,className:\"rdw-image-modal-upload-option-input\"})):S.a.createElement(\"div\",{className:\"rdw-image-modal-url-section\"},S.a.createElement(\"input\",{className:\"rdw-image-modal-url-input\",placeholder:M[\"components.controls.image.enterlink\"],name:\"imgSrc\",onChange:this.updateValue,onBlur:this.updateValue,value:t}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),y.present&&S.a.createElement(\"div\",{className:\"rdw-image-modal-size\"},S.a.createElement(\"span\",{className:\"rdw-image-modal-alt-lbl\"},\"Alt Text\"),S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:c,name:\"alt\",className:\"rdw-image-modal-alt-input\",placeholder:\"alt\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},y.mandatory&&\"*\")),S.a.createElement(\"div\",{className:\"rdw-image-modal-size\"},\"↕ \",S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:i,name:\"height\",className:\"rdw-image-modal-size-input\",placeholder:\"Height\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\"),\" ↔ \",S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:a,name:\"width\",className:\"rdw-image-modal-size-input\",placeholder:\"Width\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),S.a.createElement(\"span\",{className:\"rdw-image-modal-btn-section\"},S.a.createElement(\"button\",{className:\"rdw-image-modal-btn\",onClick:this.addImageFromState,disabled:!t||!i||!a||y.mandatory&&!c},M[\"generic.add\"]),S.a.createElement(\"button\",{className:\"rdw-image-modal-btn\",onClick:h},M[\"generic.cancel\"])),o?S.a.createElement(\"div\",{className:\"rdw-image-modal-spinner\"},S.a.createElement(En,null)):void 0)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-image-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-image-control\"},S.a.createElement(T,{className:L()(o),value:\"unordered-list-item\",onClick:a,title:r||c[\"components.controls.image.image\"]},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderAddImageModal():void 0)}}])&&Ln(e.prototype,t),n&&Ln(e,n),r}();wn.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,translations:f.a.object};var xn=wn;function In(e){return(In=\"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})(e)}function On(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function An(e,t){return!t||\"object\"!==In(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Tn(e){return(Tn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function zn(e,t){return(zn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var _n=function(){function n(e){var s;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),(s=An(this,Tn(n).call(this,e))).onExpandEvent=function(){s.signalExpanded=!s.state.expanded},s.doExpand=function(){s.setState({expanded:!0})},s.doCollapse=function(){s.setState({expanded:!1})},s.expandCollapse=function(){s.setState({expanded:s.signalExpanded}),s.signalExpanded=!1},s.addImage=function(e,t,n,o){var r=s.props,i=r.editorState,a=r.onChange,c={src:e,height:t,width:n};r.config.alt.present&&(c.alt=o);var l=i.getCurrentContent().createEntity(\"IMAGE\",\"MUTABLE\",c).getLastCreatedEntityKey();a(E.AtomicBlockUtils.insertAtomicBlock(i,l,\" \")),s.doCollapse()};var t=s.props.modalHandler;return s.state={expanded:!1},t.registerCallBack(s.expandCollapse),s}var e,t,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&zn(e,t)}(n,m[\"Component\"]),e=n,(t=[{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||xn;return S.a.createElement(r,{config:t,translations:n,onChange:this.addImage,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&On(e.prototype,t),o&&On(e,o),n}();_n.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};function Pn(e){var t=e.config,n=e.onChange,o=e.translations,r=t.icon,i=t.className,a=t.title;return S.a.createElement(\"div\",{className:\"rdw-remove-wrapper\",\"aria-label\":\"rdw-remove-control\"},S.a.createElement(T,{className:L()(i),onClick:n,title:a||o[\"components.controls.remove.remove\"]},S.a.createElement(\"img\",{src:r,alt:\"\"})))}var Un=_n;n(31);Pn.propTypes={onChange:f.a.func,config:f.a.object,translations:f.a.object};var Yn=Pn;function Fn(e){return(Fn=\"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})(e)}function Rn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Bn(e,t){return!t||\"object\"!==Fn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Qn(e){return(Qn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Hn(e,t){return(Hn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Zn=function(){function i(){var e,n;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];return(n=Bn(this,(e=Qn(i)).call.apply(e,[this].concat(o)))).state={expanded:!1},n.onExpandEvent=function(){n.signalExpanded=!n.state.expanded},n.expandCollapse=function(){n.setState({expanded:n.signalExpanded}),n.signalExpanded=!1},n.removeInlineStyles=function(){var e=n.props,t=e.editorState;(0,e.onChange)(n.removeAllInlineStyles(t))},n.removeAllInlineStyles=function(n){var o=n.getCurrentContent();return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"MONOSPACE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(e){o=E.Modifier.removeInlineStyle(o,n.getSelection(),e)}),u(Object(C.getSelectionCustomInlineStyle)(n,[\"FONTSIZE\",\"FONTFAMILY\",\"COLOR\",\"BGCOLOR\"]),function(e,t){t&&(o=E.Modifier.removeInlineStyle(o,n.getSelection(),t))}),E.EditorState.push(n,o,\"change-inline-style\")},n.doExpand=function(){n.setState({expanded:!0})},n.doCollapse=function(){n.setState({expanded:!1})},n}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Hn(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||Yn;return S.a.createElement(r,{config:t,translations:n,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.removeInlineStyles})}}])&&Rn(e.prototype,t),n&&Rn(e,n),i}();Zn.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,config:f.a.object,translations:f.a.object,modalHandler:f.a.object};n(32);function Wn(e){return(Wn=\"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})(e)}function Gn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Jn(e,t){return!t||\"object\"!==Wn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Vn(e){return(Vn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function qn(e,t){return(qn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Kn=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Jn(this,(e=Vn(i)).call.apply(e,[this].concat(o)))).onChange=function(e){(0,t.props.onChange)(e)},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&qn(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"renderInDropDown\",value:function(){var e=this.props,t=e.config,n=e.expanded,o=e.doExpand,r=e.onExpandEvent,i=e.doCollapse,a=e.currentState,c=a.undoDisabled,l=a.redoDisabled,s=e.translations,u=t.options,p=t.undo,d=t.redo,m=t.className,f=t.dropdownClassName,g=t.title;return S.a.createElement(F,{className:L()(\"rdw-history-dropdown\",m),optionWrapperClassName:L()(f),expanded:n,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-history-control\",title:g||s[\"components.controls.history.history\"]},S.a.createElement(\"img\",{src:h(t),alt:\"\"}),0<=u.indexOf(\"undo\")&&S.a.createElement(G,{value:\"undo\",onClick:this.onChange,disabled:c,className:L()(\"rdw-history-dropdownoption\",p.className),title:p.title||s[\"components.controls.history.undo\"]},S.a.createElement(\"img\",{src:p.icon,alt:\"\"})),0<=u.indexOf(\"redo\")&&S.a.createElement(G,{value:\"redo\",onClick:this.onChange,disabled:l,className:L()(\"rdw-history-dropdownoption\",d.className),title:d.title||s[\"components.controls.history.redo\"]},S.a.createElement(\"img\",{src:d.icon,alt:\"\"})))}},{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=t.options,o=t.undo,r=t.redo,i=t.className,a=e.currentState,c=a.undoDisabled,l=a.redoDisabled,s=e.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-history-wrapper\",i),\"aria-label\":\"rdw-history-control\"},0<=n.indexOf(\"undo\")&&S.a.createElement(T,{value:\"undo\",onClick:this.onChange,className:L()(o.className),disabled:c,title:o.title||s[\"components.controls.history.undo\"]},S.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"redo\")&&S.a.createElement(T,{value:\"redo\",onClick:this.onChange,className:L()(r.className),disabled:l,title:r.title||s[\"components.controls.history.redo\"]},S.a.createElement(\"img\",{src:r.icon,alt:\"\"})))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&Gn(e.prototype,t),n&&Gn(e,n),i}();function Xn(e){return(Xn=\"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})(e)}function $n(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function eo(e,t){return!t||\"object\"!==Xn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function to(e){return(to=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function no(e,t){return(no=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}Kn.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var oo=function(){function r(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(i=eo(this,to(r).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.onChange=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=E.EditorState[e](n);r&&o(r)},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})};var t={expanded:!(i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1}),undoDisabled:!1,redoDisabled:!1},n=e.editorState,o=e.modalHandler;return n&&(t.undoDisabled=0===n.getUndoStack().size,t.redoDisabled=0===n.getRedoStack().size),i.state=t,o.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&no(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&e.editorState!==t&&this.setState({undoDisabled:0===t.getUndoStack().size,redoDisabled:0===t.getRedoStack().size})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.undoDisabled,i=o.redoDisabled,a=o.expanded,c=t.component||Kn;return S.a.createElement(c,{config:t,translations:n,currentState:{undoDisabled:r,redoDisabled:i},expanded:a,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.onChange})}}])&&$n(e.prototype,t),n&&$n(e,n),r}();oo.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var ro={inline:ie,blockType:be,fontSize:Ie,fontFamily:He,list:nt,textAlign:ft,colorPicker:vt,link:Jt,embedded:sn,emoji:Sn,image:Un,remove:Zn,history:oo},io=/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g,ao=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i;function co(e){return String(e).replace(io,\"\").match(ao)?e:\"#\"}n(33);function lo(e){return(lo=\"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})(e)}function so(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function uo(e,t){return!t||\"object\"!==lo(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function po(e){return(po=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function mo(e,t){return(mo=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function fo(e,t,n){e.findEntityRanges(function(e){var t=e.getEntity();return null!==t&&\"LINK\"===n.getEntity(t).getType()},t)}function go(e){var t,n,c=e.showOpenOptionOnHover;return n=t=function(){function i(){var e,r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(r=uo(this,(e=po(i)).call.apply(e,[this].concat(n)))).state={showPopOver:!1},r.openLink=function(){var e=r.props,t=e.entityKey,n=e.contentState.getEntity(t).getData().url,o=window.open(co(n),\"blank\");o&&o.focus()},r.toggleShowPopOver=function(){var e=!r.state.showPopOver;r.setState({showPopOver:e})},r}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&mo(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"render\",value:function(){var e=this.props,t=e.children,n=e.entityKey,o=e.contentState.getEntity(n).getData(),r=o.url,i=o.targetOption,a=this.state.showPopOver;return S.a.createElement(\"span\",{className:\"rdw-link-decorator-wrapper\",onMouseEnter:this.toggleShowPopOver,onMouseLeave:this.toggleShowPopOver},S.a.createElement(\"a\",{href:co(r),target:i},t),a&&c?S.a.createElement(\"img\",{src:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuMDcyIDBIOC45MTVhLjkyNS45MjUgMCAwIDAgMCAxLjg0OWgyLjkyNUw2Ljk2MSA2LjcyN2EuOTE4LjkxOCAwIDAgMC0uMjcuNjU0YzAgLjI0Ny4wOTUuNDguMjcuNjU0YS45MTguOTE4IDAgMCAwIC42NTQuMjcuOTE4LjkxOCAwIDAgMCAuNjUzLS4yN2w0Ljg4LTQuODh2Mi45MjZhLjkyNS45MjUgMCAwIDAgMS44NDggMFYuOTI0QS45MjUuOTI1IDAgMCAwIDE0LjA3MiAweiIvPjxwYXRoIGQ9Ik0xMC42MjMgMTMuNDExSDEuNTg1VjQuMzcyaDYuNzk4bDEuNTg0LTEuNTg0SC43OTJBLjc5Mi43OTIgMCAwIDAgMCAzLjU4djEwLjYyNGMwIC40MzcuMzU1Ljc5Mi43OTIuNzkyaDEwLjYyNGEuNzkyLjc5MiAwIDAgMCAuNzkyLS43OTJWNS4wMjlsLTEuNTg1IDEuNTg0djYuNzk4eiIvPjwvZz48L3N2Zz4=\",alt:\"\",onClick:this.openLink,className:\"rdw-link-decorator-icon\"}):void 0)}}])&&so(e.prototype,t),n&&so(e,n),i}(),t.propTypes={entityKey:f.a.string.isRequired,children:f.a.array,contentState:f.a.object},n}n(34);function yo(e){var t=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,yo),this.getMentionComponent=function(){function e(e){var t=e.entityKey,n=e.children,o=e.contentState.getEntity(t).getData(),r=o.url,i=o.value;return S.a.createElement(\"a\",{href:r||i,className:L()(\"rdw-mention-link\",a)},n)}var a=t.className;return e.propTypes={entityKey:f.a.number,children:f.a.array,contentState:f.a.object},e},this.getMentionDecorator=function(){return{strategy:t.findMentionEntities,component:t.getMentionComponent()}},this.className=e}yo.prototype.findMentionEntities=function(e,t,n){e.findEntityRanges(function(e){var t=e.getEntity();return null!==t&&\"MENTION\"===n.getEntity(t).getType()},t)};var ho=yo;n(35);function Mo(e){return(Mo=\"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})(e)}function bo(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function jo(e,t){return!t||\"object\"!==Mo(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function No(e){return(No=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function So(e,t){return(So=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Eo(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}var Co=function e(t){var p=this;Eo(this,e),this.findSuggestionEntities=function(e,t){if(p.config.getEditorState()){var n=p.config,o=n.separator,r=n.trigger,i=n.getSuggestions,a=(0,n.getEditorState)().getSelection();if(a.get(\"anchorKey\")===e.get(\"key\")&&a.get(\"anchorKey\")===a.get(\"focusKey\")){var c=e.getText(),l=(c=c.substr(0,a.get(\"focusOffset\")===c.length-1?c.length:a.get(\"focusOffset\")+1)).lastIndexOf(o+r),s=o+r;if((void 0===l||l<0)&&c[0]===r&&(l=0,s=r),0<=l){var u=c.substr(l+s.length,c.length);i().some(function(e){return!!e.value&&(p.config.caseSensitive?0<=e.value.indexOf(u):0<=e.value.toLowerCase().indexOf(u&&u.toLowerCase()))})&&t(0===l?0:l+1,c.length)}}}},this.getSuggestionComponent=function(){var e,t,c=this.config;return t=e=function(){function r(){var e,a;Eo(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(a=jo(this,(e=No(r)).call.apply(e,[this].concat(n)))).state={style:{left:15},activeOption:-1,showSuggestions:!0},a.onEditorKeyDown=function(e){var t=a.state.activeOption,n={};\"ArrowDown\"===e.key?(e.preventDefault(),t===a.filteredSuggestions.length-1?n.activeOption=0:n.activeOption=t+1):\"ArrowUp\"===e.key?n.activeOption=t<=0?a.filteredSuggestions.length-1:t-1:\"Escape\"===e.key?(n.showSuggestions=!1,y()):\"Enter\"===e.key&&a.addMention(),a.setState(n)},a.onOptionMouseEnter=function(e){var t=e.target.getAttribute(\"data-index\");a.setState({activeOption:t})},a.onOptionMouseLeave=function(){a.setState({activeOption:-1})},a.setSuggestionReference=function(e){a.suggestion=e},a.setDropdownReference=function(e){a.dropdown=e},a.closeSuggestionDropdown=function(){a.setState({showSuggestions:!1})},a.filteredSuggestions=[],a.filterSuggestions=function(e){var t=e.children[0].props.text.substr(1),n=c.getSuggestions();a.filteredSuggestions=n&&n.filter(function(e){return!t||0===t.length||(c.caseSensitive?0<=e.value.indexOf(t):0<=e.value.toLowerCase().indexOf(t&&t.toLowerCase()))})},a.addMention=function(){var e=a.state.activeOption,t=c.getEditorState(),n=c.onChange,o=c.separator,r=c.trigger,i=a.filteredSuggestions[e];i&&function(e,t,n,o,r){var i=r.value,a=r.url,c=e.getCurrentContent().createEntity(\"MENTION\",\"IMMUTABLE\",{text:\"\".concat(o).concat(i),value:i,url:a}).getLastCreatedEntityKey(),l=Object(C.getSelectedBlock)(e).getText(),s=e.getSelection().focusOffset,u=(l.lastIndexOf(n+o,s)||0)+1,p=!1;l.length===u+1&&(s=l.length),\" \"===l[s]&&(p=!0);var d=e.getSelection().merge({anchorOffset:u,focusOffset:s}),m=E.EditorState.acceptSelection(e,d),f=E.Modifier.replaceText(m.getCurrentContent(),d,\"\".concat(o).concat(i),m.getCurrentInlineStyle(),c);m=E.EditorState.push(m,f,\"insert-characters\"),p||(d=m.getSelection().merge({anchorOffset:u+i.length+o.length,focusOffset:u+i.length+o.length}),m=E.EditorState.acceptSelection(m,d),f=E.Modifier.insertText(m.getCurrentContent(),d,\" \",m.getCurrentInlineStyle(),void 0)),t(E.EditorState.push(m,f,\"insert-characters\"))}(t,n,o,r,i)},a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&So(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){var e,t,n,o=c.getWrapperRef().getBoundingClientRect(),r=this.suggestion.getBoundingClientRect(),i=this.dropdown.getBoundingClientRect();o.width<r.left-o.left+i.width?t=15:e=15,o.bottom<i.bottom&&(n=0),this.setState({style:{left:e,right:t,bottom:n}}),k.registerCallBack(this.onEditorKeyDown),g(),c.modalHandler.setSuggestionCallback(this.closeSuggestionDropdown),this.filterSuggestions(this.props)}},{key:\"componentDidUpdate\",value:function(e){this.props.children!==e.children&&(this.filterSuggestions(e),this.setState({showSuggestions:!0}))}},{key:\"componentWillUnmount\",value:function(){k.deregisterCallBack(this.onEditorKeyDown),y(),c.modalHandler.removeSuggestionCallback()}},{key:\"render\",value:function(){var n=this,e=this.props.children,t=this.state,o=t.activeOption,r=t.showSuggestions,i=c.dropdownClassName,a=c.optionClassName;return S.a.createElement(\"span\",{className:\"rdw-suggestion-wrapper\",ref:this.setSuggestionReference,onClick:c.modalHandler.onSuggestionClick,\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-suggestion-popup\"},S.a.createElement(\"span\",null,e),r&&S.a.createElement(\"span\",{className:L()(\"rdw-suggestion-dropdown\",i),contentEditable:\"false\",suppressContentEditableWarning:!0,style:this.state.style,ref:this.setDropdownReference},this.filteredSuggestions.map(function(e,t){return S.a.createElement(\"span\",{key:t,spellCheck:!1,onClick:n.addMention,\"data-index\":t,onMouseEnter:n.onOptionMouseEnter,onMouseLeave:n.onOptionMouseLeave,className:L()(\"rdw-suggestion-option\",a,{\"rdw-suggestion-option-active\":t===o})},e.text)})))}}])&&bo(e.prototype,t),n&&bo(e,n),r}(),e.propTypes={children:f.a.array},t}.bind(this),this.getSuggestionDecorator=function(){return{strategy:p.findSuggestionEntities,component:p.getSuggestionComponent()}};var n=t.separator,o=t.trigger,r=t.getSuggestions,i=t.onChange,a=t.getEditorState,c=t.getWrapperRef,l=t.caseSensitive,s=t.dropdownClassName,u=t.optionClassName,d=t.modalHandler;this.config={separator:n,trigger:o,getSuggestions:r,onChange:i,getEditorState:a,getWrapperRef:c,caseSensitive:l,dropdownClassName:s,optionClassName:u,modalHandler:d}},Lo=function(e){return[new ho(e.mentionClassName).getMentionDecorator(),new Co(e).getSuggestionDecorator()]};n(36);function ko(e){var c=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,ko),this.getHashtagComponent=function(){function e(e){var t=e.children,n=t[0].props.text;return S.a.createElement(\"a\",{href:n,className:L()(\"rdw-hashtag-link\",o)},t)}var o=c.className;return e.propTypes={children:f.a.object},e},this.findHashtagEntities=function(e,t){for(var n=e.getText(),o=0,r=0;0<n.length&&0<=o;)if(n[0]===c.hashCharacter?(r=o=0,n=n.substr(c.hashCharacter.length)):0<=(o=n.indexOf(c.separator+c.hashCharacter))&&(n=n.substr(o+(c.separator+c.hashCharacter).length),r+=o+c.separator.length),0<=o){var i=0<=n.indexOf(c.separator)?n.indexOf(c.separator):n.length,a=n.substr(0,i);a&&0<a.length&&(t(r,r+a.length+c.hashCharacter.length),r+=c.hashCharacter.length)}},this.getHashtagDecorator=function(){return{strategy:c.findHashtagEntities,component:c.getHashtagComponent()}},this.className=e.className,this.hashCharacter=e.hashCharacter||\"#\",this.separator=e.separator||\" \"}function Do(e){var t=e.block,n=e.contentState.getEntity(t.getEntityAt(0)).getData(),o=n.src,r=n.height,i=n.width;return S.a.createElement(\"iframe\",{height:r,width:i,src:o,frameBorder:\"0\",allowFullScreen:!0,title:\"Wysiwyg Embedded Content\"})}var vo=function(e){return new ko(e).getHashtagDecorator()};Do.propTypes={block:f.a.object,contentState:f.a.object};var wo=Do;n(37);function xo(e){return(xo=\"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})(e)}function Io(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Oo(e,t){return!t||\"object\"!==xo(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Ao(e){return(Ao=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function To(e,t){return(To=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var zo=function(d){var e,t;return t=e=function(){function r(){var e,i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(i=Oo(this,(e=Ao(r)).call.apply(e,[this].concat(n)))).state={hovered:!1},i.setEntityAlignmentLeft=function(){i.setEntityAlignment(\"left\")},i.setEntityAlignmentRight=function(){i.setEntityAlignment(\"right\")},i.setEntityAlignmentCenter=function(){i.setEntityAlignment(\"none\")},i.setEntityAlignment=function(e){var t=i.props,n=t.block,o=t.contentState,r=n.getEntityAt(0);o.mergeEntityData(r,{alignment:e}),d.onChange(E.EditorState.push(d.getEditorState(),o,\"change-block-data\")),i.setState({dummy:!0})},i.toggleHovered=function(){var e=!i.state.hovered;i.setState({hovered:e})},i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&To(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"renderAlignmentOptions\",value:function(e){return S.a.createElement(\"div\",{className:L()(\"rdw-image-alignment-options-popup\",{\"rdw-image-alignment-options-popup-right\":\"right\"===e})},S.a.createElement(T,{onClick:this.setEntityAlignmentLeft,className:\"rdw-image-alignment-option\"},\"L\"),S.a.createElement(T,{onClick:this.setEntityAlignmentCenter,className:\"rdw-image-alignment-option\"},\"C\"),S.a.createElement(T,{onClick:this.setEntityAlignmentRight,className:\"rdw-image-alignment-option\"},\"R\"))}},{key:\"render\",value:function(){var e=this.props,t=e.block,n=e.contentState,o=this.state.hovered,r=d.isReadOnly,i=d.isImageAlignmentEnabled,a=n.getEntity(t.getEntityAt(0)).getData(),c=a.src,l=a.alignment,s=a.height,u=a.width,p=a.alt;return S.a.createElement(\"span\",{onMouseEnter:this.toggleHovered,onMouseLeave:this.toggleHovered,className:L()(\"rdw-image-alignment\",{\"rdw-image-left\":\"left\"===l,\"rdw-image-right\":\"right\"===l,\"rdw-image-center\":!l||\"none\"===l})},S.a.createElement(\"span\",{className:\"rdw-image-imagewrapper\"},S.a.createElement(\"img\",{src:c,alt:p,style:{height:s,width:u}}),!r()&&o&&i()?this.renderAlignmentOptions(l):void 0))}}])&&Io(e.prototype,t),n&&Io(e,n),r}(),e.propTypes={block:f.a.object,contentState:f.a.object},t},_o=function(o,r){return function(e){if(\"function\"==typeof r){var t=r(e,o,o.getEditorState);if(t)return t}if(\"atomic\"===e.getType()){var n=o.getEditorState().getCurrentContent().getEntity(e.getEntityAt(0));if(n&&\"IMAGE\"===n.type)return{component:zo(o),editable:!1};if(n&&\"EMBEDDED_LINK\"===n.type)return{component:wo,editable:!1}}}},Po={options:[\"inline\",\"blockType\",\"fontSize\",\"fontFamily\",\"list\",\"textAlign\",\"colorPicker\",\"link\",\"embedded\",\"emoji\",\"image\",\"remove\",\"history\"],inline:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"bold\",\"italic\",\"underline\",\"strikethrough\",\"monospace\",\"superscript\",\"subscript\"],bold:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuMjM2IDBjMS42NTIgMCAyLjk0LjI5OCAzLjg2Ni44OTMuOTI1LjU5NSAxLjM4OCAxLjQ4NSAxLjM4OCAyLjY2OSAwIC42MDEtLjE3MyAxLjEzOS0uNTE2IDEuNjEtLjM0My40NzQtLjg0NC44My0xLjQ5OSAxLjA2OC44NDMuMTY3IDEuNDc0LjUyMyAxLjg5NSAxLjA3MS40MTkuNTUuNjMgMS4xODMuNjMgMS45MDMgMCAxLjI0NS0uNDQ0IDIuMTg3LTEuMzMgMi44MjUtLjg4Ni42NDEtMi4xNDQuOTYxLTMuNzY5Ljk2MUgwdi0yLjE2N2gxLjQ5NFYyLjE2N0gwVjBoNi4yMzZ6TTQuMzA4IDUuNDQ2aDIuMDI0Yy43NTIgMCAxLjMzLS4xNDMgMS43MzQtLjQzLjQwNS0uMjg1LjYwOC0uNzAxLjYwOC0xLjI1IDAtLjYtLjIwNC0xLjA0NC0uNjEyLTEuMzMtLjQwOC0uMjg2LTEuMDE2LS40MjctMS44MjYtLjQyN0g0LjMwOHYzLjQzN3ptMCAxLjgwNFYxMWgyLjU5M2MuNzQ3IDAgMS4zMTQtLjE1MiAxLjcwNy0uNDUyLjM5LS4zLjU4OC0uNzQ1LjU4OC0xLjMzNCAwLS42MzYtLjE2OC0xLjEyNC0uNS0xLjQ2LS4zMzYtLjMzNS0uODY0LS41MDQtMS41ODItLjUwNEg0LjMwOHoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\",className:void 0,title:void 0},italic:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTcgM1YyaDR2MUg5Ljc1M2wtMyAxMEg4djFINHYtMWgxLjI0N2wzLTEwSDd6Ii8+PC9zdmc+\",className:void 0,title:void 0},underline:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTYuMDQ1IDJ2Ljk5Mkw0Ljc4NSAzdjUuMTcyYzAgLjg1OS4yNDMgMS41MTIuNzI3IDEuOTU3czEuMTI0LjY2OCAxLjkxOC42NjhjLjgzNiAwIDEuNTA5LS4yMjEgMi4wMTktLjY2NC41MTEtLjQ0Mi43NjYtMS4wOTYuNzY2LTEuOTYxVjNsLTEuMjYtLjAwOFYySDEzdi45OTJMMTEuNzM5IDN2NS4xNzJjMCAxLjIzNC0uMzk4IDIuMTgxLTEuMTk1IDIuODQtLjc5Ny42NTktMS44MzUuOTg4LTMuMTE0Ljk4OC0xLjI0MiAwLTIuMjQ4LS4zMjktMy4wMTctLjk4OC0uNzY5LS42NTktMS4xNTItMS42MDUtMS4xNTItMi44NFYzTDIgMi45OTJWMmg0LjA0NXpNMiAxM2gxMXYxSDJ6Ii8+PC9zdmc+\",className:void 0,title:void 0},strikethrough:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNC4wNCA1Ljk1NGg2LjIxNWE3LjQxMiA3LjQxMiAwIDAgMC0uNzk1LS40MzggMTEuOTA3IDExLjkwNyAwIDAgMC0xLjQ0Ny0uNTU3Yy0xLjE4OC0uMzQ4LTEuOTY2LS43MTEtMi4zMzQtMS4wODgtLjM2OC0uMzc3LS41NTItLjc3LS41NTItMS4xODEgMC0uNDk1LjE4Ny0uOTA2LjU2LTEuMjMyLjM4LS4zMzEuODg3LS40OTcgMS41MjMtLjQ5Ny42OCAwIDEuMjY2LjI1NSAxLjc1Ny43NjcuMjk1LjMxNS41ODIuODkxLjg2MSAxLjczbC4xMTcuMDE2LjcwMy4wNS4xLS4wMjRjLjAyOC0uMTUyLjA0Mi0uMjc5LjA0Mi0uMzggMC0uMzM3LS4wMzktLjg1Mi0uMTE3LTEuNTQ0YTkuMzc0IDkuMzc0IDAgMCAwLS4xNzYtLjk5NUM5Ljg4LjM3OSA5LjM4NS4yNDQgOS4wMTcuMTc2IDguMzY1LjA3IDcuODk5LjAxNiA3LjYyLjAxNmMtMS40NSAwLTIuNTQ1LjM1Ny0zLjI4NyAxLjA3MS0uNzQ3LjcyLTEuMTIgMS41ODktMS4xMiAyLjYwNyAwIC41MTEuMTMzIDEuMDQuNCAxLjU4Ni4xMjkuMjUzLjI3LjQ3OC40MjcuNjc0ek04LjI4IDguMTE0Yy41NzUuMjM2Ljk1Ny40MzYgMS4xNDcuNTk5LjQ1MS40MS42NzcuODUyLjY3NyAxLjMyNCAwIC4zODMtLjEzLjc0NS0uMzkzIDEuMDg4LS4yNS4zMzgtLjU5LjU4LTEuMDIuNzI2YTMuNDE2IDMuNDE2IDAgMCAxLTEuMTYzLjIyOGMtLjQwNyAwLS43NzUtLjA2Mi0xLjEwNC0uMTg2YTIuNjk2IDIuNjk2IDAgMCAxLS44NzgtLjQ4IDMuMTMzIDMuMTMzIDAgMCAxLS42Ny0uNzk0IDEuNTI3IDEuNTI3IDAgMCAxLS4xMDQtLjIyNyA1Ny41MjMgNTcuNTIzIDAgMCAwLS4xODgtLjQ3MyAyMS4zNzEgMjEuMzcxIDAgMCAwLS4yNTEtLjU5OWwtLjg1My4wMTd2LjM3MWwtLjAxNy4zMTNhOS45MiA5LjkyIDAgMCAwIDAgLjU3M2MuMDExLjI3LjAxNy43MDkuMDE3IDEuMzE2di4xMWMwIC4wNzkuMDIyLjE0LjA2Ny4xODUuMDgzLjA2OC4yODQuMTQ3LjYwMi4yMzdsMS4xNy4zMzdjLjQ1Mi4xMy45OTYuMTk0IDEuNjMyLjE5NC42ODYgMCAxLjI1Mi0uMDU5IDEuNjk4LS4xNzdhNC42OTQgNC42OTQgMCAwIDAgMS4yOC0uNTU3Yy40MDEtLjI1OS43MDUtLjQ4Ni45MTEtLjY4My4yNjgtLjI3Ni40NjYtLjU2OC41OTQtLjg3OGE0Ljc0IDQuNzQgMCAwIDAgLjM0My0xLjc4OGMwLS4yOTgtLjAyLS41NTctLjA1OC0uNzc2SDguMjgxek0xNC45MTQgNi41N2EuMjYuMjYgMCAwIDAtLjE5My0uMDc2SC4yNjhhLjI2LjI2IDAgMCAwLS4xOTMuMDc2LjI2NC4yNjQgMCAwIDAtLjA3NS4xOTR2LjU0YzAgLjA3OS4wMjUuMTQzLjA3NS4xOTRhLjI2LjI2IDAgMCAwIC4xOTMuMDc2SDE0LjcyYS4yNi4yNiAwIDAgMCAuMTkzLS4wNzYuMjY0LjI2NCAwIDAgMCAuMDc1LS4xOTR2LS41NGEuMjY0LjI2NCAwIDAgMC0uMDc1LS4xOTR6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},monospace:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzQ0NCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMS4wMjEgMi45MDZjLjE4NiAxLjIxOS4zNzIgMS41LjM3MiAyLjcxOUMxLjM5MyA2LjM3NSAwIDcuMDMxIDAgNy4wMzF2LjkzOHMxLjM5My42NTYgMS4zOTMgMS40MDZjMCAxLjIxOS0uMTg2IDEuNS0uMzcyIDIuNzE5Qy43NDMgMTQuMDYzIDEuNzY0IDE1IDIuNjkzIDE1aDEuOTV2LTEuODc1cy0xLjY3Mi4xODgtMS42NzItLjkzOGMwLS44NDMuMTg2LS44NDMuMzcyLTIuNzE4LjA5My0uODQ0LS40NjQtMS41LTEuMDIyLTEuOTY5LjU1OC0uNDY5IDEuMTE1LTEuMDMxIDEuMDIyLTEuODc1QzMuMDY0IDMuNzUgMi45NyAzLjc1IDIuOTcgMi45MDZjMC0xLjEyNSAxLjY3Mi0xLjAzMSAxLjY3Mi0xLjAzMVYwaC0xLjk1QzEuNjcgMCAuNzQzLjkzOCAxLjAyIDIuOTA2ek0xMS45NzkgMi45MDZjLS4xODYgMS4yMTktLjM3MiAxLjUtLjM3MiAyLjcxOSAwIC43NSAxLjM5MyAxLjQwNiAxLjM5MyAxLjQwNnYuOTM4cy0xLjM5My42NTYtMS4zOTMgMS40MDZjMCAxLjIxOS4xODYgMS41LjM3MiAyLjcxOS4yNzggMS45NjktLjc0MyAyLjkwNi0xLjY3MiAyLjkwNmgtMS45NXYtMS44NzVzMS42NzIuMTg4IDEuNjcyLS45MzhjMC0uODQzLS4xODYtLjg0My0uMzcyLTIuNzE4LS4wOTMtLjg0NC40NjQtMS41IDEuMDIyLTEuOTY5LS41NTgtLjQ2OS0xLjExNS0xLjAzMS0xLjAyMi0xLjg3NS4xODYtMS44NzUuMzcyLTEuODc1LjM3Mi0yLjcxOSAwLTEuMTI1LTEuNjcyLTEuMDMxLTEuNjcyLTEuMDMxVjBoMS45NWMxLjAyMiAwIDEuOTUuOTM4IDEuNjcyIDIuOTA2eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},superscript:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMzA1IDEwLjE2NUwxMS44NjUgMTVIOS4wNTdsLTMuMTkyLTMuNTM2TDIuNzQ2IDE1SDBsNC41MjMtNC44MzVMLjIxOCA1LjYwM2gyLjc3TDUuOTg2IDguOTEgOS4wMSA1LjYwM2gyLjY0OWwtNC4zNTQgNC41NjJ6bTYuMjM0LTMuMjY5bDEuODc5LTEuMzA2Yy42NC0uNDE2IDEuMDYyLS44MDEgMS4yNjQtMS4xNTcuMjAxLS4zNTYuMzAyLS43MzguMzAyLTEuMTQ4IDAtLjY2OS0uMjM3LTEuMjEtLjcxLTEuNjItLjQ3NC0uNDExLTEuMDk3LS42MTctMS44NjgtLjYxNy0uNzQ0IDAtMS4zNC4yMDgtMS43ODUuNjI0LS40NDcuNDE2LS42NyAxLjA0My0uNjcgMS44ODFoMS40MzZjMC0uNS4wOTQtLjg0Ni4yODEtMS4wMzguMTg4LS4xOTEuNDQ1LS4yODcuNzcyLS4yODdzLjU4NS4wOTcuNzc3LjI5MmMuMTkuMTk1LjI4Ni40MzcuMjg2LjcyNiAwIC4yOS0uMDg5LjU1LS4yNjYuNzg1cy0uNjcuNjI4LTEuNDc5IDEuMTg0Yy0uNjkxLjQ3Ny0xLjYyNy45MjctMS45MDggMS4zNWwuMDE0IDEuNTY5SDE3VjYuODk2aC0zLjQ2MXoiLz48L3N2Zz4=\",className:void 0,title:void 0},subscript:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTExLjg2NiAxMS42NDZIOS4wNkw1Ljg2NyA3Ljk0MmwtMy4xMjEgMy43MDRIMGw0LjUyNC01LjA2NEwuMjE4IDEuODA0aDIuNzdsMyAzLjQ2NCAzLjAyMy0zLjQ2NGgyLjY1TDcuMzA2IDYuNTgybDQuNTYgNS4wNjR6bTEuNzI1IDIuMDU4bDEuODI3LTEuMzY4Yy42NC0uNDM1IDEuMDYyLS44NCAxLjI2NC0xLjIxMi4yMDItLjM3Mi4zMDItLjc3My4zMDItMS4yMDIgMC0uNy0uMjM3LTEuMjY2LS43MS0xLjY5Ni0uNDc0LS40MzEtMS4wOTctLjY0Ni0xLjg2OS0uNjQ2LS43NDQgMC0xLjM0LjIxOC0xLjc4NS42NTMtLjQ0Ni40MzYtLjY3IDEuMDkyLS42NyAxLjk3aDEuNDM2YzAtLjUyNC4wOTQtLjg4Ni4yODEtMS4wODcuMTg4LS4yLjQ0NS0uMzAxLjc3Mi0uMzAxcy41ODYuMTAyLjc3Ny4zMDZjLjE5LjIwNC4yODYuNDU4LjI4Ni43NiAwIC4zMDMtLjA4OC41NzctLjI2Ni44MjItLjE3Ny4yNDUtLjY3LjY1OC0xLjQ3OCAxLjI0LS42OTIuNS0xLjYyOC45NzEtMS45MSAxLjQxM0wxMS44NjQgMTVIMTd2LTEuMjk2aC0zLjQxeiIvPjwvc3ZnPg==\",className:void 0,title:void 0}},blockType:{inDropdown:!0,options:[\"Normal\",\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\",\"Blockquote\",\"Code\"],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},fontSize:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTEuOTIxIDMuMTE5YS40MjcuNDI3IDAgMCAwIC4zMzUuMTY0aC45N2EuNDI2LjQyNiAwIDAgMCAuMzA0LS4xMy40NDEuNDQxIDAgMCAwIC4xMjUtLjMxbC4wMDItMi40MWEuNDM0LjQzNCAwIDAgMC0uNDMtLjQzMkguNDNBLjQzNC40MzQgMCAwIDAgMCAuNDR2Mi40MDZjMCAuMjQyLjE5Mi40MzguNDMuNDM4aC45N2MuMTMgMCAuMjU0LS4wNi4zMzUtLjE2NWwuNzMtLjkzSDUuNTR2MTEuMzZjMCAuMjQxLjE5Mi40MzcuNDMuNDM3aDEuNzE3Yy4yMzcgMCAuNDMtLjE5Ni40My0uNDM3VjIuMTg4aDMuMDdsLjczNC45MzF6TTEzLjg5OCAxMS4yNjNhLjQyNS40MjUgMCAwIDAtLjQ4Mi0uMTQ2bC0uNTQ3LjE5NFY5LjYxN2EuNDQyLjQ0MiAwIDAgMC0uMTI2LS4zMS40MjYuNDI2IDAgMCAwLS4zMDQtLjEyN2gtLjQyOWEuNDM0LjQzNCAwIDAgMC0uNDMuNDM3djEuNjk0bC0uNTQ3LS4xOTRhLjQyNS40MjUgMCAwIDAtLjQ4MS4xNDYuNDQ0LjQ0NCAwIDAgMC0uMDE2LjUxMmwxLjMzMiAyLjAxN2EuNDI3LjQyNyAwIDAgMCAuNzEzIDBsMS4zMzMtMi4wMTdhLjQ0NC40NDQgMCAwIDAtLjAxNi0uNTEyeiIvPjwvZz48L3N2Zz4=\",options:[8,9,10,11,12,14,16,18,24,30,36,48,60,72,96],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},fontFamily:{options:[\"Arial\",\"Georgia\",\"Impact\",\"Tahoma\",\"Times New Roman\",\"Verdana\"],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},list:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"unordered\",\"ordered\",\"indent\",\"outdent\"],unordered:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMS43MiAzLjQyN2MuOTUxIDAgMS43MjItLjc2OCAxLjcyMi0xLjcwOFMyLjY3LjAxIDEuNzIuMDFDLjc3LjAwOCAwIC43NzUgMCAxLjcxNWMwIC45NC43NzQgMS43MTEgMS43MiAxLjcxMXptMC0yLjYyNWMuNTEgMCAuOTIyLjQxMi45MjIuOTE0YS45Mi45MiAwIDAgMS0xLjg0MiAwIC45Mi45MiAwIDAgMSAuOTItLjkxNHpNMS43MiA4LjcwM2MuOTUxIDAgMS43MjItLjc2OCAxLjcyMi0xLjcwOFMyLjY3IDUuMjg3IDEuNzIgNS4yODdDLjc3IDUuMjg3IDAgNi4wNTIgMCA2Ljk5NXMuNzc0IDEuNzA4IDEuNzIgMS43MDh6bTAtMi42MjJjLjUxIDAgLjkyMi40MTIuOTIyLjkxNGEuOTIuOTIgMCAwIDEtMS44NDIgMGMwLS41MDUuNDE1LS45MTQuOTItLjkxNHpNMS43MiAxMy45ODJjLjk1MSAwIDEuNzIyLS43NjggMS43MjItMS43MDggMC0uOTQzLS43NzQtMS43MDgtMS43MjEtMS43MDgtLjk0NyAwLTEuNzIxLjc2OC0xLjcyMSAxLjcwOHMuNzc0IDEuNzA4IDEuNzIgMS43MDh6bTAtMi42MjVjLjUxIDAgLjkyMi40MTIuOTIyLjkxNGEuOTIuOTIgMCAxIDEtMS44NDIgMCAuOTIuOTIgMCAwIDEgLjkyLS45MTR6TTUuNzQ0IDIuMTE1aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOTlINS43NDRhLjQuNCAwIDAgMC0uNDAyLjM5OS40LjQgMCAwIDAgLjQwMi4zOTl6TTUuNzQ0IDcuMzk0aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOThINS43NDRhLjQuNCAwIDAgMC0uNDAyLjM5OC40LjQgMCAwIDAgLjQwMi4zOTl6TTUuNzQ0IDEyLjY3aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOTlINS43NDRhLjQuNCAwIDAgMC0uNDAyLjQuNC40IDAgMCAwIC40MDIuMzk4eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},ordered:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNC4yMDIgMS40NjZoOC4xNWMuMzM4IDAgLjYxMi0uMzIyLjYxMi0uNzIgMC0uMzk3LS4yNzQtLjcyLS42MTItLjcyaC04LjE1Yy0uMzM4IDAtLjYxMS4zMjMtLjYxMS43MiAwIC4zOTguMjczLjcyLjYxLjcyek0xMi4zNTIgNS43ODNoLTguMTVjLS4zMzggMC0uNjExLjMyMi0uNjExLjcyIDAgLjM5Ny4yNzMuNzIuNjEuNzJoOC4xNTFjLjMzOCAwIC42MTItLjMyMy42MTItLjcyIDAtLjM5OC0uMjc0LS43Mi0uNjEyLS43MnpNMTIuMzUyIDExLjU0aC04LjE1Yy0uMzM4IDAtLjYxMS4zMjItLjYxMS43MiAwIC4zOTYuMjczLjcxOS42MS43MTloOC4xNTFjLjMzOCAwIC42MTItLjMyMy42MTItLjcyIDAtLjM5Ny0uMjc0LS43Mi0uNjEyLS43MnpNLjc2NyAxLjI0OXYxLjgwMmMwIC4xOTUuMTM2LjM0My4zMTUuMzQzLjE3NiAwIC4zMTUtLjE1LjMxNS0uMzQzVi4zNTZjMC0uMTktLjEzMy0uMzM5LS4zMDItLjMzOS0uMTQ4IDAtLjIyMy4xMTgtLjI0Ny4xNTZhLjIyOC4yMjggMCAwIDAtLjAwMy4wMDVMLjU3OS42MjFhLjQ3NC40NzQgMCAwIDAtLjA5OC4yNzNjMCAuMTk0LjEyOC4zNTEuMjg2LjM1NXpNLjM1MiA4LjE5SDEuNTVjLjE1NyAwIC4yODUtLjE2Mi4yODUtLjM2MiAwLS4xOTgtLjEyOC0uMzU5LS4yODUtLjM1OUguNjh2LS4wMDZjMC0uMTA3LjIxLS4yODEuMzc4LS40MjIuMzM2LS4yNzguNzUzLS42MjUuNzUzLTEuMjI2IDAtLjU3LS4zNzYtMS0uODc0LTEtLjQ3NyAwLS44MzYuMzg1LS44MzYuODk3IDAgLjI5Ny4xNjQuNDAyLjMwNS40MDIuMiAwIC4zMjEtLjE3Ni4zMjEtLjM0NiAwLS4xMDYuMDIzLS4yMjguMjA0LS4yMjguMjQzIDAgLjI1LjI1NC4yNS4yODMgMCAuMjI4LS4yNTIuNDQyLS40OTUuNjQ5LS4zMDEuMjU1LS42NDIuNTQ0LS42NDIuOTkydi4zODRjMCAuMjA1LjE1OS4zNDMuMzA4LjM0M3pNMS43NyAxMC41NDNjMC0uNTkyLS4yOTYtLjkzMS0uODE0LS45MzEtLjY4IDAtLjg1OS41Ny0uODU5Ljg3MiAwIC4zNTEuMjIyLjM5LjMxOC4zOS4xODUgMCAuMzEtLjE0OC4zMS0uMzY2IDAtLjA4NC4wMjYtLjE4MS4yMjQtLjE4MS4xNDIgMCAuMi4wMjQuMi4yNjcgMCAuMjM3LS4wNDMuMjYzLS4yMTMuMjYzLS4xNjQgMC0uMjg4LjE1Mi0uMjg4LjM1NCAwIC4yLjEyNS4zNS4yOTEuMzUuMjI1IDAgLjI3LjEwOC4yNy4yODN2LjA3NWMwIC4yOTQtLjA5Ny4zNS0uMjc3LjM1LS4yNDggMC0uMjY3LS4xNS0uMjY3LS4xOTcgMC0uMTc0LS4wOTgtLjM1LS4zMTctLjM1LS4xOTIgMC0uMzA3LjE0MS0uMzA3LjM3OCAwIC40My4zMTMuODg4Ljg5NS44ODguNTY0IDAgLjkwMS0uNC45MDEtMS4wN3YtLjA3NGMwLS4yNzQtLjA3NC0uNTAyLS4yMTQtLjY2Ni4wOTYtLjE2My4xNDgtLjM4LjE0OC0uNjM1eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},indent:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNS43MTYgMy4yMTFIMTd2MS4xOTdINS43MTZ6TTAgLjAyaDE3djEuMTk3SDB6TTAgMTIuNzgzaDE3djEuMTk3SDB6TTUuNzE2IDkuNTkzSDE3djEuMTk3SDUuNzE2ek01LjcxNiA2LjQwMkgxN3YxLjE5N0g1LjcxNnpNLjE4NyA5LjQ5MUwyLjUyIDcgLjE4NyA0LjUwOXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},outdent:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNS4zOTYgMy4xOTNoMTAuNTczVjQuMzlINS4zOTZ6TS4wMzkuMDAzaDE1LjkzVjEuMkguMDM5ek0uMDM5IDEyLjc2NmgxNS45M3YxLjE5N0guMDM5ek01LjM5NiA5LjU3NWgxMC41NzN2MS4xOTdINS4zOTZ6TTUuMzk2IDYuMzg0aDEwLjU3M3YxLjE5N0g1LjM5NnpNMi4xODcgNC40OTFMMCA2Ljk4M2wyLjE4NyAyLjQ5MXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},title:void 0},textAlign:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"left\",\"center\",\"right\",\"justify\"],left:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNOC40OTMgMTQuODg3SC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDguMTY3YS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjE4IDEwLjE2MkguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1M2gxNC4yOTJhLjMyNi4zMjYgMCAwIDEgMCAuNjUzek04LjQ5MyA1LjQzNUguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1Mmg4LjE2N2EuMzI2LjMyNiAwIDAgMSAwIC42NTJ6TTE0LjYxOC43MDlILjMyNmEuMzI2LjMyNiAwIDAgMSAwLS42NTJoMTQuMjkyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},center:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTEuNTU2IDE0Ljg4N0gzLjM4OGEuMzI2LjMyNiAwIDAgMSAwLS42NTJoOC4xNjdhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42MTggMTAuMTYySC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUzaDE0LjI5MmEuMzI2LjMyNiAwIDAgMSAwIC42NTN6TTExLjU1NiA1LjQzNUgzLjM4OGEuMzI2LjMyNiAwIDAgMSAwLS42NTJoOC4xNjdhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42MTguNzA5SC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDE0LjI5MmEuMzI2LjMyNiAwIDAgMSAwIC42NTJ6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},right:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNjE4IDE0Ljg4N0g2LjQ1YS4zMjYuMzI2IDAgMCAxIDAtLjY1Mmg4LjE2N2EuMzI2LjMyNiAwIDAgMSAwIC42NTJ6TTE0LjYxOCAxMC4xNjJILjMyNmEuMzI2LjMyNiAwIDAgMSAwLS42NTNoMTQuMjkyYS4zMjYuMzI2IDAgMCAxIDAgLjY1M3pNMTQuNjE4IDUuNDM1SDYuNDVhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDguMTY3YS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjE4LjcwOUguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1MmgxNC4yOTJhLjMyNi4zMjYgMCAwIDEgMCAuNjUyeiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},justify:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNjIgMTQuODg4SC4zMjVhLjMyNi4zMjYgMCAwIDEgMC0uNjUySDE0LjYyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjIgMTAuMTYySC4zMjVhLjMyNi4zMjYgMCAwIDEgMC0uNjUySDE0LjYyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjIgNS40MzZILjMyNWEuMzI2LjMyNiAwIDAgMSAwLS42NTJIMTQuNjJhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42Mi43MUguMzI1YS4zMjYuMzI2IDAgMCAxIDAtLjY1M0gxNC42MmEuMzI2LjMyNiAwIDAgMSAwIC42NTN6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},title:void 0},colorPicker:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNDA2LjU4NWExLjk5OCAxLjk5OCAwIDAgMC0yLjgyNSAwbC0uNTQuNTRhLjc0MS43NDEgMCAxIDAtMS4wNDggMS4wNDhsLjE3NS4xNzUtNS44MjYgNS44MjUtMi4wMjIgMi4wMjNhLjkxLjkxIDAgMCAwLS4yNjYuNjAybC0uMDA1LjEwOHYuMDAybC0uMDgxIDEuODI5YS4zMDIuMzAyIDAgMCAwIC4zMDIuMzE2aC4wMTNsLjk3LS4wNDQuNTkyLS4wMjYuMjY4LS4wMTJjLjI5Ny0uMDEzLjU3OS0uMTM3Ljc5LS4zNDdsNy43Ny03Ljc3LjE0Ni4xNDRhLjc0Ljc0IDAgMCAwIDEuMDQ4IDBjLjI5LS4yOS4yOS0uNzU5IDAtMS4wNDhsLjU0LS41NGMuNzgtLjc4Ljc4LTIuMDQ0IDAtMi44MjV6TTguNzk1IDcuMzMzbC0yLjczLjUxNSA0LjQ1Mi00LjQ1MiAxLjEwOCAxLjEwNy0yLjgzIDIuODN6TTIuMDggMTMuNjczYy0xLjE0OCAwLTIuMDguMjk1LTIuMDguNjYgMCAuMzYzLjkzMi42NTggMi4wOC42NTggMS4xNSAwIDIuMDgtLjI5NCAyLjA4LS42NTkgMC0uMzY0LS45My0uNjU5LTIuMDgtLjY1OXoiLz48L2c+PC9zdmc+\",className:void 0,component:void 0,popupClassName:void 0,colors:[\"rgb(97,189,109)\",\"rgb(26,188,156)\",\"rgb(84,172,210)\",\"rgb(44,130,201)\",\"rgb(147,101,184)\",\"rgb(71,85,119)\",\"rgb(204,204,204)\",\"rgb(65,168,95)\",\"rgb(0,168,133)\",\"rgb(61,142,185)\",\"rgb(41,105,176)\",\"rgb(85,57,130)\",\"rgb(40,50,78)\",\"rgb(0,0,0)\",\"rgb(247,218,100)\",\"rgb(251,160,38)\",\"rgb(235,107,86)\",\"rgb(226,80,65)\",\"rgb(163,143,132)\",\"rgb(239,239,239)\",\"rgb(255,255,255)\",\"rgb(250,197,28)\",\"rgb(243,121,52)\",\"rgb(209,72,65)\",\"rgb(184,49,47)\",\"rgb(124,112,107)\",\"rgb(209,213,216)\"],title:void 0},link:{inDropdown:!1,className:void 0,component:void 0,popupClassName:void 0,dropdownClassName:void 0,showOpenOptionOnHover:!0,defaultTargetOption:\"_self\",options:[\"link\",\"unlink\"],link:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEzLjk2Ny45NUEzLjIyNiAzLjIyNiAwIDAgMCAxMS42Ny4wMDJjLS44NyAwLTEuNjg2LjMzNy0yLjI5Ny45NDhMNy4xMDUgMy4yMThBMy4yNDcgMy4yNDcgMCAwIDAgNi4yNCA2LjI0YTMuMjI1IDMuMjI1IDAgMCAwLTMuMDIyLjg2NUwuOTUgOS4zNzNhMy4yNTMgMy4yNTMgMCAwIDAgMCA0LjU5NCAzLjIyNiAzLjIyNiAwIDAgMCAyLjI5Ny45NDhjLjg3IDAgMS42ODYtLjMzNiAyLjI5OC0uOTQ4TDcuODEyIDExLjdhMy4yNDcgMy4yNDcgMCAwIDAgLjg2NS0zLjAyMyAzLjIyNSAzLjIyNSAwIDAgMCAzLjAyMi0uODY1bDIuMjY4LTIuMjY3YTMuMjUyIDMuMjUyIDAgMCAwIDAtNC41OTV6TTcuMTA1IDEwLjk5M0w0LjgzNyAxMy4yNmEyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LjY1NSAyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LS42NTUgMi4yNTIgMi4yNTIgMCAwIDEgMC0zLjE4bDIuMjY4LTIuMjY4YTIuMjMyIDIuMjMyIDAgMCAxIDEuNTktLjY1NWMuNDMgMCAuODQxLjEyIDEuMTk1LjM0M0w0Ljc3MiA5LjQzOGEuNS41IDAgMSAwIC43MDcuNzA3bDEuOTM5LTEuOTM4Yy41NDUuODY4LjQ0MiAyLjAzLS4zMTMgMi43ODV6bTYuMTU1LTYuMTU1bC0yLjI2OCAyLjI2N2EyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LjY1NWMtLjQzMSAwLS44NDEtLjEyLTEuMTk1LS4zNDNsMS45MzgtMS45MzhhLjUuNSAwIDEgMC0uNzA3LS43MDdMNy40OTkgNi43MWEyLjI1MiAyLjI1MiAwIDAgMSAuMzEzLTIuNzg1bDIuMjY3LTIuMjY4YTIuMjMzIDIuMjMzIDAgMCAxIDEuNTktLjY1NSAyLjIzMyAyLjIzMyAwIDAgMSAyLjI0NiAyLjI0NWMwIC42MDMtLjIzMiAxLjE2OC0uNjU1IDEuNTl6IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=\",className:void 0,title:void 0},unlink:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTMuOTU2IDEuMDM3YTMuNTUgMy41NSAwIDAgMC01LjAxNCAwTDYuNDM2IDMuNTQ0YS41NDUuNTQ1IDAgMSAwIC43Ny43N2wyLjUwOC0yLjUwNmEyLjQzOCAyLjQzOCAwIDAgMSAxLjczNS0uNzE1Yy42NTggMCAxLjI3NS4yNTQgMS43MzYuNzE1LjQ2LjQ2MS43MTUgMS4wNzguNzE1IDEuNzM2IDAgLjY1OC0uMjU0IDEuMjc0LS43MTUgMS43MzVMOS45MDcgOC41NThhMi40NTggMi40NTggMCAwIDEtMy40NzIgMCAuNTQ1LjU0NSAwIDEgMC0uNzcxLjc3MSAzLjUzNCAzLjUzNCAwIDAgMCAyLjUwNyAxLjAzN2MuOTA4IDAgMS44MTYtLjM0NiAyLjUwNy0xLjAzN2wzLjI3OC0zLjI3OGEzLjUyIDMuNTIgMCAwIDAgMS4wMzUtMi41MDdjMC0uOTUtLjM2Ny0xLjg0LTEuMDM1LTIuNTA3eiIvPjxwYXRoIGQ9Ik03LjQgMTEuMDY1bC0yLjEyMiAyLjEyYTIuNDM3IDIuNDM3IDAgMCAxLTEuNzM1LjcxNiAyLjQzNyAyLjQzNyAwIDAgMS0xLjczNi0uNzE1IDIuNDU3IDIuNDU3IDAgMCAxIDAtMy40NzFsMy4wODYtMy4wODZhMi40MzggMi40MzggMCAwIDEgMS43MzUtLjcxNWMuNjU4IDAgMS4yNzUuMjU0IDEuNzM2LjcxNWEuNTQ1LjU0NSAwIDEgMCAuNzcxLS43NzEgMy41NSAzLjU1IDAgMCAwLTUuMDE0IDBMMS4wMzYgOC45NDRBMy41MiAzLjUyIDAgMCAwIDAgMTEuNDVjMCAuOTUuMzY3IDEuODQgMS4wMzUgMi41MDdhMy41MiAzLjUyIDAgMCAwIDIuNTA2IDEuMDM1Yy45NSAwIDEuODQtLjM2OCAyLjUwNy0xLjAzNWwyLjEyMi0yLjEyMWEuNTQ1LjU0NSAwIDAgMC0uNzcxLS43NzF6TTkuMjc0IDEyLjAwMmEuNTQ2LjU0NiAwIDAgMC0uNTQ2LjU0NXYxLjYzN2EuNTQ2LjU0NiAwIDAgMCAxLjA5MSAwdi0xLjYzN2EuNTQ1LjU0NSAwIDAgMC0uNTQ1LS41NDV6TTExLjIzIDExLjYxNmEuNTQ1LjU0NSAwIDEgMC0uNzcyLjc3MmwxLjE1NyAxLjE1NmEuNTQzLjU0MyAwIDAgMCAuNzcxIDAgLjU0NS41NDUgMCAwIDAgMC0uNzdsLTEuMTU2LTEuMTU4ek0xMi41MzcgOS44MkgxMC45YS41NDYuNTQ2IDAgMCAwIDAgMS4wOTFoMS42MzdhLjU0Ni41NDYgMCAwIDAgMC0xLjA5ek00LjkxIDMuNTQ3YS41NDYuNTQ2IDAgMCAwIC41NDUtLjU0NVYxLjM2NmEuNTQ2LjU0NiAwIDAgMC0xLjA5IDB2MS42MzZjMCAuMzAxLjI0NC41NDUuNTQ1LjU0NXpNMi44ODggMy45MzNhLjU0My41NDMgMCAwIDAgLjc3MSAwIC41NDUuNTQ1IDAgMCAwIDAtLjc3MUwyLjUwMiAyLjAwNWEuNTQ1LjU0NSAwIDEgMC0uNzcxLjc3bDEuMTU3IDEuMTU4ek0xLjYyOCA1LjczaDEuNjM2YS41NDYuNTQ2IDAgMCAwIDAtMS4wOTJIMS42MjhhLjU0Ni41NDYgMCAwIDAgMCAxLjA5MXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},linkCallback:void 0},emoji:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHZpZXdCb3g9IjE1LjcyOSAyMi4wODIgMTcgMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI5LjcwOCAyNS4xMDRjLTMuMDIxLTMuMDIyLTcuOTM3LTMuMDIyLTEwLjk1OCAwLTMuMDIxIDMuMDItMy4wMiA3LjkzNiAwIDEwLjk1OCAzLjAyMSAzLjAyIDcuOTM3IDMuMDIgMTAuOTU4LS4wMDEgMy4wMi0zLjAyMSAzLjAyLTcuOTM2IDAtMTAuOTU3em0tLjg0NSAxMC4xMTJhNi41NiA2LjU2IDAgMCAxLTkuMjY4IDAgNi41NiA2LjU2IDAgMCAxIDAtOS4yNjcgNi41NiA2LjU2IDAgMCAxIDkuMjY4IDAgNi41NiA2LjU2IDAgMCAxIDAgOS4yNjd6bS03LjUyNC02LjczYS45MDYuOTA2IDAgMSAxIDEuODExIDAgLjkwNi45MDYgMCAwIDEtMS44MTEgMHptNC4xMDYgMGEuOTA2LjkwNiAwIDEgMSAxLjgxMiAwIC45MDYuOTA2IDAgMCAxLTEuODEyIDB6bTIuMTQxIDMuNzA4Yy0uNTYxIDEuMjk4LTEuODc1IDIuMTM3LTMuMzQ4IDIuMTM3LTEuNTA1IDAtMi44MjctLjg0My0zLjM2OS0yLjE0N2EuNDM4LjQzOCAwIDAgMSAuODEtLjMzNmMuNDA1Ljk3NiAxLjQxIDEuNjA3IDIuNTU5IDEuNjA3IDEuMTIzIDAgMi4xMjEtLjYzMSAyLjU0NC0xLjYwOGEuNDM4LjQzOCAwIDAgMSAuODA0LjM0N3oiLz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,emojis:[\"😀\",\"ðŸ˜\",\"😂\",\"😃\",\"😉\",\"😋\",\"😎\",\"ðŸ˜\",\"😗\",\"🤗\",\"🤔\",\"😣\",\"😫\",\"😴\",\"😌\",\"🤓\",\"😛\",\"😜\",\"😠\",\"😇\",\"😷\",\"😈\",\"👻\",\"😺\",\"😸\",\"😹\",\"😻\",\"😼\",\"😽\",\"🙀\",\"🙈\",\"🙉\",\"🙊\",\"👼\",\"👮\",\"🕵\",\"💂\",\"👳\",\"🎅\",\"👸\",\"👰\",\"👲\",\"ðŸ™\",\"🙇\",\"🚶\",\"ðŸƒ\",\"💃\",\"â›·\",\"ðŸ‚\",\"ðŸŒ\",\"ðŸ„\",\"🚣\",\"ðŸŠ\",\"⛹\",\"ðŸ‹\",\"🚴\",\"👫\",\"💪\",\"👈\",\"👉\",\"👆\",\"🖕\",\"👇\",\"🖖\",\"🤘\",\"ðŸ–\",\"👌\",\"ðŸ‘\",\"👎\",\"✊\",\"👊\",\"ðŸ‘\",\"🙌\",\"ðŸ™\",\"ðŸµ\",\"ðŸ¶\",\"ðŸ‡\",\"ðŸ¥\",\"ðŸ¸\",\"ðŸŒ\",\"ðŸ›\",\"ðŸœ\",\"ðŸ\",\"ðŸ‰\",\"ðŸ„\",\"ðŸ”\",\"ðŸ¤\",\"ðŸ¨\",\"ðŸª\",\"🎂\",\"ðŸ°\",\"ðŸ¾\",\"ðŸ·\",\"ðŸ¸\",\"ðŸº\",\"ðŸŒ\",\"🚑\",\"â°\",\"🌙\",\"ðŸŒ\",\"🌞\",\"â\",\"🌟\",\"🌠\",\"🌨\",\"🌩\",\"⛄\",\"🔥\",\"🎄\",\"🎈\",\"🎉\",\"🎊\",\"ðŸŽ\",\"🎗\",\"ðŸ€\",\"ðŸˆ\",\"🎲\",\"🔇\",\"🔈\",\"📣\",\"🔔\",\"🎵\",\"🎷\",\"💰\",\"🖊\",\"📅\",\"✅\",\"âŽ\",\"💯\"],title:void 0},embedded:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuNzA4IDYuNjE1YS40MzYuNDM2IDAgMCAwLS41NDMuMjkxbC0xLjgzIDYuMDQ1YS40MzYuNDM2IDAgMCAwIC44MzMuMjUyTDcgNy4xNmEuNDM2LjQzNiAwIDAgMC0uMjktLjU0NHpNOC45MzEgNi42MTVhLjQzNi40MzYgMCAwIDAtLjU0My4yOTFsLTEuODMgNi4wNDVhLjQzNi40MzYgMCAwIDAgLjgzNC4yNTJsMS44My02LjA0NGEuNDM2LjQzNiAwIDAgMC0uMjktLjU0NHoiLz48cGF0aCBkPSJNMTYuNTY0IDBILjQzNkEuNDM2LjQzNiAwIDAgMCAwIC40MzZ2MTYuMTI4YzAgLjI0LjE5NS40MzYuNDM2LjQzNmgxNi4xMjhjLjI0IDAgLjQzNi0uMTk1LjQzNi0uNDM2Vi40MzZBLjQzNi40MzYgMCAwIDAgMTYuNTY0IDB6TTMuNDg3Ljg3MmgxMC4wMjZ2MS43NDNIMy40ODdWLjg3MnptLTIuNjE1IDBoMS43NDN2MS43NDNILjg3MlYuODcyem0xNS4yNTYgMTUuMjU2SC44NzJWMy40ODhoMTUuMjU2djEyLjY0em0wLTEzLjUxM2gtMS43NDNWLjg3MmgxLjc0M3YxLjc0M3oiLz48Y2lyY2xlIGN4PSI5My44NjciIGN5PSIyNDUuMDY0IiByPSIxMy4xMjgiIHRyYW5zZm9ybT0ibWF0cml4KC4wMzMyIDAgMCAuMDMzMiAwIDApIi8+PGNpcmNsZSBjeD0iOTMuODY3IiBjeT0iMzYwLjU5MiIgcj0iMTMuMTI4IiB0cmFuc2Zvcm09Im1hdHJpeCguMDMzMiAwIDAgLjAzMzIgMCAwKSIvPjxwYXRoIGQ9Ik0xNC4yNTQgMTIuNjQxSDEwLjJhLjQzNi40MzYgMCAwIDAgMCAuODcyaDQuMDU0YS40MzYuNDM2IDAgMCAwIDAtLjg3MnoiLz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,embedCallback:void 0,defaultSize:{height:\"auto\",width:\"auto\"},title:void 0},image:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNzQxIDBILjI2Qy4xMTYgMCAwIC4xMzYgMCAuMzA0djEzLjM5MmMwIC4xNjguMTE2LjMwNC4yNTkuMzA0SDE0Ljc0Yy4xNDMgMCAuMjU5LS4xMzYuMjU5LS4zMDRWLjMwNEMxNSAuMTM2IDE0Ljg4NCAwIDE0Ljc0MSAwem0tLjI1OCAxMy4zOTFILjUxN1YuNjFoMTMuOTY2VjEzLjM5eiIvPjxwYXRoIGQ9Ik00LjEzOCA2LjczOGMuNzk0IDAgMS40NC0uNzYgMS40NC0xLjY5NXMtLjY0Ni0xLjY5NS0xLjQ0LTEuNjk1Yy0uNzk0IDAtMS40NC43Ni0xLjQ0IDEuNjk1IDAgLjkzNC42NDYgMS42OTUgMS40NCAxLjY5NXptMC0yLjc4MWMuNTA5IDAgLjkyMy40ODcuOTIzIDEuMDg2IDAgLjU5OC0uNDE0IDEuMDg2LS45MjMgMS4wODYtLjUwOSAwLS45MjMtLjQ4Ny0uOTIzLTEuMDg2IDAtLjU5OS40MTQtMS4wODYuOTIzLTEuMDg2ek0xLjgxIDEyLjE3NGMuMDYgMCAuMTIyLS4wMjUuMTcxLS4wNzZMNi4yIDcuNzI4bDIuNjY0IDMuMTM0YS4yMzIuMjMyIDAgMCAwIC4zNjYgMCAuMzQzLjM0MyAwIDAgMCAwLS40M0w3Ljk4NyA4Ljk2OWwyLjM3NC0zLjA2IDIuOTEyIDMuMTQyYy4xMDYuMTEzLjI3LjEwNS4zNjYtLjAyYS4zNDMuMzQzIDAgMCAwLS4wMTYtLjQzbC0zLjEwNC0zLjM0N2EuMjQ0LjI0NCAwIDAgMC0uMTg2LS4wOC4yNDUuMjQ1IDAgMCAwLS4xOC4xTDcuNjIyIDguNTM3IDYuMzk0IDcuMDk0YS4yMzIuMjMyIDAgMCAwLS4zNTQtLjAxM2wtNC40IDQuNTZhLjM0My4zNDMgMCAwIDAtLjAyNC40My4yNDMuMjQzIDAgMCAwIC4xOTQuMTAzeiIvPjwvZz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,urlEnabled:!0,uploadEnabled:!0,previewImage:!1,alignmentEnabled:!0,uploadCallback:void 0,inputAccept:\"image/gif,image/jpeg,image/jpg,image/png,image/svg\",alt:{present:!1,mandatory:!1},defaultSize:{height:\"auto\",width:\"auto\"},title:void 0},remove:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNOC4xIDE0bDYuNC03LjJjLjYtLjcuNi0xLjgtLjEtMi41bC0yLjctMi43Yy0uMy0uNC0uOC0uNi0xLjMtLjZIOC42Yy0uNSAwLTEgLjItMS40LjZMLjUgOS4yYy0uNi43LS42IDEuOS4xIDIuNWwyLjcgMi43Yy4zLjQuOC42IDEuMy42SDE2di0xSDguMXptLTEuMy0uMXMwLS4xIDAgMGwtMi43LTIuN2MtLjQtLjQtLjQtLjkgMC0xLjNMNy41IDZoLTFsLTMgMy4zYy0uNi43LS42IDEuNy4xIDIuNEw1LjkgMTRINC42Yy0uMiAwLS40LS4xLS42LS4yTDEuMiAxMWMtLjMtLjMtLjMtLjggMC0xLjFMNC43IDZoMS44TDEwIDJoMUw3LjUgNmwzLjEgMy43LTMuNSA0Yy0uMS4xLS4yLjEtLjMuMnoiLz48L3N2Zz4=\",className:void 0,component:void 0,title:void 0},history:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"undo\",\"redo\"],undo:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQuODc1YzIuNjcyIDAgNC44NDYtMi4xNDUgNC44NDYtNC43ODEgMC0yLjYzNy0yLjE3NC00Ljc4MS00Ljg0Ni00Ljc4MVY4LjVMMS42MTUgNC4yNSA3IDB2My4xODhjMy44NiAwIDcgMy4wOTggNyA2LjkwNlMxMC44NiAxNyA3IDE3cy03LTMuMDk4LTctNi45MDZoMi4xNTRjMCAyLjYzNiAyLjE3NCA0Ljc4MSA0Ljg0NiA0Ljc4MXoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\",className:void 0,title:void 0},redo:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuNTA0IDEzLjk3N2E0LjQ5NyA0LjQ5NyAwIDAgMS00LjQ5Mi00LjQ5MiA0LjQ5NyA0LjQ5NyAwIDAgMSA0LjQ5Mi00LjQ5M3YyLjk5NWw0Ljk5LTMuOTkzTDYuNTA0IDB2Mi45OTVhNi40OTYgNi40OTYgMCAwIDAtNi40ODggNi40OWMwIDMuNTc4IDIuOTEgNi40OSA2LjQ4OCA2LjQ5YTYuNDk2IDYuNDk2IDAgMCAwIDYuNDg3LTYuNDloLTEuOTk2YTQuNDk3IDQuNDk3IDAgMCAxLTQuNDkxIDQuNDkyeiIgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+\",className:void 0,title:void 0},title:void 0}},Uo={en:{\"generic.add\":\"Add\",\"generic.cancel\":\"Cancel\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Block Type\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Color Picker\",\"components.controls.colorpicker.text\":\"Text\",\"components.controls.colorpicker.background\":\"Highlight\",\"components.controls.embedded.embedded\":\"Embedded\",\"components.controls.embedded.embeddedlink\":\"Embedded Link\",\"components.controls.embedded.enterlink\":\"Enter link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Font\",\"components.controls.fontsize.fontsize\":\"Font Size\",\"components.controls.history.history\":\"History\",\"components.controls.history.undo\":\"Undo\",\"components.controls.history.redo\":\"Redo\",\"components.controls.image.image\":\"Image\",\"components.controls.image.fileUpload\":\"File Upload\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop the file or click to upload\",\"components.controls.inline.bold\":\"Bold\",\"components.controls.inline.italic\":\"Italic\",\"components.controls.inline.underline\":\"Underline\",\"components.controls.inline.strikethrough\":\"Strikethrough\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Superscript\",\"components.controls.inline.subscript\":\"Subscript\",\"components.controls.link.linkTitle\":\"Link Title\",\"components.controls.link.linkTarget\":\"Link Target\",\"components.controls.link.linkTargetOption\":\"Open link in new window\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Unlink\",\"components.controls.list.list\":\"List\",\"components.controls.list.unordered\":\"Unordered\",\"components.controls.list.ordered\":\"Ordered\",\"components.controls.list.indent\":\"Indent\",\"components.controls.list.outdent\":\"Outdent\",\"components.controls.remove.remove\":\"Remove\",\"components.controls.textalign.textalign\":\"Text Align\",\"components.controls.textalign.left\":\"Left\",\"components.controls.textalign.center\":\"Center\",\"components.controls.textalign.right\":\"Right\",\"components.controls.textalign.justify\":\"Justify\"},fr:{\"generic.add\":\"Ok\",\"generic.cancel\":\"Annuler\",\"components.controls.blocktype.h1\":\"Titre 1\",\"components.controls.blocktype.h2\":\"Titre 2\",\"components.controls.blocktype.h3\":\"Titre 3\",\"components.controls.blocktype.h4\":\"Titre 4\",\"components.controls.blocktype.h5\":\"Titre 5\",\"components.controls.blocktype.h6\":\"Titre 6\",\"components.controls.blocktype.blockquote\":\"Citation\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Type bloc\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Palette de couleur\",\"components.controls.colorpicker.text\":\"Texte\",\"components.controls.colorpicker.background\":\"Fond\",\"components.controls.embedded.embedded\":\"Embedded\",\"components.controls.embedded.embeddedlink\":\"Lien iFrame\",\"components.controls.embedded.enterlink\":\"Entrer le lien\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Police\",\"components.controls.fontsize.fontsize\":\"Taille de police\",\"components.controls.history.history\":\"Historique\",\"components.controls.history.undo\":\"Précédent\",\"components.controls.history.redo\":\"Suivant\",\"components.controls.image.image\":\"Image\",\"components.controls.image.fileUpload\":\"Téléchargement\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Glisser une image ou cliquer pour télécharger\",\"components.controls.inline.bold\":\"Gras\",\"components.controls.inline.italic\":\"Italique\",\"components.controls.inline.underline\":\"Souligner\",\"components.controls.inline.strikethrough\":\"Barrer\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Exposant\",\"components.controls.inline.subscript\":\"Indice\",\"components.controls.link.linkTitle\":\"Titre du lien\",\"components.controls.link.linkTarget\":\"Cible du lien\",\"components.controls.link.linkTargetOption\":\"Ouvrir le lien dans une nouvelle fenêtre\",\"components.controls.link.link\":\"Lier\",\"components.controls.link.unlink\":\"Délier\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Désordonnée\",\"components.controls.list.ordered\":\"Ordonnée\",\"components.controls.list.indent\":\"Augmenter le retrait\",\"components.controls.list.outdent\":\"Diminuer le retrait\",\"components.controls.remove.remove\":\"Supprimer\",\"components.controls.textalign.textalign\":\"Alignement du texte\",\"components.controls.textalign.left\":\"Gauche\",\"components.controls.textalign.center\":\"Centre\",\"components.controls.textalign.right\":\"Droite\",\"components.controls.textalign.justify\":\"Justifier\"},zh:{\"generic.add\":\"æ·»åŠ \",\"generic.cancel\":\"å–消\",\"components.controls.blocktype.h1\":\"æ ‡é¢˜1\",\"components.controls.blocktype.h2\":\"æ ‡é¢˜2\",\"components.controls.blocktype.h3\":\"æ ‡é¢˜3\",\"components.controls.blocktype.h4\":\"æ ‡é¢˜4\",\"components.controls.blocktype.h5\":\"æ ‡é¢˜5\",\"components.controls.blocktype.h6\":\"æ ‡é¢˜6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"æºç \",\"components.controls.blocktype.blocktype\":\"æ ·å¼\",\"components.controls.blocktype.normal\":\"æ£æ–‡\",\"components.controls.colorpicker.colorpicker\":\"选色器\",\"components.controls.colorpicker.text\":\"æ–‡å—\",\"components.controls.colorpicker.background\":\"背景\",\"components.controls.embedded.embedded\":\"内嵌\",\"components.controls.embedded.embeddedlink\":\"内嵌网页\",\"components.controls.embedded.enterlink\":\"输入网页地å€\",\"components.controls.emoji.emoji\":\"表情符å·\",\"components.controls.fontfamily.fontfamily\":\"å—体\",\"components.controls.fontsize.fontsize\":\"å—å·\",\"components.controls.history.history\":\"历å²\",\"components.controls.history.undo\":\"撤销\",\"components.controls.history.redo\":\"æ¢å¤\",\"components.controls.image.image\":\"图片\",\"components.controls.image.fileUpload\":\"æ¥è‡ªæ–‡ä»¶\",\"components.controls.image.byURL\":\"在线图片\",\"components.controls.image.dropFileText\":\"ç‚¹å‡»æˆ–è€…æ‹–æ‹½æ–‡ä»¶ä¸Šä¼ \",\"components.controls.inline.bold\":\"粗体\",\"components.controls.inline.italic\":\"斜体\",\"components.controls.inline.underline\":\"下划线\",\"components.controls.inline.strikethrough\":\"åˆ é™¤çº¿\",\"components.controls.inline.monospace\":\"ç‰å®½å—体\",\"components.controls.inline.superscript\":\"ä¸Šæ ‡\",\"components.controls.inline.subscript\":\"ä¸‹æ ‡\",\"components.controls.link.linkTitle\":\"超链接\",\"components.controls.link.linkTarget\":\"输入链接地å€\",\"components.controls.link.linkTargetOption\":\"在新窗å£ä¸æ‰“开链接\",\"components.controls.link.link\":\"链接\",\"components.controls.link.unlink\":\"åˆ é™¤é“¾æŽ¥\",\"components.controls.list.list\":\"列表\",\"components.controls.list.unordered\":\"项目符å·\",\"components.controls.list.ordered\":\"ç¼–å·\",\"components.controls.list.indent\":\"å¢žåŠ ç¼©è¿›é‡\",\"components.controls.list.outdent\":\"å‡å°‘缩进é‡\",\"components.controls.remove.remove\":\"æ¸…é™¤æ ¼å¼\",\"components.controls.textalign.textalign\":\"文本对é½\",\"components.controls.textalign.left\":\"文本左对é½\",\"components.controls.textalign.center\":\"å±…ä¸\",\"components.controls.textalign.right\":\"文本å³å¯¹é½\",\"components.controls.textalign.justify\":\"两端对é½\"},ru:{\"generic.add\":\"Добавить\",\"generic.cancel\":\"Отменить\",\"components.controls.blocktype.h1\":\"Заголовок 1\",\"components.controls.blocktype.h2\":\"Заголовок 2\",\"components.controls.blocktype.h3\":\"Заголовок 3\",\"components.controls.blocktype.h4\":\"Заголовок 4\",\"components.controls.blocktype.h5\":\"Заголовок 5\",\"components.controls.blocktype.h6\":\"Заголовок 6\",\"components.controls.blocktype.blockquote\":\"Цитата\",\"components.controls.blocktype.code\":\"Код\",\"components.controls.blocktype.blocktype\":\"Форматирование\",\"components.controls.blocktype.normal\":\"Обычный\",\"components.controls.colorpicker.colorpicker\":\"Выбор цвета\",\"components.controls.colorpicker.text\":\"ТекÑÑ‚\",\"components.controls.colorpicker.background\":\"Фон\",\"components.controls.embedded.embedded\":\"Ð’Ñтраивание\",\"components.controls.embedded.embeddedlink\":\"СÑылка в iFrame\",\"components.controls.embedded.enterlink\":\"Ð’Ñтавьте ÑÑылку\",\"components.controls.emoji.emoji\":\"Ðмодзи\",\"components.controls.fontfamily.fontfamily\":\"Шрифт\",\"components.controls.fontsize.fontsize\":\"Размер шрифта\",\"components.controls.history.history\":\"ИÑториÑ\",\"components.controls.history.undo\":\"Отменить\",\"components.controls.history.redo\":\"Вернуть\",\"components.controls.image.image\":\"Изображение\",\"components.controls.image.fileUpload\":\"Файлы\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"ПеремеÑтите в Ñту облаÑÑ‚ÑŒ файлы или кликните Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸\",\"components.controls.inline.bold\":\"Жирный\",\"components.controls.inline.italic\":\"КурÑив\",\"components.controls.inline.underline\":\"Подчеркивание\",\"components.controls.inline.strikethrough\":\"Зачеркивание\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Верхний индекÑ\",\"components.controls.inline.subscript\":\"Ðижний индекÑ\",\"components.controls.link.linkTitle\":\"ТекÑÑ‚\",\"components.controls.link.linkTarget\":\"ÐÐ´Ñ€ÐµÑ ÑÑылки\",\"components.controls.link.linkTargetOption\":\"Открывать в новом окне\",\"components.controls.link.link\":\"СÑылка\",\"components.controls.link.unlink\":\"Убрать ÑÑылку\",\"components.controls.list.list\":\"СпиÑок\",\"components.controls.list.unordered\":\"ÐеупорÑдоченный\",\"components.controls.list.ordered\":\"УпорÑдоченный\",\"components.controls.list.indent\":\"ОтÑтуп\",\"components.controls.list.outdent\":\"Ð’Ñ‹Ñтуп\",\"components.controls.remove.remove\":\"Удалить\",\"components.controls.textalign.textalign\":\"Выравнивание текÑта\",\"components.controls.textalign.left\":\"Слева\",\"components.controls.textalign.center\":\"По центру\",\"components.controls.textalign.right\":\"Справа\",\"components.controls.textalign.justify\":\"Выравнить\"},pt:{\"generic.add\":\"Ok\",\"generic.cancel\":\"Cancelar\",\"components.controls.blocktype.h1\":\"TÃtulo 1\",\"components.controls.blocktype.h2\":\"TÃtulo 2\",\"components.controls.blocktype.h3\":\"TÃtulo 3\",\"components.controls.blocktype.h4\":\"TÃtulo 4\",\"components.controls.blocktype.h5\":\"TÃtulo 5\",\"components.controls.blocktype.h6\":\"TÃtulo 6\",\"components.controls.blocktype.blockquote\":\"Citação\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Estilo\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Paleta de cores\",\"components.controls.colorpicker.text\":\"Texto\",\"components.controls.colorpicker.background\":\"Fundo\",\"components.controls.embedded.embedded\":\"Embarcado\",\"components.controls.embedded.embeddedlink\":\"Link embarcado\",\"components.controls.embedded.enterlink\":\"Coloque o link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fonte\",\"components.controls.fontsize.fontsize\":\"Tamanho da Fonte\",\"components.controls.history.history\":\"Histórico\",\"components.controls.history.undo\":\"Desfazer\",\"components.controls.history.redo\":\"Refazer\",\"components.controls.image.image\":\"Imagem\",\"components.controls.image.fileUpload\":\"Carregar arquivo\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Arraste uma imagem aqui ou clique para carregar\",\"components.controls.inline.bold\":\"Negrito\",\"components.controls.inline.italic\":\"Itálico\",\"components.controls.inline.underline\":\"Sublinhado\",\"components.controls.inline.strikethrough\":\"Strikethrough\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Sobrescrito\",\"components.controls.inline.subscript\":\"Subscrito\",\"components.controls.link.linkTitle\":\"TÃtulo do link\",\"components.controls.link.linkTarget\":\"Alvo do link\",\"components.controls.link.linkTargetOption\":\"Abrir link em outra janela\",\"components.controls.link.link\":\"Adicionar Link\",\"components.controls.link.unlink\":\"Remover link\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Sem ordenção\",\"components.controls.list.ordered\":\"Ordenada\",\"components.controls.list.indent\":\"Aumentar recuo\",\"components.controls.list.outdent\":\"Diminuir recuo\",\"components.controls.remove.remove\":\"Remover\",\"components.controls.textalign.textalign\":\"Alinhamento do texto\",\"components.controls.textalign.left\":\"À Esquerda\",\"components.controls.textalign.center\":\"Centralizado\",\"components.controls.textalign.right\":\"À Direita\",\"components.controls.textalign.justify\":\"Justificado\"},ko:{\"generic.add\":\"ìž…ë ¥\",\"generic.cancel\":\"취소\",\"components.controls.blocktype.h1\":\"ì œëª©1\",\"components.controls.blocktype.h2\":\"ì œëª©2\",\"components.controls.blocktype.h3\":\"ì œëª©3\",\"components.controls.blocktype.h4\":\"ì œëª©4\",\"components.controls.blocktype.h5\":\"ì œëª©5\",\"components.controls.blocktype.h6\":\"ì œëª©6\",\"components.controls.blocktype.blockquote\":\"ì¸ìš©\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"블ë¡\",\"components.controls.blocktype.normal\":\"표준\",\"components.controls.colorpicker.colorpicker\":\"ìƒ‰ìƒ ì„ íƒ\",\"components.controls.colorpicker.text\":\"글꼴색\",\"components.controls.colorpicker.background\":\"배경색\",\"components.controls.embedded.embedded\":\"ìž„ë² ë“œ\",\"components.controls.embedded.embeddedlink\":\"ìž„ë² ë“œ ë§í¬\",\"components.controls.embedded.enterlink\":\"주소를 ìž…ë ¥í•˜ì„¸ìš”\",\"components.controls.emoji.emoji\":\"ì´ëª¨ì§€\",\"components.controls.fontfamily.fontfamily\":\"글꼴\",\"components.controls.fontsize.fontsize\":\"글꼴 í¬ê¸°\",\"components.controls.history.history\":\"ížˆìŠ¤í† ë¦¬\",\"components.controls.history.undo\":\"실행 취소\",\"components.controls.history.redo\":\"다시 실행\",\"components.controls.image.image\":\"ì´ë¯¸ì§€\",\"components.controls.image.fileUpload\":\"íŒŒì¼ ì—…ë¡œë“œ\",\"components.controls.image.byURL\":\"주소\",\"components.controls.image.dropFileText\":\"í´ë¦í•˜ê±°ë‚˜ 파ì¼ì„ ë“œë¡í•˜ì—¬ 업로드하세요\",\"components.controls.inline.bold\":\"굵게\",\"components.controls.inline.italic\":\"기울임꼴\",\"components.controls.inline.underline\":\"밑줄\",\"components.controls.inline.strikethrough\":\"ì·¨ì†Œì„ \",\"components.controls.inline.monospace\":\"ê³ ì • 너비\",\"components.controls.inline.superscript\":\"위 첨ìž\",\"components.controls.inline.subscript\":\"아래 첨ìž\",\"components.controls.link.linkTitle\":\"ë§í¬ ì œëª©\",\"components.controls.link.linkTarget\":\"ë§í¬ 타겟\",\"components.controls.link.linkTargetOption\":\"새창으로 열기\",\"components.controls.link.link\":\"ë§í¬\",\"components.controls.link.unlink\":\"ë§í¬ ì œê±°\",\"components.controls.list.list\":\"리스트\",\"components.controls.list.unordered\":\"ì¼ë°˜ 리스트\",\"components.controls.list.ordered\":\"순서 리스트\",\"components.controls.list.indent\":\"들여쓰기\",\"components.controls.list.outdent\":\"내어쓰기\",\"components.controls.remove.remove\":\"ì‚ì œ\",\"components.controls.textalign.textalign\":\"í…스트 ì •ë ¬\",\"components.controls.textalign.left\":\"왼쪽\",\"components.controls.textalign.center\":\"중앙\",\"components.controls.textalign.right\":\"오른쪽\",\"components.controls.textalign.justify\":\"양쪽\"},it:{\"generic.add\":\"Aggiungi\",\"generic.cancel\":\"Annulla\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Citazione\",\"components.controls.blocktype.code\":\"Codice\",\"components.controls.blocktype.blocktype\":\"Stili\",\"components.controls.blocktype.normal\":\"Normale\",\"components.controls.colorpicker.colorpicker\":\"Colore testo\",\"components.controls.colorpicker.text\":\"Testo\",\"components.controls.colorpicker.background\":\"Evidenziazione\",\"components.controls.embedded.embedded\":\"Incorpora\",\"components.controls.embedded.embeddedlink\":\"Incorpora link\",\"components.controls.embedded.enterlink\":\"Inserisci link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Carattere\",\"components.controls.fontsize.fontsize\":\"Dimensione carattere\",\"components.controls.history.history\":\"Modifiche\",\"components.controls.history.undo\":\"Annulla\",\"components.controls.history.redo\":\"Ripristina\",\"components.controls.image.image\":\"Immagine\",\"components.controls.image.fileUpload\":\"Carica immagine\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Trascina il file o clicca per caricare\",\"components.controls.inline.bold\":\"Grassetto\",\"components.controls.inline.italic\":\"Corsivo\",\"components.controls.inline.underline\":\"Sottolineato\",\"components.controls.inline.strikethrough\":\"Barrato\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Apice\",\"components.controls.inline.subscript\":\"Pedice\",\"components.controls.link.linkTitle\":\"Testo\",\"components.controls.link.linkTarget\":\"Link\",\"components.controls.link.linkTargetOption\":\"Apri link in una nuova finestra\",\"components.controls.link.link\":\"Inserisci link\",\"components.controls.link.unlink\":\"Rimuovi link\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Elenco puntato\",\"components.controls.list.ordered\":\"Elenco numerato\",\"components.controls.list.indent\":\"Indent\",\"components.controls.list.outdent\":\"Outdent\",\"components.controls.remove.remove\":\"Rimuovi formattazione\",\"components.controls.textalign.textalign\":\"Allineamento del testo\",\"components.controls.textalign.left\":\"Allinea a sinistra\",\"components.controls.textalign.center\":\"Allinea al centro\",\"components.controls.textalign.right\":\"Allinea a destra\",\"components.controls.textalign.justify\":\"Giustifica\"},nl:{\"generic.add\":\"Toevoegen\",\"generic.cancel\":\"Annuleren\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Blocktype\",\"components.controls.blocktype.normal\":\"Normaal\",\"components.controls.colorpicker.colorpicker\":\"Kleurkiezer\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"Achtergrond\",\"components.controls.embedded.embedded\":\"Ingevoegd\",\"components.controls.embedded.embeddedlink\":\"Ingevoegde link\",\"components.controls.embedded.enterlink\":\"Voeg link toe\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Lettertype\",\"components.controls.fontsize.fontsize\":\"Lettergrootte\",\"components.controls.history.history\":\"Geschiedenis\",\"components.controls.history.undo\":\"Ongedaan maken\",\"components.controls.history.redo\":\"Opnieuw\",\"components.controls.image.image\":\"Afbeelding\",\"components.controls.image.fileUpload\":\"Bestand uploaden\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop het bestand hier of klik om te uploaden\",\"components.controls.inline.bold\":\"Dikgedrukt\",\"components.controls.inline.italic\":\"Schuingedrukt\",\"components.controls.inline.underline\":\"Onderstrepen\",\"components.controls.inline.strikethrough\":\"Doorstrepen\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Superscript\",\"components.controls.inline.subscript\":\"Subscript\",\"components.controls.link.linkTitle\":\"Linktitel\",\"components.controls.link.linkTarget\":\"Link bestemming\",\"components.controls.link.linkTargetOption\":\"Open link in een nieuw venster\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Unlink\",\"components.controls.list.list\":\"Lijst\",\"components.controls.list.unordered\":\"Ongeordend\",\"components.controls.list.ordered\":\"Geordend\",\"components.controls.list.indent\":\"Inspringen\",\"components.controls.list.outdent\":\"Inspringen verkleinen\",\"components.controls.remove.remove\":\"Verwijderen\",\"components.controls.textalign.textalign\":\"Tekst uitlijnen\",\"components.controls.textalign.left\":\"Links\",\"components.controls.textalign.center\":\"Gecentreerd\",\"components.controls.textalign.right\":\"Rechts\",\"components.controls.textalign.justify\":\"Uitgelijnd\"},de:{\"generic.add\":\"Hinzufügen\",\"generic.cancel\":\"Abbrechen\",\"components.controls.blocktype.h1\":\"Ãœberschrift 1\",\"components.controls.blocktype.h2\":\"Ãœberschrift 2\",\"components.controls.blocktype.h3\":\"Ãœberschrift 3\",\"components.controls.blocktype.h4\":\"Ãœberschrift 4\",\"components.controls.blocktype.h5\":\"Ãœberschrift 5\",\"components.controls.blocktype.h6\":\"Ãœberschrift 6\",\"components.controls.blocktype.blockquote\":\"Zitat\",\"components.controls.blocktype.code\":\"Quellcode\",\"components.controls.blocktype.blocktype\":\"Blocktyp\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Farbauswahl\",\"components.controls.colorpicker.text\":\"Text\",\"components.controls.colorpicker.background\":\"Hintergrund\",\"components.controls.embedded.embedded\":\"Eingebettet\",\"components.controls.embedded.embeddedlink\":\"Eingebetteter Link\",\"components.controls.embedded.enterlink\":\"Link eingeben\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Schriftart\",\"components.controls.fontsize.fontsize\":\"Schriftgröße\",\"components.controls.history.history\":\"Historie\",\"components.controls.history.undo\":\"Zurücknehmen\",\"components.controls.history.redo\":\"Wiederholen\",\"components.controls.image.image\":\"Bild\",\"components.controls.image.fileUpload\":\"Datei-Upload\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Dateien ziehen und ablegen, oder klicken zum Hochladen\",\"components.controls.inline.bold\":\"Fett\",\"components.controls.inline.italic\":\"Kursiv\",\"components.controls.inline.underline\":\"Unterstreichen\",\"components.controls.inline.strikethrough\":\"Durchstreichen\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Hochgestellt\",\"components.controls.inline.subscript\":\"Tiefgestellt\",\"components.controls.link.linkTitle\":\"Link-Titel\",\"components.controls.link.linkTarget\":\"Link-Ziel\",\"components.controls.link.linkTargetOption\":\"Link in neuem Fenster öffnen\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Aufheben\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Aufzählung\",\"components.controls.list.ordered\":\"Nummerierte Liste\",\"components.controls.list.indent\":\"Einzug vergrößern\",\"components.controls.list.outdent\":\"Einzug reduzieren\",\"components.controls.remove.remove\":\"Entfernen\",\"components.controls.textalign.textalign\":\"Textausrichtung\",\"components.controls.textalign.left\":\"Linksbündig\",\"components.controls.textalign.center\":\"Zentrieren\",\"components.controls.textalign.right\":\"Rechtsbündig\",\"components.controls.textalign.justify\":\"Blocksatz\"},da:{\"generic.add\":\"Tilføj\",\"generic.cancel\":\"Annuller\",\"components.controls.blocktype.h1\":\"Overskrift 1\",\"components.controls.blocktype.h2\":\"Overskrift 2\",\"components.controls.blocktype.h3\":\"Overskrift 3\",\"components.controls.blocktype.h4\":\"Overskrift 4\",\"components.controls.blocktype.h5\":\"Overskrift 5\",\"components.controls.blocktype.h6\":\"Overskrift 6\",\"components.controls.blocktype.blockquote\":\"Blokcitat\",\"components.controls.blocktype.code\":\"Kode\",\"components.controls.blocktype.blocktype\":\"Blok Type\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Farver\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"Baggrund\",\"components.controls.embedded.embedded\":\"Indlejre\",\"components.controls.embedded.embeddedlink\":\"Indlejre Link\",\"components.controls.embedded.enterlink\":\"Indtast link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fonttype\",\"components.controls.fontsize.fontsize\":\"Fontstørrelser\",\"components.controls.history.history\":\"Historie\",\"components.controls.history.undo\":\"Fortryd\",\"components.controls.history.redo\":\"Gendan\",\"components.controls.image.image\":\"Billede\",\"components.controls.image.fileUpload\":\"Filoverførsel\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop filen eller klik for at uploade\",\"components.controls.inline.bold\":\"Fed\",\"components.controls.inline.italic\":\"Kursiv\",\"components.controls.inline.underline\":\"Understrege\",\"components.controls.inline.strikethrough\":\"Gennemstreget\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Hævet\",\"components.controls.inline.subscript\":\"Sænket\",\"components.controls.link.linkTitle\":\"Link Titel\",\"components.controls.link.linkTarget\":\"Link MÃ¥l\",\"components.controls.link.linkTargetOption\":\"Ã…bn link i nyt vindue\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Fjern link\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Uordnet\",\"components.controls.list.ordered\":\"Ordnet\",\"components.controls.list.indent\":\"Indrykning\",\"components.controls.list.outdent\":\"Udrykning\",\"components.controls.remove.remove\":\"Fjern\",\"components.controls.textalign.textalign\":\"Tekstjustering\",\"components.controls.textalign.left\":\"Venstre\",\"components.controls.textalign.center\":\"Center\",\"components.controls.textalign.right\":\"Højre\",\"components.controls.textalign.justify\":\"Margener\"},zh_tw:{\"generic.add\":\"新增\",\"generic.cancel\":\"å–消\",\"components.controls.blocktype.h1\":\"標題1\",\"components.controls.blocktype.h2\":\"標題2\",\"components.controls.blocktype.h3\":\"標題3\",\"components.controls.blocktype.h4\":\"標題4\",\"components.controls.blocktype.h5\":\"標題5\",\"components.controls.blocktype.h6\":\"標題6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"程å¼ç¢¼\",\"components.controls.blocktype.blocktype\":\"樣å¼\",\"components.controls.blocktype.normal\":\"æ£æ–‡\",\"components.controls.colorpicker.colorpicker\":\"é¸è‰²å™¨\",\"components.controls.colorpicker.text\":\"æ–‡å—\",\"components.controls.colorpicker.background\":\"背景\",\"components.controls.embedded.embedded\":\"內嵌\",\"components.controls.embedded.embeddedlink\":\"內嵌網é \",\"components.controls.embedded.enterlink\":\"輸入網é 地å€\",\"components.controls.emoji.emoji\":\"表情符號\",\"components.controls.fontfamily.fontfamily\":\"å—é«”\",\"components.controls.fontsize.fontsize\":\"å—體大å°\",\"components.controls.history.history\":\"æ·å²ç´€éŒ„\",\"components.controls.history.undo\":\"復原\",\"components.controls.history.redo\":\"é‡åš\",\"components.controls.image.image\":\"圖片\",\"components.controls.image.fileUpload\":\"檔案上傳\",\"components.controls.image.byURL\":\"網å€\",\"components.controls.image.dropFileText\":\"點擊或拖曳檔案上傳\",\"components.controls.inline.bold\":\"ç²—é«”\",\"components.controls.inline.italic\":\"斜體\",\"components.controls.inline.underline\":\"底線\",\"components.controls.inline.strikethrough\":\"刪除線\",\"components.controls.inline.monospace\":\"ç‰å¯¬å—é«”\",\"components.controls.inline.superscript\":\"上標\",\"components.controls.inline.subscript\":\"下標\",\"components.controls.link.linkTitle\":\"超連çµ\",\"components.controls.link.linkTarget\":\"輸入連çµä½å€\",\"components.controls.link.linkTargetOption\":\"在新視窗打開連çµ\",\"components.controls.link.link\":\"連çµ\",\"components.controls.link.unlink\":\"刪除連çµ\",\"components.controls.list.list\":\"列表\",\"components.controls.list.unordered\":\"é …ç›®ç¬¦è™Ÿ\",\"components.controls.list.ordered\":\"編號\",\"components.controls.list.indent\":\"å¢žåŠ ç¸®æŽ’\",\"components.controls.list.outdent\":\"減少縮排\",\"components.controls.remove.remove\":\"æ¸…é™¤æ ¼å¼\",\"components.controls.textalign.textalign\":\"æ–‡å—å°é½Š\",\"components.controls.textalign.left\":\"æ–‡å—å‘å·¦å°é½Š\",\"components.controls.textalign.center\":\"æ–‡å—ç½®ä¸\",\"components.controls.textalign.right\":\"æ–‡å—å‘å³å°é½Š\",\"components.controls.textalign.justify\":\"兩端å°é½Š\"},pl:{\"generic.add\":\"Dodaj\",\"generic.cancel\":\"Anuluj\",\"components.controls.blocktype.h1\":\"Nagłówek 1\",\"components.controls.blocktype.h2\":\"Nagłówek 2\",\"components.controls.blocktype.h3\":\"Nagłówek 3\",\"components.controls.blocktype.h4\":\"Nagłówek 4\",\"components.controls.blocktype.h5\":\"Nagłówek 5\",\"components.controls.blocktype.h6\":\"Nagłówek 6\",\"components.controls.blocktype.blockquote\":\"Cytat\",\"components.controls.blocktype.code\":\"Kod\",\"components.controls.blocktype.blocktype\":\"Format\",\"components.controls.blocktype.normal\":\"Normalny\",\"components.controls.colorpicker.colorpicker\":\"Kolor\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"TÅ‚o\",\"components.controls.embedded.embedded\":\"Osadź\",\"components.controls.embedded.embeddedlink\":\"Osadź odnoÅ›nik\",\"components.controls.embedded.enterlink\":\"Wprowadź odnoÅ›nik\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Krój czcionki\",\"components.controls.fontsize.fontsize\":\"Rozmiar czcionki\",\"components.controls.history.history\":\"Historia\",\"components.controls.history.undo\":\"Cofnij\",\"components.controls.history.redo\":\"Ponów\",\"components.controls.image.image\":\"Obrazek\",\"components.controls.image.fileUpload\":\"PrzeÅ›lij plik\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Upuść plik lub kliknij, aby przesÅ‚ać\",\"components.controls.inline.bold\":\"Pogrubienie\",\"components.controls.inline.italic\":\"Kursywa\",\"components.controls.inline.underline\":\"PodkreÅ›lenie\",\"components.controls.inline.strikethrough\":\"PrzekreÅ›lenie\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Indeks górny\",\"components.controls.inline.subscript\":\"Indeks dolny\",\"components.controls.link.linkTitle\":\"TytuÅ‚ odnoÅ›nika\",\"components.controls.link.linkTarget\":\"Adres odnoÅ›nika\",\"components.controls.link.linkTargetOption\":\"Otwórz odnoÅ›nik w nowej karcie\",\"components.controls.link.link\":\"Wstaw odnoÅ›nik\",\"components.controls.link.unlink\":\"UsuÅ„ odnoÅ›nik\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Lista nieuporzÄ…dkowana\",\"components.controls.list.ordered\":\"Lista uporzÄ…dkowana\",\"components.controls.list.indent\":\"ZwiÄ™ksz wciÄ™cie\",\"components.controls.list.outdent\":\"Zmniejsz wciÄ™cie\",\"components.controls.remove.remove\":\"UsuÅ„\",\"components.controls.textalign.textalign\":\"Wyrównaj tekst\",\"components.controls.textalign.left\":\"Do lewej\",\"components.controls.textalign.center\":\"Do Å›rodka\",\"components.controls.textalign.right\":\"Do prawej\",\"components.controls.textalign.justify\":\"Wyjustuj\"},es:{\"generic.add\":\"Añadir\",\"generic.cancel\":\"Cancelar\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Código\",\"components.controls.blocktype.blocktype\":\"Tipo de bloque\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Seleccionar color\",\"components.controls.colorpicker.text\":\"Texto\",\"components.controls.colorpicker.background\":\"Subrayado\",\"components.controls.embedded.embedded\":\"Adjuntar\",\"components.controls.embedded.embeddedlink\":\"Adjuntar Link\",\"components.controls.embedded.enterlink\":\"Introducir link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fuente\",\"components.controls.fontsize.fontsize\":\"Tamaño de fuente\",\"components.controls.history.history\":\"Histórico\",\"components.controls.history.undo\":\"Deshacer\",\"components.controls.history.redo\":\"Rehacer\",\"components.controls.image.image\":\"Imagen\",\"components.controls.image.fileUpload\":\"Subir archivo\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Arrastra el archivo o haz click para subirlo\",\"components.controls.inline.bold\":\"Negrita\",\"components.controls.inline.italic\":\"Cursiva\",\"components.controls.inline.underline\":\"Subrayado\",\"components.controls.inline.strikethrough\":\"Tachado\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"SobreÃndice\",\"components.controls.inline.subscript\":\"SubÃndice\",\"components.controls.link.linkTitle\":\"TÃtulo del enlace\",\"components.controls.link.linkTarget\":\"Objetivo del enlace\",\"components.controls.link.linkTargetOption\":\"Abrir en nueva ventana\",\"components.controls.link.link\":\"Enlazar\",\"components.controls.link.unlink\":\"Desenlazar\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Desordenada\",\"components.controls.list.ordered\":\"Ordenada\",\"components.controls.list.indent\":\"Indentada\",\"components.controls.list.outdent\":\"Dentada\",\"components.controls.remove.remove\":\"Eliminar\",\"components.controls.textalign.textalign\":\"Alineación del texto\",\"components.controls.textalign.left\":\"Izquierda\",\"components.controls.textalign.center\":\"Centrado\",\"components.controls.textalign.right\":\"Derecha\",\"components.controls.textalign.justify\":\"Justificado\"},ja:{\"generic.add\":\"è¿½åŠ \",\"generic.cancel\":\"ã‚ャンセル\",\"components.controls.blocktype.h1\":\"見出ã—1\",\"components.controls.blocktype.h2\":\"見出ã—2\",\"components.controls.blocktype.h3\":\"見出ã—3\",\"components.controls.blocktype.h4\":\"見出ã—4\",\"components.controls.blocktype.h5\":\"見出ã—5\",\"components.controls.blocktype.h6\":\"見出ã—6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"コード\",\"components.controls.blocktype.blocktype\":\"スタイル\",\"components.controls.blocktype.normal\":\"標準テã‚スト\",\"components.controls.colorpicker.colorpicker\":\"テã‚ストã®è‰²\",\"components.controls.colorpicker.text\":\"テã‚スト\",\"components.controls.colorpicker.background\":\"ãƒã‚¤ãƒ©ã‚¤ãƒˆ\",\"components.controls.embedded.embedded\":\"埋ã‚è¾¼ã¿\",\"components.controls.embedded.embeddedlink\":\"埋ã‚è¾¼ã¿ãƒªãƒ³ã‚¯\",\"components.controls.embedded.enterlink\":\"リンクを入力ã—ã¦ãã ã•ã„\",\"components.controls.emoji.emoji\":\"絵文å—\",\"components.controls.fontfamily.fontfamily\":\"フォント\",\"components.controls.fontsize.fontsize\":\"フォントサイズ\",\"components.controls.history.history\":\"å±¥æ´\",\"components.controls.history.undo\":\"å…ƒã«æˆ»ã™\",\"components.controls.history.redo\":\"ã‚„ã‚Šç›´ã—\",\"components.controls.image.image\":\"ç”»åƒ\",\"components.controls.image.fileUpload\":\"ファイルをアップãƒãƒ¼ãƒ‰\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"ã“ã“ã«ç”»åƒã‚’ドラッグã™ã‚‹ã‹ã€ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„\",\"components.controls.inline.bold\":\"太å—\",\"components.controls.inline.italic\":\"斜体\",\"components.controls.inline.underline\":\"下線\",\"components.controls.inline.strikethrough\":\"å–り消ã—ç·š\",\"components.controls.inline.monospace\":\"ç‰å¹…フォント\",\"components.controls.inline.superscript\":\"上付ãæ–‡å—\",\"components.controls.inline.subscript\":\"下付ãæ–‡å—\",\"components.controls.link.linkTitle\":\"リンクタイトル\",\"components.controls.link.linkTarget\":\"リンク対象\",\"components.controls.link.linkTargetOption\":\"æ–°ã—ã„ウィンドウã§é–‹ã\",\"components.controls.link.link\":\"リンク\",\"components.controls.link.unlink\":\"リンクを解除\",\"components.controls.list.list\":\"リスト\",\"components.controls.list.unordered\":\"箇æ¡æ›¸ã\",\"components.controls.list.ordered\":\"番å·ä»˜ã\",\"components.controls.list.indent\":\"インデント増\",\"components.controls.list.outdent\":\"インデント減\",\"components.controls.remove.remove\":\"書å¼ã‚’クリア\",\"components.controls.textalign.textalign\":\"整列\",\"components.controls.textalign.left\":\"å·¦æƒãˆ\",\"components.controls.textalign.center\":\"ä¸å¤®æƒãˆ\",\"components.controls.textalign.right\":\"å³æƒãˆ\",\"components.controls.textalign.justify\":\"両端æƒãˆ\"}};n(38),n(39);function Yo(e){return(Yo=\"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})(e)}function Fo(){return(Fo=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function Ro(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function Bo(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Ro(Object(n),!0).forEach(function(e){Qo(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ro(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function Qo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ho(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}()}function Zo(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Wo(e,t){return!t||\"object\"!==Yo(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Go(e){return(Go=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Jo(e,t){return(Jo=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Vo=function(){function r(e){var a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(a=Wo(this,Go(r).call(this,e))).onEditorBlur=function(){a.setState({editorFocused:!1})},a.onEditorFocus=function(e){var t=a.props.onFocus;a.setState({editorFocused:!0});var n=a.focusHandler.isEditorFocused();t&&n&&t(e)},a.onEditorMouseDown=function(){a.focusHandler.onEditorMouseDown()},a.keyBindingFn=function(e){if(\"Tab\"!==e.key)return\"ArrowUp\"!==e.key&&\"ArrowDown\"!==e.key||s()&&e.preventDefault(),Object(E.getDefaultKeyBinding)(e);var t=a.props.onTab;if(!t||!t(e)){var n=Object(C.changeDepth)(a.state.editorState,e.shiftKey?-1:1,4);n&&n!==a.state.editorState&&(a.onChange(n),e.preventDefault())}return null},a.onToolbarFocus=function(e){var t=a.props.onFocus;t&&a.focusHandler.isToolbarFocused()&&t(e)},a.onWrapperBlur=function(e){var t=a.props.onBlur;t&&a.focusHandler.isEditorBlur(e)&&t(e,a.getEditorState())},a.onChange=function(e){var t=a.props,n=t.readOnly,o=t.onEditorStateChange;n||\"atomic\"===Object(C.getSelectedBlocksType)(e)&&e.getSelection().isCollapsed||(o&&o(e,a.props.wrapperId),p(a.props,\"editorState\")?a.afterChange(e):a.setState({editorState:e},a.afterChange(e)))},a.setWrapperReference=function(e){a.wrapper=e},a.setEditorReference=function(e){a.props.editorRef&&a.props.editorRef(e),a.editor=e},a.getCompositeDecorator=function(e){var t=[].concat(Ho(a.props.customDecorators),[{strategy:fo,component:go({showOpenOptionOnHover:e.link.showOpenOptionOnHover})}]);return a.props.mention&&t.push.apply(t,Ho(Lo(Bo({},a.props.mention,{onChange:a.onChange,getEditorState:a.getEditorState,getSuggestions:a.getSuggestions,getWrapperRef:a.getWrapperRef,modalHandler:a.modalHandler})))),a.props.hashtag&&t.push(vo(a.props.hashtag)),new E.CompositeDecorator(t)},a.getWrapperRef=function(){return a.wrapper},a.getEditorState=function(){return a.state?a.state.editorState:null},a.getSuggestions=function(){return a.props.mention&&a.props.mention.suggestions},a.afterChange=function(o){setTimeout(function(){var e=a.props,t=e.onChange,n=e.onContentStateChange;t&&t(Object(E.convertToRaw)(o.getCurrentContent())),n&&n(Object(E.convertToRaw)(o.getCurrentContent()))})},a.isReadOnly=function(){return a.props.readOnly},a.isImageAlignmentEnabled=function(){return a.state.toolbar.image.alignmentEnabled},a.createEditorState=function(e){var t;if(p(a.props,\"editorState\"))a.props.editorState&&(t=E.EditorState.set(a.props.editorState,{decorator:e}));else if(p(a.props,\"defaultEditorState\"))a.props.defaultEditorState&&(t=E.EditorState.set(a.props.defaultEditorState,{decorator:e}));else if(p(a.props,\"contentState\")){if(a.props.contentState){var n=Object(E.convertFromRaw)(a.props.contentState);t=E.EditorState.createWithContent(n,e),t=E.EditorState.moveSelectionToEnd(t)}}else if(p(a.props,\"defaultContentState\")||p(a.props,\"initialContentState\")){var o=a.props.defaultContentState||a.props.initialContentState;o&&(o=Object(E.convertFromRaw)(o),t=E.EditorState.createWithContent(o,e),t=E.EditorState.moveSelectionToEnd(t))}return t=t||E.EditorState.createEmpty(e)},a.filterEditorProps=function(e){return t=e,n=[\"onChange\",\"onEditorStateChange\",\"onContentStateChange\",\"initialContentState\",\"defaultContentState\",\"contentState\",\"editorState\",\"defaultEditorState\",\"locale\",\"localization\",\"toolbarOnFocus\",\"toolbar\",\"toolbarCustomButtons\",\"toolbarClassName\",\"editorClassName\",\"toolbarHidden\",\"wrapperClassName\",\"toolbarStyle\",\"editorStyle\",\"wrapperStyle\",\"uploadCallback\",\"onFocus\",\"onBlur\",\"onTab\",\"mention\",\"hashtag\",\"ariaLabel\",\"customBlockRenderFunc\",\"customDecorators\",\"handlePastedText\",\"customStyleMap\"],o=Object.keys(t).filter(function(e){return n.indexOf(e)<0}),r={},o&&0<o.length&&o.forEach(function(e){r[e]=t[e]}),r;var t,n,o,r},a.getStyleMap=function(e){return Bo({},Object(C.getCustomStyleMap)(),{},e.customStyleMap)},a.changeEditorState=function(e){var t=Object(E.convertFromRaw)(e),n=a.state.editorState;return n=E.EditorState.push(n,t,\"insert-characters\"),n=E.EditorState.moveSelectionToEnd(n)},a.focusEditor=function(){setTimeout(function(){a.editor.focus()})},a.handleKeyCommand=function(e){var t=a.state,n=t.editorState,o=t.toolbar.inline;if(o&&0<=o.options.indexOf(e)){var r=E.RichUtils.handleKeyCommand(n,e);if(r)return a.onChange(r),!0}return!1},a.handleReturn=function(e){if(s())return!0;var t=a.state.editorState,n=Object(C.handleNewLine)(t,e);return!!n&&(a.onChange(n),!0)},a.handlePastedTextFn=function(e,t){var n=a.state.editorState,o=a.props,r=o.handlePastedText,i=o.stripPastedStyles;return r?r(e,t,n,a.onChange):!i&&function(e,t,n,o){var r=Object(C.getSelectedBlock)(n);if(r&&\"code\"===r.type){var i=E.Modifier.replaceText(n.getCurrentContent(),n.getSelection(),e,n.getCurrentInlineStyle());return o(E.EditorState.push(n,i,\"insert-characters\")),!0}if(t){var a=j()(t),c=n.getCurrentContent();return a.entityMap.forEach(function(e,t){c=c.mergeEntityData(t,e)}),c=E.Modifier.replaceWithFragment(c,n.getSelection(),new N.List(a.contentBlocks)),o(E.EditorState.push(n,c,\"insert-characters\")),!0}return!1}(e,t,n,a.onChange)},a.preventDefault=function(e){\"INPUT\"===e.target.tagName||\"LABEL\"===e.target.tagName||\"TEXTAREA\"===e.target.tagName?a.focusHandler.onInputMouseDown():e.preventDefault()};var t=M(Po,e.toolbar),n=e.wrapperId?e.wrapperId:Math.floor(1e4*Math.random());a.wrapperId=\"rdw-wrapper-\".concat(n),a.modalHandler=new i,a.focusHandler=new c,a.blockRendererFn=_o({isReadOnly:a.isReadOnly,isImageAlignmentEnabled:a.isImageAlignmentEnabled,getEditorState:a.getEditorState,onChange:a.onChange},e.customBlockRenderFunc),a.editorProps=a.filterEditorProps(e),a.customStyleMap=a.getStyleMap(e),a.compositeDecorator=a.getCompositeDecorator(t);var o=a.createEditorState(a.compositeDecorator);return Object(C.extractInlineStyle)(o),a.state={editorState:o,editorFocused:!1,toolbar:t},a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Jo(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){this.modalHandler.init(this.wrapperId)}},{key:\"componentDidUpdate\",value:function(e){if(e!==this.props){var t={},n=this.props,o=n.editorState,r=n.contentState;if(!this.state.toolbar){var i=M(Po,i);t.toolbar=i}if(p(this.props,\"editorState\")&&o!==e.editorState)t.editorState=o?E.EditorState.set(o,{decorator:this.compositeDecorator}):E.EditorState.createEmpty(this.compositeDecorator);else if(p(this.props,\"contentState\")&&r!==e.contentState)if(r){var a=this.changeEditorState(r);a&&(t.editorState=a)}else t.editorState=E.EditorState.createEmpty(this.compositeDecorator);e.editorState===o&&e.contentState===r||Object(C.extractInlineStyle)(t.editorState),Object.keys(t).length&&this.setState(t),this.editorProps=this.filterEditorProps(this.props),this.customStyleMap=this.getStyleMap(this.props)}}},{key:\"render\",value:function(){var e=this.state,t=e.editorState,n=e.editorFocused,r=e.toolbar,o=this.props,i=o.locale,a=o.localization,c=a.locale,l=a.translations,s=o.toolbarCustomButtons,u=o.toolbarOnFocus,p=o.toolbarClassName,d=o.toolbarHidden,m=o.editorClassName,f=o.wrapperClassName,g=o.toolbarStyle,y=o.editorStyle,h=o.wrapperStyle,M=o.uploadCallback,b=o.ariaLabel,j={modalHandler:this.modalHandler,editorState:t,onChange:this.onChange,translations:Bo({},Uo[i||c],{},l)},N=n||this.focusHandler.isInputFocused()||!u;return S.a.createElement(\"div\",{id:this.wrapperId,className:L()(f,\"rdw-editor-wrapper\"),style:h,onClick:this.modalHandler.onEditorClick,onBlur:this.onWrapperBlur,\"aria-label\":\"rdw-wrapper\"},!d&&S.a.createElement(\"div\",{className:L()(\"rdw-editor-toolbar\",p),style:Bo({visibility:N?\"visible\":\"hidden\"},g),onMouseDown:this.preventDefault,\"aria-label\":\"rdw-toolbar\",\"aria-hidden\":(!n&&u).toString(),onFocus:this.onToolbarFocus},r.options.map(function(e,t){var n=ro[e],o=r[e];return\"image\"===e&&M&&(o.uploadCallback=M),S.a.createElement(n,Fo({key:t},j,{config:o}))}),s&&s.map(function(e,t){return S.a.cloneElement(e,Bo({key:t},j))})),S.a.createElement(\"div\",{ref:this.setWrapperReference,className:L()(m,\"rdw-editor-main\"),style:y,onClick:this.focusEditor,onFocus:this.onEditorFocus,onBlur:this.onEditorBlur,onKeyDown:k.onKeyDown,onMouseDown:this.onEditorMouseDown},S.a.createElement(E.Editor,Fo({ref:this.setEditorReference,keyBindingFn:this.keyBindingFn,editorState:t,onChange:this.onChange,blockStyleFn:D,customStyleMap:this.getStyleMap(this.props),handleReturn:this.handleReturn,handlePastedText:this.handlePastedTextFn,blockRendererFn:this.blockRendererFn,handleKeyCommand:this.handleKeyCommand,ariaLabel:b||\"rdw-editor\",blockRenderMap:C.blockRenderMap},this.editorProps))))}}])&&Zo(e.prototype,t),n&&Zo(e,n),r}();Vo.propTypes={onChange:f.a.func,onEditorStateChange:f.a.func,onContentStateChange:f.a.func,initialContentState:f.a.object,defaultContentState:f.a.object,contentState:f.a.object,editorState:f.a.object,defaultEditorState:f.a.object,toolbarOnFocus:f.a.bool,spellCheck:f.a.bool,stripPastedStyles:f.a.bool,toolbar:f.a.object,toolbarCustomButtons:f.a.array,toolbarClassName:f.a.string,toolbarHidden:f.a.bool,locale:f.a.string,localization:f.a.object,editorClassName:f.a.string,wrapperClassName:f.a.string,toolbarStyle:f.a.object,editorStyle:f.a.object,wrapperStyle:f.a.object,uploadCallback:f.a.func,onFocus:f.a.func,onBlur:f.a.func,onTab:f.a.func,mention:f.a.object,hashtag:f.a.object,textAlignment:f.a.string,readOnly:f.a.bool,tabIndex:f.a.number,placeholder:f.a.string,ariaLabel:f.a.string,ariaOwneeID:f.a.string,ariaActiveDescendantID:f.a.string,ariaAutoComplete:f.a.string,ariaDescribedBy:f.a.string,ariaExpanded:f.a.string,ariaHasPopup:f.a.string,customBlockRenderFunc:f.a.func,wrapperId:f.a.number,customDecorators:f.a.array,editorRef:f.a.func,handlePastedText:f.a.func},Vo.defaultProps={toolbarOnFocus:!1,toolbarHidden:!1,stripPastedStyles:!1,localization:{locale:\"en\",translations:{}},customDecorators:[]};var qo=Vo;n.d(t,\"Editor\",function(){return qo})}],i.c=c,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)i.d(n,o,function(e){return t[e]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=8);function i(e){if(c[e])return c[e].exports;var t=c[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var a,c});","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar seenKeys = {};\nvar MULTIPLIER = Math.pow(2, 24);\n\nfunction generateRandomKey() {\n var key;\n\n while (key === undefined || seenKeys.hasOwnProperty(key) || !isNaN(+key)) {\n key = Math.floor(Math.random() * MULTIPLIER).toString(32);\n }\n\n seenKeys[key] = true;\n return key;\n}\n\nmodule.exports = generateRandomKey;","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.draftjsToHtml = factory());\n}(this, (function () { 'use strict';\n\n /**\n * Utility function to execute callback for eack key->value pair.\n */\n function forEach(obj, callback) {\n if (obj) {\n for (var key in obj) {\n // eslint-disable-line no-restricted-syntax\n if ({}.hasOwnProperty.call(obj, key)) {\n callback(key, obj[key]);\n }\n }\n }\n }\n /**\n * The function returns true if the string passed to it has no content.\n */\n\n function isEmptyString(str) {\n if (str === undefined || str === null || str.length === 0 || str.trim().length === 0) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Mapping block-type to corresponding html tag.\n */\n\n var blockTypesMapping = {\n unstyled: 'p',\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 'unordered-list-item': 'ul',\n 'ordered-list-item': 'ol',\n blockquote: 'blockquote',\n code: 'pre'\n };\n /**\n * Function will return HTML tag for a block.\n */\n\n function getBlockTag(type) {\n return type && blockTypesMapping[type];\n }\n /**\n * Function will return style string for a block.\n */\n\n function getBlockStyle(data) {\n var styles = '';\n forEach(data, function (key, value) {\n if (value) {\n styles += \"\".concat(key, \":\").concat(value, \";\");\n }\n });\n return styles;\n }\n /**\n * The function returns an array of hashtag-sections in blocks.\n * These will be areas in block which have hashtags applicable to them.\n */\n\n function getHashtagRanges(blockText, hashtagConfig) {\n var sections = [];\n\n if (hashtagConfig) {\n var counter = 0;\n var startIndex = 0;\n var text = blockText;\n var trigger = hashtagConfig.trigger || '#';\n var separator = hashtagConfig.separator || ' ';\n\n for (; text.length > 0 && startIndex >= 0;) {\n if (text[0] === trigger) {\n startIndex = 0;\n counter = 0;\n text = text.substr(trigger.length);\n } else {\n startIndex = text.indexOf(separator + trigger);\n\n if (startIndex >= 0) {\n text = text.substr(startIndex + (separator + trigger).length);\n counter += startIndex + separator.length;\n }\n }\n\n if (startIndex >= 0) {\n var endIndex = text.indexOf(separator) >= 0 ? text.indexOf(separator) : text.length;\n var hashtag = text.substr(0, endIndex);\n\n if (hashtag && hashtag.length > 0) {\n sections.push({\n offset: counter,\n length: hashtag.length + trigger.length,\n type: 'HASHTAG'\n });\n }\n\n counter += trigger.length;\n }\n }\n }\n\n return sections;\n }\n /**\n * The function returns an array of entity-sections in blocks.\n * These will be areas in block which have same entity or no entity applicable to them.\n */\n\n\n function getSections(block, hashtagConfig) {\n var sections = [];\n var lastOffset = 0;\n var sectionRanges = block.entityRanges.map(function (range) {\n var offset = range.offset,\n length = range.length,\n key = range.key;\n return {\n offset: offset,\n length: length,\n key: key,\n type: 'ENTITY'\n };\n });\n sectionRanges = sectionRanges.concat(getHashtagRanges(block.text, hashtagConfig));\n sectionRanges = sectionRanges.sort(function (s1, s2) {\n return s1.offset - s2.offset;\n });\n sectionRanges.forEach(function (r) {\n if (r.offset > lastOffset) {\n sections.push({\n start: lastOffset,\n end: r.offset\n });\n }\n\n sections.push({\n start: r.offset,\n end: r.offset + r.length,\n entityKey: r.key,\n type: r.type\n });\n lastOffset = r.offset + r.length;\n });\n\n if (lastOffset < block.text.length) {\n sections.push({\n start: lastOffset,\n end: block.text.length\n });\n }\n\n return sections;\n }\n /**\n * Function to check if the block is an atomic entity block.\n */\n\n\n function isAtomicEntityBlock(block) {\n if (block.entityRanges.length > 0 && (isEmptyString(block.text) || block.type === 'atomic')) {\n return true;\n }\n\n return false;\n }\n /**\n * The function will return array of inline styles applicable to the block.\n */\n\n\n function getStyleArrayForBlock(block) {\n var text = block.text,\n inlineStyleRanges = block.inlineStyleRanges;\n var inlineStyles = {\n BOLD: new Array(text.length),\n ITALIC: new Array(text.length),\n UNDERLINE: new Array(text.length),\n STRIKETHROUGH: new Array(text.length),\n CODE: new Array(text.length),\n SUPERSCRIPT: new Array(text.length),\n SUBSCRIPT: new Array(text.length),\n COLOR: new Array(text.length),\n BGCOLOR: new Array(text.length),\n FONTSIZE: new Array(text.length),\n FONTFAMILY: new Array(text.length),\n length: text.length\n };\n\n if (inlineStyleRanges && inlineStyleRanges.length > 0) {\n inlineStyleRanges.forEach(function (range) {\n var offset = range.offset;\n var length = offset + range.length;\n\n for (var i = offset; i < length; i += 1) {\n if (range.style.indexOf('color-') === 0) {\n inlineStyles.COLOR[i] = range.style.substring(6);\n } else if (range.style.indexOf('bgcolor-') === 0) {\n inlineStyles.BGCOLOR[i] = range.style.substring(8);\n } else if (range.style.indexOf('fontsize-') === 0) {\n inlineStyles.FONTSIZE[i] = range.style.substring(9);\n } else if (range.style.indexOf('fontfamily-') === 0) {\n inlineStyles.FONTFAMILY[i] = range.style.substring(11);\n } else if (inlineStyles[range.style]) {\n inlineStyles[range.style][i] = true;\n }\n }\n });\n }\n\n return inlineStyles;\n }\n /**\n * The function will return inline style applicable at some offset within a block.\n */\n\n\n function getStylesAtOffset(inlineStyles, offset) {\n var styles = {};\n\n if (inlineStyles.COLOR[offset]) {\n styles.COLOR = inlineStyles.COLOR[offset];\n }\n\n if (inlineStyles.BGCOLOR[offset]) {\n styles.BGCOLOR = inlineStyles.BGCOLOR[offset];\n }\n\n if (inlineStyles.FONTSIZE[offset]) {\n styles.FONTSIZE = inlineStyles.FONTSIZE[offset];\n }\n\n if (inlineStyles.FONTFAMILY[offset]) {\n styles.FONTFAMILY = inlineStyles.FONTFAMILY[offset];\n }\n\n if (inlineStyles.UNDERLINE[offset]) {\n styles.UNDERLINE = true;\n }\n\n if (inlineStyles.ITALIC[offset]) {\n styles.ITALIC = true;\n }\n\n if (inlineStyles.BOLD[offset]) {\n styles.BOLD = true;\n }\n\n if (inlineStyles.STRIKETHROUGH[offset]) {\n styles.STRIKETHROUGH = true;\n }\n\n if (inlineStyles.CODE[offset]) {\n styles.CODE = true;\n }\n\n if (inlineStyles.SUBSCRIPT[offset]) {\n styles.SUBSCRIPT = true;\n }\n\n if (inlineStyles.SUPERSCRIPT[offset]) {\n styles.SUPERSCRIPT = true;\n }\n\n return styles;\n }\n /**\n * Function returns true for a set of styles if the value of these styles at an offset\n * are same as that on the previous offset.\n */\n\n function sameStyleAsPrevious(inlineStyles, styles, index) {\n var sameStyled = true;\n\n if (index > 0 && index < inlineStyles.length) {\n styles.forEach(function (style) {\n sameStyled = sameStyled && inlineStyles[style][index] === inlineStyles[style][index - 1];\n });\n } else {\n sameStyled = false;\n }\n\n return sameStyled;\n }\n /**\n * Function returns html for text depending on inline style tags applicable to it.\n */\n\n function addInlineStyleMarkup(style, content) {\n if (style === 'BOLD') {\n return \"<strong>\".concat(content, \"</strong>\");\n }\n\n if (style === 'ITALIC') {\n return \"<em>\".concat(content, \"</em>\");\n }\n\n if (style === 'UNDERLINE') {\n return \"<ins>\".concat(content, \"</ins>\");\n }\n\n if (style === 'STRIKETHROUGH') {\n return \"<del>\".concat(content, \"</del>\");\n }\n\n if (style === 'CODE') {\n return \"<code>\".concat(content, \"</code>\");\n }\n\n if (style === 'SUPERSCRIPT') {\n return \"<sup>\".concat(content, \"</sup>\");\n }\n\n if (style === 'SUBSCRIPT') {\n return \"<sub>\".concat(content, \"</sub>\");\n }\n\n return content;\n }\n /**\n * The function returns text for given section of block after doing required character replacements.\n */\n\n function getSectionText(text) {\n if (text && text.length > 0) {\n var chars = text.map(function (ch) {\n switch (ch) {\n case '\\n':\n return '<br>';\n\n case '&':\n return '&';\n\n case '<':\n return '<';\n\n case '>':\n return '>';\n\n default:\n return ch;\n }\n });\n return chars.join('');\n }\n\n return '';\n }\n /**\n * Function returns html for text depending on inline style tags applicable to it.\n */\n\n\n function addStylePropertyMarkup(styles, text) {\n if (styles && (styles.COLOR || styles.BGCOLOR || styles.FONTSIZE || styles.FONTFAMILY)) {\n var styleString = 'style=\"';\n\n if (styles.COLOR) {\n styleString += \"color: \".concat(styles.COLOR, \";\");\n }\n\n if (styles.BGCOLOR) {\n styleString += \"background-color: \".concat(styles.BGCOLOR, \";\");\n }\n\n if (styles.FONTSIZE) {\n styleString += \"font-size: \".concat(styles.FONTSIZE).concat(/^\\d+$/.test(styles.FONTSIZE) ? 'px' : '', \";\");\n }\n\n if (styles.FONTFAMILY) {\n styleString += \"font-family: \".concat(styles.FONTFAMILY, \";\");\n }\n\n styleString += '\"';\n return \"<span \".concat(styleString, \">\").concat(text, \"</span>\");\n }\n\n return text;\n }\n /**\n * Function will return markup for Entity.\n */\n\n function getEntityMarkup(entityMap, entityKey, text, customEntityTransform) {\n var entity = entityMap[entityKey];\n\n if (typeof customEntityTransform === 'function') {\n var html = customEntityTransform(entity, text);\n\n if (html) {\n return html;\n }\n }\n\n if (entity.type === 'MENTION') {\n return \"<a href=\\\"\".concat(entity.data.url, \"\\\" class=\\\"wysiwyg-mention\\\" data-mention data-value=\\\"\").concat(entity.data.value, \"\\\">\").concat(text, \"</a>\");\n }\n\n if (entity.type === 'LINK') {\n var targetOption = entity.data.targetOption || '_self';\n return \"<a href=\\\"\".concat(entity.data.url, \"\\\" target=\\\"\").concat(targetOption, \"\\\">\").concat(text, \"</a>\");\n }\n\n if (entity.type === 'IMAGE') {\n var alignment = entity.data.alignment;\n\n if (alignment && alignment.length) {\n return \"<div style=\\\"text-align:\".concat(alignment, \";\\\"><img src=\\\"\").concat(entity.data.src, \"\\\" alt=\\\"\").concat(entity.data.alt, \"\\\" style=\\\"height: \").concat(entity.data.height, \";width: \").concat(entity.data.width, \"\\\"/></div>\");\n }\n\n return \"<img src=\\\"\".concat(entity.data.src, \"\\\" alt=\\\"\").concat(entity.data.alt, \"\\\" style=\\\"height: \").concat(entity.data.height, \";width: \").concat(entity.data.width, \"\\\"/>\");\n }\n\n if (entity.type === 'EMBEDDED_LINK') {\n return \"<iframe width=\\\"\".concat(entity.data.width, \"\\\" height=\\\"\").concat(entity.data.height, \"\\\" src=\\\"\").concat(entity.data.src, \"\\\" frameBorder=\\\"0\\\"></iframe>\");\n }\n\n return text;\n }\n /**\n * For a given section in a block the function will return a further list of sections,\n * with similar inline styles applicable to them.\n */\n\n\n function getInlineStyleSections(block, styles, start, end) {\n var styleSections = [];\n var text = Array.from(block.text);\n\n if (text.length > 0) {\n var inlineStyles = getStyleArrayForBlock(block);\n var section;\n\n for (var i = start; i < end; i += 1) {\n if (i !== start && sameStyleAsPrevious(inlineStyles, styles, i)) {\n section.text.push(text[i]);\n section.end = i + 1;\n } else {\n section = {\n styles: getStylesAtOffset(inlineStyles, i),\n text: [text[i]],\n start: i,\n end: i + 1\n };\n styleSections.push(section);\n }\n }\n }\n\n return styleSections;\n }\n /**\n * Replace leading blank spaces by \n */\n\n\n function trimLeadingZeros(sectionText) {\n if (sectionText) {\n var replacedText = sectionText;\n\n for (var i = 0; i < replacedText.length; i += 1) {\n if (sectionText[i] === ' ') {\n replacedText = replacedText.replace(' ', ' ');\n } else {\n break;\n }\n }\n\n return replacedText;\n }\n\n return sectionText;\n }\n /**\n * Replace trailing blank spaces by \n */\n\n function trimTrailingZeros(sectionText) {\n if (sectionText) {\n var replacedText = sectionText;\n\n for (var i = replacedText.length - 1; i >= 0; i -= 1) {\n if (replacedText[i] === ' ') {\n replacedText = \"\".concat(replacedText.substring(0, i), \" \").concat(replacedText.substring(i + 1));\n } else {\n break;\n }\n }\n\n return replacedText;\n }\n\n return sectionText;\n }\n /**\n * The method returns markup for section to which inline styles\n * like BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, CODE, SUPERSCRIPT, SUBSCRIPT are applicable.\n */\n\n function getStyleTagSectionMarkup(styleSection) {\n var styles = styleSection.styles,\n text = styleSection.text;\n var content = getSectionText(text);\n forEach(styles, function (style, value) {\n content = addInlineStyleMarkup(style, content);\n });\n return content;\n }\n /**\n * The method returns markup for section to which inline styles\n like color, background-color, font-size are applicable.\n */\n\n\n function getInlineStyleSectionMarkup(block, styleSection) {\n var styleTagSections = getInlineStyleSections(block, ['BOLD', 'ITALIC', 'UNDERLINE', 'STRIKETHROUGH', 'CODE', 'SUPERSCRIPT', 'SUBSCRIPT'], styleSection.start, styleSection.end);\n var styleSectionText = '';\n styleTagSections.forEach(function (stylePropertySection) {\n styleSectionText += getStyleTagSectionMarkup(stylePropertySection);\n });\n styleSectionText = addStylePropertyMarkup(styleSection.styles, styleSectionText);\n return styleSectionText;\n }\n /*\n * The method returns markup for an entity section.\n * An entity section is a continuous section in a block\n * to which same entity or no entity is applicable.\n */\n\n\n function getSectionMarkup(block, entityMap, section, customEntityTransform) {\n var entityInlineMarkup = [];\n var inlineStyleSections = getInlineStyleSections(block, ['COLOR', 'BGCOLOR', 'FONTSIZE', 'FONTFAMILY'], section.start, section.end);\n inlineStyleSections.forEach(function (styleSection) {\n entityInlineMarkup.push(getInlineStyleSectionMarkup(block, styleSection));\n });\n var sectionText = entityInlineMarkup.join('');\n\n if (section.type === 'ENTITY') {\n if (section.entityKey !== undefined && section.entityKey !== null) {\n sectionText = getEntityMarkup(entityMap, section.entityKey, sectionText, customEntityTransform); // eslint-disable-line max-len\n }\n } else if (section.type === 'HASHTAG') {\n sectionText = \"<a href=\\\"\".concat(sectionText, \"\\\" class=\\\"wysiwyg-hashtag\\\">\").concat(sectionText, \"</a>\");\n }\n\n return sectionText;\n }\n /**\n * Function will return the markup for block preserving the inline styles and\n * special characters like newlines or blank spaces.\n */\n\n\n function getBlockInnerMarkup(block, entityMap, hashtagConfig, customEntityTransform) {\n var blockMarkup = [];\n var sections = getSections(block, hashtagConfig);\n sections.forEach(function (section, index) {\n var sectionText = getSectionMarkup(block, entityMap, section, customEntityTransform);\n\n if (index === 0) {\n sectionText = trimLeadingZeros(sectionText);\n }\n\n if (index === sections.length - 1) {\n sectionText = trimTrailingZeros(sectionText);\n }\n\n blockMarkup.push(sectionText);\n });\n return blockMarkup.join('');\n }\n /**\n * Function will return html for the block.\n */\n\n function getBlockMarkup(block, entityMap, hashtagConfig, directional, customEntityTransform) {\n var blockHtml = [];\n\n if (isAtomicEntityBlock(block)) {\n blockHtml.push(getEntityMarkup(entityMap, block.entityRanges[0].key, undefined, customEntityTransform));\n } else {\n var blockTag = getBlockTag(block.type);\n\n if (blockTag) {\n blockHtml.push(\"<\".concat(blockTag));\n var blockStyle = getBlockStyle(block.data);\n\n if (blockStyle) {\n blockHtml.push(\" style=\\\"\".concat(blockStyle, \"\\\"\"));\n }\n\n if (directional) {\n blockHtml.push(' dir = \"auto\"');\n }\n\n blockHtml.push('>');\n blockHtml.push(getBlockInnerMarkup(block, entityMap, hashtagConfig, customEntityTransform));\n blockHtml.push(\"</\".concat(blockTag, \">\"));\n }\n }\n\n blockHtml.push('\\n');\n return blockHtml.join('');\n }\n\n /**\n * Function to check if a block is of type list.\n */\n\n function isList(blockType) {\n return blockType === 'unordered-list-item' || blockType === 'ordered-list-item';\n }\n /**\n * Function will return html markup for a list block.\n */\n\n function getListMarkup(listBlocks, entityMap, hashtagConfig, directional, customEntityTransform) {\n var listHtml = [];\n var nestedListBlock = [];\n var previousBlock;\n listBlocks.forEach(function (block) {\n var nestedBlock = false;\n\n if (!previousBlock) {\n listHtml.push(\"<\".concat(getBlockTag(block.type), \">\\n\"));\n } else if (previousBlock.type !== block.type) {\n listHtml.push(\"</\".concat(getBlockTag(previousBlock.type), \">\\n\"));\n listHtml.push(\"<\".concat(getBlockTag(block.type), \">\\n\"));\n } else if (previousBlock.depth === block.depth) {\n if (nestedListBlock && nestedListBlock.length > 0) {\n listHtml.push(getListMarkup(nestedListBlock, entityMap, hashtagConfig, directional, customEntityTransform));\n nestedListBlock = [];\n }\n } else {\n nestedBlock = true;\n nestedListBlock.push(block);\n }\n\n if (!nestedBlock) {\n listHtml.push('<li');\n var blockStyle = getBlockStyle(block.data);\n\n if (blockStyle) {\n listHtml.push(\" style=\\\"\".concat(blockStyle, \"\\\"\"));\n }\n\n if (directional) {\n listHtml.push(' dir = \"auto\"');\n }\n\n listHtml.push('>');\n listHtml.push(getBlockInnerMarkup(block, entityMap, hashtagConfig, customEntityTransform));\n listHtml.push('</li>\\n');\n previousBlock = block;\n }\n });\n\n if (nestedListBlock && nestedListBlock.length > 0) {\n listHtml.push(getListMarkup(nestedListBlock, entityMap, hashtagConfig, directional, customEntityTransform));\n }\n\n listHtml.push(\"</\".concat(getBlockTag(previousBlock.type), \">\\n\"));\n return listHtml.join('');\n }\n\n /**\n * The function will generate html markup for given draftjs editorContent.\n */\n\n function draftToHtml(editorContent, hashtagConfig, directional, customEntityTransform) {\n var html = [];\n\n if (editorContent) {\n var blocks = editorContent.blocks,\n entityMap = editorContent.entityMap;\n\n if (blocks && blocks.length > 0) {\n var listBlocks = [];\n blocks.forEach(function (block) {\n if (isList(block.type)) {\n listBlocks.push(block);\n } else {\n if (listBlocks.length > 0) {\n var listHtml = getListMarkup(listBlocks, entityMap, hashtagConfig, customEntityTransform); // eslint-disable-line max-len\n\n html.push(listHtml);\n listBlocks = [];\n }\n\n var blockHtml = getBlockMarkup(block, entityMap, hashtagConfig, directional, customEntityTransform);\n html.push(blockHtml);\n }\n });\n\n if (listBlocks.length > 0) {\n var listHtml = getListMarkup(listBlocks, entityMap, hashtagConfig, directional, customEntityTransform); // eslint-disable-line max-len\n\n html.push(listHtml);\n listBlocks = [];\n }\n }\n }\n\n return html.join('');\n }\n\n return draftToHtml;\n\n})));\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"immutable\"),require(\"draft-js\")):\"function\"==typeof define&&define.amd?define([\"immutable\",\"draft-js\"],t):\"object\"==typeof exports?exports.htmlToDraftjs=t(require(\"immutable\"),require(\"draft-js\")):e.htmlToDraftjs=t(e.immutable,e[\"draft-js\"])}(window,function(n,r){return o={},i.m=a=[function(e,t){e.exports=n},function(e,t){e.exports=r},function(e,t,n){e.exports=n(3)},function(e,t,n){\"use strict\";n.r(t);var v=n(1),u=n(0),s=function(e){var t,n=null;return document.implementation&&document.implementation.createHTMLDocument&&((t=document.implementation.createHTMLDocument(\"foo\")).documentElement.innerHTML=e,n=t.getElementsByTagName(\"body\")[0]),n},x=function(e,t,n){var r,i=e.textContent;return\"\"===i.trim()?{chunk:(r=n,{text:\" \",inlines:[new u.OrderedSet],entities:[r],blocks:[]})}:{chunk:{text:i,inlines:Array(i.length).fill(t),entities:Array(i.length).fill(n),blocks:[]}}},M=function(){return{text:\"\\n\",inlines:[new u.OrderedSet],entities:new Array(1),blocks:[]}},k=function(){return{text:\"\",inlines:[],entities:[],blocks:[]}},E=function(e,t){return{text:\"\",inlines:[],entities:[],blocks:[{type:e,depth:0,data:t||new u.Map({})}]}},w=function(e,t,n){return{text:\"\\r\",inlines:[],entities:[],blocks:[{type:e,depth:Math.max(0,Math.min(4,t)),data:n||new u.Map({})}]}},T=function(e){return{text:\"\\r \",inlines:[new u.OrderedSet],entities:[e],blocks:[{type:\"atomic\",depth:0,data:new u.Map({})}]}},L=function(e,t){return{text:e.text+t.text,inlines:e.inlines.concat(t.inlines),entities:e.entities.concat(t.entities),blocks:e.blocks.concat(t.blocks)}},A=new u.Map({\"header-one\":{element:\"h1\"},\"header-two\":{element:\"h2\"},\"header-three\":{element:\"h3\"},\"header-four\":{element:\"h4\"},\"header-five\":{element:\"h5\"},\"header-six\":{element:\"h6\"},\"unordered-list-item\":{element:\"li\",wrapper:\"ul\"},\"ordered-list-item\":{element:\"li\",wrapper:\"ol\"},blockquote:{element:\"blockquote\"},code:{element:\"pre\"},atomic:{element:\"figure\"},unstyled:{element:\"p\",aliasedElements:[\"div\"]}});var O={code:\"CODE\",del:\"STRIKETHROUGH\",em:\"ITALIC\",strong:\"BOLD\",ins:\"UNDERLINE\",sub:\"SUBSCRIPT\",sup:\"SUPERSCRIPT\"};function S(e){return e.style.textAlign?new u.Map({\"text-align\":e.style.textAlign}):e.style.marginLeft?new u.Map({\"margin-left\":e.style.marginLeft}):void 0}var _=function(e){var t=void 0;if(e instanceof HTMLAnchorElement){var n={};t=e.dataset&&void 0!==e.dataset.mention?(n.url=e.href,n.text=e.innerHTML,n.value=e.dataset.value,v.Entity.__create(\"MENTION\",\"IMMUTABLE\",n)):(n.url=e.getAttribute&&e.getAttribute(\"href\")||e.href,n.title=e.innerHTML,n.targetOption=e.target,v.Entity.__create(\"LINK\",\"MUTABLE\",n))}return t};n.d(t,\"default\",function(){return r});var d=\" \",f=new RegExp(\" \",\"g\"),j=!0;function I(e,t,n,r,i,a){var o=e.nodeName.toLowerCase();if(a){var l=a(o,e);if(l){var c=v.Entity.__create(l.type,l.mutability,l.data||{});return{chunk:T(c)}}}if(\"#text\"===o&&\"\\n\"!==e.textContent)return x(e,t,i);if(\"br\"===o)return{chunk:M()};if(\"img\"===o&&e instanceof HTMLImageElement){var u={};u.src=e.getAttribute&&e.getAttribute(\"src\")||e.src,u.alt=e.alt,u.height=e.style.height,u.width=e.style.width,e.style.float&&(u.alignment=e.style.float);var s=v.Entity.__create(\"IMAGE\",\"MUTABLE\",u);return{chunk:T(s)}}if(\"video\"===o&&e instanceof HTMLVideoElement){var d={};d.src=e.getAttribute&&e.getAttribute(\"src\")||e.src,d.alt=e.alt,d.height=e.style.height,d.width=e.style.width,e.style.float&&(d.alignment=e.style.float);var f=v.Entity.__create(\"VIDEO\",\"MUTABLE\",d);return{chunk:T(f)}}if(\"iframe\"===o&&e instanceof HTMLIFrameElement){var m={};m.src=e.getAttribute&&e.getAttribute(\"src\")||e.src,m.height=e.height,m.width=e.width;var p=v.Entity.__create(\"EMBEDDED_LINK\",\"MUTABLE\",m);return{chunk:T(p)}}var h,y=function(t,n){var e=A.filter(function(e){return e.element===t&&(!e.wrapper||e.wrapper===n)||e.wrapper===t||e.aliasedElements&&-1<e.aliasedElements.indexOf(t)}).keySeq().toSet().toArray();if(1===e.length)return e[0]}(o,r);y&&(\"ul\"===o||\"ol\"===o?(r=o,n+=1):(\"unordered-list-item\"!==y&&\"ordered-list-item\"!==y&&(r=\"\",n=-1),j?(h=E(y,S(e)),j=!1):h=w(y,n,S(e)))),h=h||k(),t=function(e,t,n){var r,i=O[e];if(i)r=n.add(i).toOrderedSet();else if(t instanceof HTMLElement){var c=t;r=(r=n).withMutations(function(e){var t=c.style.color,n=c.style.backgroundColor,r=c.style.fontSize,i=c.style.fontFamily.replace(/^\"|\"$/g,\"\"),a=c.style.fontWeight,o=c.style.textDecoration,l=c.style.fontStyle;t&&e.add(\"color-\".concat(t.replace(/ /g,\"\"))),n&&e.add(\"bgcolor-\".concat(n.replace(/ /g,\"\"))),r&&e.add(\"fontsize-\".concat(r.replace(/px$/g,\"\"))),i&&e.add(\"fontfamily-\".concat(i)),\"bold\"===a&&e.add(O.strong),\"underline\"===o&&e.add(O.ins),\"italic\"===l&&e.add(O.em)}).toOrderedSet()}return r}(o,e,t);for(var b=e.firstChild;b;){var g=I(b,t,n,r,_(b)||i,a).chunk;h=L(h,g),b=b.nextSibling}return{chunk:h}}function r(e,t){var n,r,i,a=(n=t,r=e.trim().replace(f,d),(i=s(r))?(j=!0,{chunk:I(i,new u.OrderedSet,-1,\"\",void 0,n).chunk}):null);if(a){var o=a.chunk,l=new u.OrderedMap({});o.entities&&o.entities.forEach(function(e){e&&(l=l.set(e,v.Entity.__get(e)))});var c=0;return{contentBlocks:o.text.split(\"\\r\").map(function(e,t){var n=c+e.length,r=o&&o.inlines.slice(c,n),i=o&&o.entities.slice(c,n),a=new u.List(r.map(function(e,t){var n={style:e,entity:null};return i[t]&&(n.entity=i[t]),v.CharacterMetadata.create(n)}));return c=n,new v.ContentBlock({key:Object(v.genKey)(),type:o&&o.blocks[t]&&o.blocks[t].type||\"unstyled\",depth:o&&o.blocks[t]&&o.blocks[t].depth,data:o&&o.blocks[t]&&o.blocks[t].data||new u.Map({}),text:e,characterList:a})}),entityMap:l}}return null}}],i.c=o,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=2);function i(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var a,o});","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KEY_DELIMITER = '-';\nvar DraftOffsetKey = {\n encode: function encode(blockKey, decoratorKey, leafKey) {\n return blockKey + KEY_DELIMITER + decoratorKey + KEY_DELIMITER + leafKey;\n },\n decode: function decode(offsetKey) {\n // Extracts the last two parts of offsetKey and captures the rest in blockKeyParts\n var _offsetKey$split$reve = offsetKey.split(KEY_DELIMITER).reverse(),\n leafKey = _offsetKey$split$reve[0],\n decoratorKey = _offsetKey$split$reve[1],\n blockKeyParts = _offsetKey$split$reve.slice(2);\n\n return {\n // Recomposes the parts of blockKey after reversing them\n blockKey: blockKeyParts.reverse().join(KEY_DELIMITER),\n decoratorKey: parseInt(decoratorKey, 10),\n leafKey: parseInt(leafKey, 10)\n };\n }\n};\nmodule.exports = DraftOffsetKey;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nmodule.exports = function (name) {\n if (typeof window !== 'undefined' && window.__DRAFT_GKX) {\n return !!window.__DRAFT_GKX[name];\n }\n\n return false;\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n key: '',\n type: 'unstyled',\n text: '',\n characterList: List(),\n depth: 0,\n data: Map()\n};\nvar ContentBlockRecord = Record(defaultRecord);\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n if (!config) {\n return config;\n }\n\n var characterList = config.characterList,\n text = config.text;\n\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlock = /*#__PURE__*/function (_ContentBlockRecord) {\n _inheritsLoose(ContentBlock, _ContentBlockRecord);\n\n function ContentBlock(config) {\n return _ContentBlockRecord.call(this, decorateCharacterList(config)) || this;\n }\n\n var _proto = ContentBlock.prototype;\n\n _proto.getKey = function getKey() {\n return this.get('key');\n };\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getText = function getText() {\n return this.get('text');\n };\n\n _proto.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n _proto.getLength = function getLength() {\n return this.getText().length;\n };\n\n _proto.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n _proto.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n }\n /**\n * Execute a callback for every contiguous range of styles within the block.\n */\n ;\n\n _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n }\n /**\n * Execute a callback for every contiguous range of entities within the block.\n */\n ;\n\n _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n };\n\n return ContentBlock;\n}(ContentBlockRecord);\n\nfunction haveEqualStyle(charA, charB) {\n return charA.getStyle() === charB.getStyle();\n}\n\nfunction haveEqualEntity(charA, charB) {\n return charA.getEntity() === charB.getEntity();\n}\n\nmodule.exports = ContentBlock;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * This function is used to mark string literals representing CSS class names\n * so that they can be transformed statically. This allows for modularization\n * and minification of CSS class names.\n *\n * In static_upstream, this function is actually implemented, but it should\n * eventually be replaced with something more descriptive, and the transform\n * that is used in the main stack should be ported for use elsewhere.\n *\n * @param string|object className to modularize, or an object of key/values.\n * In the object case, the values are conditions that\n * determine if the className keys should be included.\n * @param [string ...] Variable list of classNames in the string case.\n * @return string Renderable space-separated CSS className.\n */\nfunction cx(classNames) {\n if (typeof classNames == 'object') {\n return Object.keys(classNames).filter(function (className) {\n return classNames[className];\n }).map(replace).join(' ');\n }\n\n return Array.prototype.map.call(arguments, replace).join(' ');\n}\n\nfunction replace(str) {\n return str.replace(/\\//g, '-');\n}\n\nmodule.exports = cx;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n}\n\nmodule.exports = isElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * Unicode-enabled replacesments for basic String functions.\n *\n * All the functions in this module assume that the input string is a valid\n * UTF-16 encoding of a Unicode sequence. If it's not the case, the behavior\n * will be undefined.\n *\n * WARNING: Since this module is typechecks-enforced, you may find new bugs\n * when replacing normal String functions with ones provided here.\n */\n'use strict';\n\nvar invariant = require(\"./invariant\"); // These two ranges are consecutive so anything in [HIGH_START, LOW_END] is a\n// surrogate code unit.\n\n\nvar SURROGATE_HIGH_START = 0xD800;\nvar SURROGATE_HIGH_END = 0xDBFF;\nvar SURROGATE_LOW_START = 0xDC00;\nvar SURROGATE_LOW_END = 0xDFFF;\nvar SURROGATE_UNITS_REGEX = /[\\uD800-\\uDFFF]/;\n/**\n * @param {number} codeUnit A Unicode code-unit, in range [0, 0x10FFFF]\n * @return {boolean} Whether code-unit is in a surrogate (hi/low) range\n */\n\nfunction isCodeUnitInSurrogateRange(codeUnit) {\n return SURROGATE_HIGH_START <= codeUnit && codeUnit <= SURROGATE_LOW_END;\n}\n/**\n * Returns whether the two characters starting at `index` form a surrogate pair.\n * For example, given the string s = \"\\uD83D\\uDE0A\", (s, 0) returns true and\n * (s, 1) returns false.\n *\n * @param {string} str\n * @param {number} index\n * @return {boolean}\n */\n\n\nfunction isSurrogatePair(str, index) {\n !(0 <= index && index < str.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isSurrogatePair: Invalid index %s for string length %s.', index, str.length) : invariant(false) : void 0;\n\n if (index + 1 === str.length) {\n return false;\n }\n\n var first = str.charCodeAt(index);\n var second = str.charCodeAt(index + 1);\n return SURROGATE_HIGH_START <= first && first <= SURROGATE_HIGH_END && SURROGATE_LOW_START <= second && second <= SURROGATE_LOW_END;\n}\n/**\n * @param {string} str Non-empty string\n * @return {boolean} True if the input includes any surrogate code units\n */\n\n\nfunction hasSurrogateUnit(str) {\n return SURROGATE_UNITS_REGEX.test(str);\n}\n/**\n * Return the length of the original Unicode character at given position in the\n * String by looking into the UTF-16 code unit; that is equal to 1 for any\n * non-surrogate characters in BMP ([U+0000..U+D7FF] and [U+E000, U+FFFF]); and\n * returns 2 for the hi/low surrogates ([U+D800..U+DFFF]), which are in fact\n * representing non-BMP characters ([U+10000..U+10FFFF]).\n *\n * Examples:\n * - '\\u0020' => 1\n * - '\\u3020' => 1\n * - '\\uD835' => 2\n * - '\\uD835\\uDDEF' => 2\n * - '\\uDDEF' => 2\n *\n * @param {string} str Non-empty string\n * @param {number} pos Position in the string to look for one code unit\n * @return {number} Number 1 or 2\n */\n\n\nfunction getUTF16Length(str, pos) {\n return 1 + isCodeUnitInSurrogateRange(str.charCodeAt(pos));\n}\n/**\n * Fully Unicode-enabled replacement for String#length\n *\n * @param {string} str Valid Unicode string\n * @return {number} The number of Unicode characters in the string\n */\n\n\nfunction strlen(str) {\n // Call the native functions if there's no surrogate char\n if (!hasSurrogateUnit(str)) {\n return str.length;\n }\n\n var len = 0;\n\n for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n len++;\n }\n\n return len;\n}\n/**\n * Fully Unicode-enabled replacement for String#substr()\n *\n * @param {string} str Valid Unicode string\n * @param {number} start Location in Unicode sequence to begin extracting\n * @param {?number} length The number of Unicode characters to extract\n * (default: to the end of the string)\n * @return {string} Extracted sub-string\n */\n\n\nfunction substr(str, start, length) {\n start = start || 0;\n length = length === undefined ? Infinity : length || 0; // Call the native functions if there's no surrogate char\n\n if (!hasSurrogateUnit(str)) {\n return str.substr(start, length);\n } // Obvious cases\n\n\n var size = str.length;\n\n if (size <= 0 || start > size || length <= 0) {\n return '';\n } // Find the actual starting position\n\n\n var posA = 0;\n\n if (start > 0) {\n for (; start > 0 && posA < size; start--) {\n posA += getUTF16Length(str, posA);\n }\n\n if (posA >= size) {\n return '';\n }\n } else if (start < 0) {\n for (posA = size; start < 0 && 0 < posA; start++) {\n posA -= getUTF16Length(str, posA - 1);\n }\n\n if (posA < 0) {\n posA = 0;\n }\n } // Find the actual ending position\n\n\n var posB = size;\n\n if (length < size) {\n for (posB = posA; length > 0 && posB < size; length--) {\n posB += getUTF16Length(str, posB);\n }\n }\n\n return str.substring(posA, posB);\n}\n/**\n * Fully Unicode-enabled replacement for String#substring()\n *\n * @param {string} str Valid Unicode string\n * @param {number} start Location in Unicode sequence to begin extracting\n * @param {?number} end Location in Unicode sequence to end extracting\n * (default: end of the string)\n * @return {string} Extracted sub-string\n */\n\n\nfunction substring(str, start, end) {\n start = start || 0;\n end = end === undefined ? Infinity : end || 0;\n\n if (start < 0) {\n start = 0;\n }\n\n if (end < 0) {\n end = 0;\n }\n\n var length = Math.abs(end - start);\n start = start < end ? start : end;\n return substr(str, start, length);\n}\n/**\n * Get a list of Unicode code-points from a String\n *\n * @param {string} str Valid Unicode string\n * @return {array<number>} A list of code-points in [0..0x10FFFF]\n */\n\n\nfunction getCodePoints(str) {\n var codePoints = [];\n\n for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n codePoints.push(str.codePointAt(pos));\n }\n\n return codePoints;\n}\n\nvar UnicodeUtils = {\n getCodePoints: getCodePoints,\n getUTF16Length: getUTF16Length,\n hasSurrogateUnit: hasSurrogateUnit,\n isCodeUnitInSurrogateRange: isCodeUnitInSurrogateRange,\n isSurrogatePair: isSurrogatePair,\n strlen: strlen,\n substring: substring,\n substr: substr\n};\nmodule.exports = UnicodeUtils;","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\nvar BlockMapBuilder = {\n createFromArray: function createFromArray(blocks) {\n return OrderedMap(blocks.map(function (block) {\n return [block.getKey(), block];\n }));\n }\n};\nmodule.exports = BlockMapBuilder;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Search through an array to find contiguous stretches of elements that\n * match a specified filter function.\n *\n * When ranges are found, execute a specified `found` function to supply\n * the values to the caller.\n */\nfunction findRangesImmutable(haystack, areEqualFn, filterFn, foundFn) {\n if (!haystack.size) {\n return;\n }\n\n var cursor = 0;\n haystack.reduce(function (value, nextValue, nextIndex) {\n if (!areEqualFn(value, nextValue)) {\n if (filterFn(value)) {\n foundFn(cursor, nextIndex);\n }\n\n cursor = nextIndex;\n }\n\n return nextValue;\n });\n filterFn(haystack.last()) && foundFn(cursor, haystack.count());\n}\n\nmodule.exports = findRangesImmutable;","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isHTMLElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n if (!node.ownerDocument.defaultView) {\n return node instanceof HTMLElement;\n }\n\n if (node instanceof node.ownerDocument.defaultView.HTMLElement) {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isHTMLElement;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar gkx = require(\"./gkx\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\n/**\n * For a collapsed selection state, remove text based on the specified strategy.\n * If the selection state is not collapsed, remove the entire selected range.\n */\n\nfunction removeTextWithStrategy(editorState, strategy, direction) {\n var selection = editorState.getSelection();\n var content = editorState.getCurrentContent();\n var target = selection;\n var anchorKey = selection.getAnchorKey();\n var focusKey = selection.getFocusKey();\n var anchorBlock = content.getBlockForKey(anchorKey);\n\n if (experimentalTreeDataSupport) {\n if (direction === 'forward') {\n if (anchorKey !== focusKey) {\n // For now we ignore forward delete across blocks,\n // if there is demand for this we will implement it.\n return content;\n }\n }\n }\n\n if (selection.isCollapsed()) {\n if (direction === 'forward') {\n if (editorState.isSelectionAtEndOfContent()) {\n return content;\n }\n\n if (experimentalTreeDataSupport) {\n var isAtEndOfBlock = selection.getAnchorOffset() === content.getBlockForKey(anchorKey).getLength();\n\n if (isAtEndOfBlock) {\n var anchorBlockSibling = content.getBlockForKey(anchorBlock.nextSibling);\n\n if (!anchorBlockSibling || anchorBlockSibling.getLength() === 0) {\n // For now we ignore forward delete at the end of a block,\n // if there is demand for this we will implement it.\n return content;\n }\n }\n }\n } else if (editorState.isSelectionAtStartOfContent()) {\n return content;\n }\n\n target = strategy(editorState);\n\n if (target === selection) {\n return content;\n }\n }\n\n return DraftModifier.removeRange(content, target, direction);\n}\n\nmodule.exports = removeTextWithStrategy;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar randomizeBlockMapKeys = require(\"./randomizeBlockMapKeys\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar getContentStateFragment = function getContentStateFragment(contentState, selectionState) {\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset(); // Edge entities should be stripped to ensure that we don't preserve\n // invalid partial entities when the fragment is reused. We do, however,\n // preserve entities that are entirely within the selection range.\n\n var contentWithoutEdgeEntities = removeEntitiesAtEdges(contentState, selectionState);\n var blockMap = contentWithoutEdgeEntities.getBlockMap();\n var blockKeys = blockMap.keySeq();\n var startIndex = blockKeys.indexOf(startKey);\n var endIndex = blockKeys.indexOf(endKey) + 1;\n return randomizeBlockMapKeys(blockMap.slice(startIndex, endIndex).map(function (block, blockKey) {\n var text = block.getText();\n var chars = block.getCharacterList();\n\n if (startKey === endKey) {\n return block.merge({\n text: text.slice(startOffset, endOffset),\n characterList: chars.slice(startOffset, endOffset)\n });\n }\n\n if (blockKey === startKey) {\n return block.merge({\n text: text.slice(startOffset),\n characterList: chars.slice(startOffset)\n });\n }\n\n if (blockKey === endKey) {\n return block.merge({\n text: text.slice(0, endOffset),\n characterList: chars.slice(0, endOffset)\n });\n }\n\n return block;\n }));\n};\n\nmodule.exports = getContentStateFragment;","\"use strict\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar uuid = require(\"./uuid\");\n\nvar Map = Immutable.Map;\nvar instances = Map();\nvar instanceKey = uuid();\n/**\n * Temporary utility for generating the warnings\n */\n\nfunction logWarning(oldMethodCall, newMethodCall) {\n console.warn('WARNING: ' + oldMethodCall + ' will be deprecated soon!\\nPlease use \"' + newMethodCall + '\" instead.');\n}\n\n/**\n * A \"document entity\" is an object containing metadata associated with a\n * piece of text in a ContentBlock.\n *\n * For example, a `link` entity might include a `uri` property. When a\n * ContentBlock is rendered in the browser, text that refers to that link\n * entity may be rendered as an anchor, with the `uri` as the href value.\n *\n * In a ContentBlock, every position in the text may correspond to zero\n * or one entities. This correspondence is tracked using a key string,\n * generated via DraftEntity.create() and used to obtain entity metadata\n * via DraftEntity.get().\n */\nvar DraftEntity = {\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.getLastCreatedEntityKey' instead.\n * ---\n * Get the random key string from whatever entity was last created.\n * We need this to support the new API, as part of transitioning to put Entity\n * storage in contentState.\n */\n getLastCreatedEntityKey: function getLastCreatedEntityKey() {\n logWarning('DraftEntity.getLastCreatedEntityKey', 'contentState.getLastCreatedEntityKey');\n return DraftEntity.__getLastCreatedEntityKey();\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.createEntity' instead.\n * ---\n * Create a DraftEntityInstance and store it for later retrieval.\n *\n * A random key string will be generated and returned. This key may\n * be used to track the entity's usage in a ContentBlock, and for\n * retrieving data about the entity at render time.\n */\n create: function create(type, mutability, data) {\n logWarning('DraftEntity.create', 'contentState.createEntity');\n return DraftEntity.__create(type, mutability, data);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.addEntity' instead.\n * ---\n * Add an existing DraftEntityInstance to the DraftEntity map. This is\n * useful when restoring instances from the server.\n */\n add: function add(instance) {\n logWarning('DraftEntity.add', 'contentState.addEntity');\n return DraftEntity.__add(instance);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.getEntity' instead.\n * ---\n * Retrieve the entity corresponding to the supplied key string.\n */\n get: function get(key) {\n logWarning('DraftEntity.get', 'contentState.getEntity');\n return DraftEntity.__get(key);\n },\n\n /**\n * Get all the entities in the content state.\n */\n __getAll: function __getAll() {\n return instances;\n },\n\n /**\n * Load the entity map with the given set of entities.\n */\n __loadWithEntities: function __loadWithEntities(entities) {\n instances = entities;\n instanceKey = uuid();\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.mergeEntityData' instead.\n * ---\n * Entity instances are immutable. If you need to update the data for an\n * instance, this method will merge your data updates and return a new\n * instance.\n */\n mergeData: function mergeData(key, toMerge) {\n logWarning('DraftEntity.mergeData', 'contentState.mergeEntityData');\n return DraftEntity.__mergeData(key, toMerge);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.replaceEntityData' instead.\n * ---\n * Completely replace the data for a given instance.\n */\n replaceData: function replaceData(key, newData) {\n logWarning('DraftEntity.replaceData', 'contentState.replaceEntityData');\n return DraftEntity.__replaceData(key, newData);\n },\n // ***********************************WARNING******************************\n // --- the above public API will be deprecated in the next version of Draft!\n // The methods below this line are private - don't call them directly.\n\n /**\n * Get the random key string from whatever entity was last created.\n * We need this to support the new API, as part of transitioning to put Entity\n * storage in contentState.\n */\n __getLastCreatedEntityKey: function __getLastCreatedEntityKey() {\n return instanceKey;\n },\n\n /**\n * Create a DraftEntityInstance and store it for later retrieval.\n *\n * A random key string will be generated and returned. This key may\n * be used to track the entity's usage in a ContentBlock, and for\n * retrieving data about the entity at render time.\n */\n __create: function __create(type, mutability, data) {\n return DraftEntity.__add(new DraftEntityInstance({\n type: type,\n mutability: mutability,\n data: data || {}\n }));\n },\n\n /**\n * Add an existing DraftEntityInstance to the DraftEntity map. This is\n * useful when restoring instances from the server.\n */\n __add: function __add(instance) {\n instanceKey = uuid();\n instances = instances.set(instanceKey, instance);\n return instanceKey;\n },\n\n /**\n * Retrieve the entity corresponding to the supplied key string.\n */\n __get: function __get(key) {\n var instance = instances.get(key);\n !!!instance ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown DraftEntity key: %s.', key) : invariant(false) : void 0;\n return instance;\n },\n\n /**\n * Entity instances are immutable. If you need to update the data for an\n * instance, this method will merge your data updates and return a new\n * instance.\n */\n __mergeData: function __mergeData(key, toMerge) {\n var instance = DraftEntity.__get(key);\n\n var newData = _objectSpread({}, instance.getData(), toMerge);\n\n var newInstance = instance.set('data', newData);\n instances = instances.set(key, newInstance);\n return newInstance;\n },\n\n /**\n * Completely replace the data for a given instance.\n */\n __replaceData: function __replaceData(key, newData) {\n var instance = DraftEntity.__get(key);\n\n var newInstance = instance.set('data', newData);\n instances = instances.set(key, newInstance);\n return newInstance;\n }\n};\nmodule.exports = DraftEntity;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar defaultRecord = {\n anchorKey: '',\n anchorOffset: 0,\n focusKey: '',\n focusOffset: 0,\n isBackward: false,\n hasFocus: false\n};\n/* $FlowFixMe[unclear-type] This comment suppresses an error found when\n * automatically adding a type annotation with the codemod Komodo/Annotate_\n * exports. To see the error delete this comment and run Flow. */\n\nvar SelectionStateRecord = Record(defaultRecord);\n\nvar SelectionState = /*#__PURE__*/function (_SelectionStateRecord) {\n _inheritsLoose(SelectionState, _SelectionStateRecord);\n\n function SelectionState() {\n return _SelectionStateRecord.apply(this, arguments) || this;\n }\n\n var _proto = SelectionState.prototype;\n\n _proto.serialize = function serialize() {\n return 'Anchor: ' + this.getAnchorKey() + ':' + this.getAnchorOffset() + ', ' + 'Focus: ' + this.getFocusKey() + ':' + this.getFocusOffset() + ', ' + 'Is Backward: ' + String(this.getIsBackward()) + ', ' + 'Has Focus: ' + String(this.getHasFocus());\n };\n\n _proto.getAnchorKey = function getAnchorKey() {\n return this.get('anchorKey');\n };\n\n _proto.getAnchorOffset = function getAnchorOffset() {\n return this.get('anchorOffset');\n };\n\n _proto.getFocusKey = function getFocusKey() {\n return this.get('focusKey');\n };\n\n _proto.getFocusOffset = function getFocusOffset() {\n return this.get('focusOffset');\n };\n\n _proto.getIsBackward = function getIsBackward() {\n return this.get('isBackward');\n };\n\n _proto.getHasFocus = function getHasFocus() {\n return this.get('hasFocus');\n }\n /**\n * Return whether the specified range overlaps with an edge of the\n * SelectionState.\n */\n ;\n\n _proto.hasEdgeWithin = function hasEdgeWithin(blockKey, start, end) {\n var anchorKey = this.getAnchorKey();\n var focusKey = this.getFocusKey();\n\n if (anchorKey === focusKey && anchorKey === blockKey) {\n var selectionStart = this.getStartOffset();\n var selectionEnd = this.getEndOffset();\n return start <= selectionStart && selectionStart <= end || // selectionStart is between start and end, or\n start <= selectionEnd && selectionEnd <= end // selectionEnd is between start and end\n ;\n }\n\n if (blockKey !== anchorKey && blockKey !== focusKey) {\n return false;\n }\n\n var offsetToCheck = blockKey === anchorKey ? this.getAnchorOffset() : this.getFocusOffset();\n return start <= offsetToCheck && end >= offsetToCheck;\n };\n\n _proto.isCollapsed = function isCollapsed() {\n return this.getAnchorKey() === this.getFocusKey() && this.getAnchorOffset() === this.getFocusOffset();\n };\n\n _proto.getStartKey = function getStartKey() {\n return this.getIsBackward() ? this.getFocusKey() : this.getAnchorKey();\n };\n\n _proto.getStartOffset = function getStartOffset() {\n return this.getIsBackward() ? this.getFocusOffset() : this.getAnchorOffset();\n };\n\n _proto.getEndKey = function getEndKey() {\n return this.getIsBackward() ? this.getAnchorKey() : this.getFocusKey();\n };\n\n _proto.getEndOffset = function getEndOffset() {\n return this.getIsBackward() ? this.getAnchorOffset() : this.getFocusOffset();\n };\n\n SelectionState.createEmpty = function createEmpty(key) {\n return new SelectionState({\n anchorKey: key,\n anchorOffset: 0,\n focusKey: key,\n focusOffset: 0,\n isBackward: false,\n hasFocus: false\n });\n };\n\n return SelectionState;\n}(SelectionStateRecord);\n\nmodule.exports = SelectionState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Constants to represent text directionality\n *\n * Also defines a *global* direciton, to be used in bidi algorithms as a\n * default fallback direciton, when no better direction is found or provided.\n *\n * NOTE: Use `setGlobalDir()`, or update `initGlobalDir()`, to set the initial\n * global direction value based on the application.\n *\n * Part of the implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar NEUTRAL = 'NEUTRAL'; // No strong direction\n\nvar LTR = 'LTR'; // Left-to-Right direction\n\nvar RTL = 'RTL'; // Right-to-Left direction\n\nvar globalDir = null; // == Helpers ==\n\n/**\n * Check if a directionality value is a Strong one\n */\n\nfunction isStrong(dir) {\n return dir === LTR || dir === RTL;\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property.\n */\n\n\nfunction getHTMLDir(dir) {\n !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n return dir === LTR ? 'ltr' : 'rtl';\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property, but returns null if `dir` has same value as `otherDir`.\n * `null`.\n */\n\n\nfunction getHTMLDirIfDifferent(dir, otherDir) {\n !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n !isStrong(otherDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`otherDir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n return dir === otherDir ? null : getHTMLDir(dir);\n} // == Global Direction ==\n\n/**\n * Set the global direction.\n */\n\n\nfunction setGlobalDir(dir) {\n globalDir = dir;\n}\n/**\n * Initialize the global direction\n */\n\n\nfunction initGlobalDir() {\n setGlobalDir(LTR);\n}\n/**\n * Get the global direction\n */\n\n\nfunction getGlobalDir() {\n if (!globalDir) {\n this.initGlobalDir();\n }\n\n !globalDir ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Global direction not set.') : invariant(false) : void 0;\n return globalDir;\n}\n\nvar UnicodeBidiDirection = {\n // Values\n NEUTRAL: NEUTRAL,\n LTR: LTR,\n RTL: RTL,\n // Helpers\n isStrong: isStrong,\n getHTMLDir: getHTMLDir,\n getHTMLDirIfDifferent: getHTMLDirIfDifferent,\n // Global Direction\n setGlobalDir: setGlobalDir,\n initGlobalDir: initGlobalDir,\n getGlobalDir: getGlobalDir\n};\nmodule.exports = UnicodeBidiDirection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n/**\n * Get the key from the node's nearest offset-aware ancestor.\n */\n\n\nfunction findAncestorOffsetKey(node) {\n var searchNode = node;\n\n while (searchNode && searchNode !== getCorrectDocumentFromNode(node).documentElement) {\n var key = getSelectionOffsetKeyForNode(searchNode);\n\n if (key != null) {\n return key;\n }\n\n searchNode = searchNode.parentNode;\n }\n\n return null;\n}\n\nmodule.exports = findAncestorOffsetKey;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction getCorrectDocumentFromNode(node) {\n if (!node || !node.ownerDocument) {\n return document;\n }\n\n return node.ownerDocument;\n}\n\nmodule.exports = getCorrectDocumentFromNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nmodule.exports = {\n BACKSPACE: 8,\n TAB: 9,\n RETURN: 13,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46,\n COMMA: 188,\n PERIOD: 190,\n A: 65,\n Z: 90,\n ZERO: 48,\n NUMPAD_0: 96,\n NUMPAD_9: 105\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getStyleProperty = require(\"./getStyleProperty\");\n/**\n * @param {DOMNode} element [description]\n * @param {string} name Overflow style property name.\n * @return {boolean} True if the supplied ndoe is scrollable.\n */\n\n\nfunction _isNodeScrollable(element, name) {\n var overflow = Style.get(element, name);\n return overflow === 'auto' || overflow === 'scroll';\n}\n/**\n * Utilities for querying and mutating style properties.\n */\n\n\nvar Style = {\n /**\n * Gets the style property for the supplied node. This will return either the\n * computed style, if available, or the declared style.\n *\n * @param {DOMNode} node\n * @param {string} name Style property name.\n * @return {?string} Style property value.\n */\n get: getStyleProperty,\n\n /**\n * Determines the nearest ancestor of a node that is scrollable.\n *\n * NOTE: This can be expensive if used repeatedly or on a node nested deeply.\n *\n * @param {?DOMNode} node Node from which to start searching.\n * @return {?DOMWindow|DOMElement} Scroll parent of the supplied node.\n */\n getScrollParent: function getScrollParent(node) {\n if (!node) {\n return null;\n }\n\n var ownerDocument = node.ownerDocument;\n\n while (node && node !== ownerDocument.body) {\n if (_isNodeScrollable(node, 'overflow') || _isNodeScrollable(node, 'overflowY') || _isNodeScrollable(node, 'overflowX')) {\n return node;\n }\n\n node = node.parentNode;\n }\n\n return ownerDocument.defaultView || ownerDocument.parentWindow;\n }\n};\nmodule.exports = Style;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar getDocumentScrollElement = require(\"./getDocumentScrollElement\");\n\nvar getUnboundedScrollPosition = require(\"./getUnboundedScrollPosition\");\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are bounded. This means that if the scroll position is\n * negative or exceeds the element boundaries (which is possible using inertial\n * scrolling), you will get zero or the maximum scroll position, respectively.\n *\n * If you need the unbound scroll position, use `getUnboundedScrollPosition`.\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\n\nfunction getScrollPosition(scrollable) {\n var documentScrollElement = getDocumentScrollElement(scrollable.ownerDocument || scrollable.document);\n\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n scrollable = documentScrollElement;\n }\n\n var scrollPosition = getUnboundedScrollPosition(scrollable);\n var viewport = scrollable === documentScrollElement ? scrollable.ownerDocument.documentElement : scrollable;\n var xMax = scrollable.scrollWidth - viewport.clientWidth;\n var yMax = scrollable.scrollHeight - viewport.clientHeight;\n scrollPosition.x = Math.max(0, Math.min(scrollPosition.x, xMax));\n scrollPosition.y = Math.max(0, Math.min(scrollPosition.y, yMax));\n return scrollPosition;\n}\n\nmodule.exports = getScrollPosition;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Utility method for determining whether or not the value returned\n * from a handler indicates that it was handled.\n */\nfunction isEventHandled(value) {\n return value === 'handled' || value === true;\n}\n\nmodule.exports = isEventHandled;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getOwnObjectValues = require(\"./getOwnObjectValues\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar sanitizeDraftText = require(\"./sanitizeDraftText\");\n\nvar List = Immutable.List,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat,\n ImmutableMap = Immutable.Map,\n OrderedMap = Immutable.OrderedMap;\nvar defaultRecord = {\n entityMap: null,\n blockMap: null,\n selectionBefore: null,\n selectionAfter: null\n};\nvar ContentStateRecord = Record(defaultRecord);\n/* $FlowFixMe[signature-verification-failure] Supressing a `signature-\n * verification-failure` error here. TODO: T65949050 Clean up the branch for\n * this GK */\n\nvar ContentBlockNodeRecord = gkx('draft_tree_data_support') ? ContentBlockNode : ContentBlock;\n\nvar ContentState = /*#__PURE__*/function (_ContentStateRecord) {\n _inheritsLoose(ContentState, _ContentStateRecord);\n\n function ContentState() {\n return _ContentStateRecord.apply(this, arguments) || this;\n }\n\n var _proto = ContentState.prototype;\n\n _proto.getEntityMap = function getEntityMap() {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity;\n };\n\n _proto.getBlockMap = function getBlockMap() {\n return this.get('blockMap');\n };\n\n _proto.getSelectionBefore = function getSelectionBefore() {\n return this.get('selectionBefore');\n };\n\n _proto.getSelectionAfter = function getSelectionAfter() {\n return this.get('selectionAfter');\n };\n\n _proto.getBlockForKey = function getBlockForKey(key) {\n var block = this.getBlockMap().get(key);\n return block;\n };\n\n _proto.getKeyBefore = function getKeyBefore(key) {\n return this.getBlockMap().reverse().keySeq().skipUntil(function (v) {\n return v === key;\n }).skip(1).first();\n };\n\n _proto.getKeyAfter = function getKeyAfter(key) {\n return this.getBlockMap().keySeq().skipUntil(function (v) {\n return v === key;\n }).skip(1).first();\n };\n\n _proto.getBlockAfter = function getBlockAfter(key) {\n return this.getBlockMap().skipUntil(function (_, k) {\n return k === key;\n }).skip(1).first();\n };\n\n _proto.getBlockBefore = function getBlockBefore(key) {\n return this.getBlockMap().reverse().skipUntil(function (_, k) {\n return k === key;\n }).skip(1).first();\n };\n\n _proto.getBlocksAsArray = function getBlocksAsArray() {\n return this.getBlockMap().toArray();\n };\n\n _proto.getFirstBlock = function getFirstBlock() {\n return this.getBlockMap().first();\n };\n\n _proto.getLastBlock = function getLastBlock() {\n return this.getBlockMap().last();\n };\n\n _proto.getPlainText = function getPlainText(delimiter) {\n return this.getBlockMap().map(function (block) {\n return block ? block.getText() : '';\n }).join(delimiter || '\\n');\n };\n\n _proto.getLastCreatedEntityKey = function getLastCreatedEntityKey() {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity.__getLastCreatedEntityKey();\n };\n\n _proto.hasText = function hasText() {\n var blockMap = this.getBlockMap();\n return blockMap.size > 1 || // make sure that there are no zero width space chars\n escape(blockMap.first().getText()).replace(/%u200B/g, '').length > 0;\n };\n\n _proto.createEntity = function createEntity(type, mutability, data) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__create(type, mutability, data);\n\n return this;\n };\n\n _proto.mergeEntityData = function mergeEntityData(key, toMerge) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__mergeData(key, toMerge);\n\n return this;\n };\n\n _proto.replaceEntityData = function replaceEntityData(key, newData) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__replaceData(key, newData);\n\n return this;\n };\n\n _proto.addEntity = function addEntity(instance) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__add(instance);\n\n return this;\n };\n\n _proto.getEntity = function getEntity(key) {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity.__get(key);\n };\n\n _proto.getAllEntities = function getAllEntities() {\n return DraftEntity.__getAll();\n };\n\n _proto.loadWithEntities = function loadWithEntities(entities) {\n return DraftEntity.__loadWithEntities(entities);\n };\n\n ContentState.createFromBlockArray = function createFromBlockArray( // TODO: update flow type when we completely deprecate the old entity API\n blocks, entityMap) {\n // TODO: remove this when we completely deprecate the old entity API\n var theBlocks = Array.isArray(blocks) ? blocks : blocks.contentBlocks;\n var blockMap = BlockMapBuilder.createFromArray(theBlocks);\n var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n return new ContentState({\n blockMap: blockMap,\n entityMap: entityMap || DraftEntity,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n };\n\n ContentState.createFromText = function createFromText(text) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /\\r\\n?|\\n/g;\n var strings = text.split(delimiter);\n var blocks = strings.map(function (block) {\n block = sanitizeDraftText(block);\n return new ContentBlockNodeRecord({\n key: generateRandomKey(),\n text: block,\n type: 'unstyled',\n characterList: List(Repeat(CharacterMetadata.EMPTY, block.length))\n });\n });\n return ContentState.createFromBlockArray(blocks);\n };\n\n ContentState.fromJS = function fromJS(state) {\n return new ContentState(_objectSpread({}, state, {\n blockMap: OrderedMap(state.blockMap).map(ContentState.createContentBlockFromJS),\n selectionBefore: new SelectionState(state.selectionBefore),\n selectionAfter: new SelectionState(state.selectionAfter)\n }));\n };\n\n ContentState.createContentBlockFromJS = function createContentBlockFromJS(block) {\n var characterList = block.characterList;\n return new ContentBlockNodeRecord(_objectSpread({}, block, {\n data: ImmutableMap(block.data),\n characterList: characterList != null ? List((Array.isArray(characterList) ? characterList : getOwnObjectValues(characterList)).map(function (c) {\n return CharacterMetadata.fromJS(c);\n })) : undefined\n }));\n };\n\n return ContentState;\n}(ContentStateRecord);\n\nmodule.exports = ContentState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Basic (stateless) API for text direction detection\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\n/**\n * RegExp ranges of characters with a *Strong* Bidi_Class value.\n *\n * Data is based on DerivedBidiClass.txt in UCD version 7.0.0.\n *\n * NOTE: For performance reasons, we only support Unicode's\n * Basic Multilingual Plane (BMP) for now.\n */\nvar RANGE_BY_BIDI_TYPE = {\n L: \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u01BA\\u01BB\" + \"\\u01BC-\\u01BF\\u01C0-\\u01C3\\u01C4-\\u0293\\u0294\\u0295-\\u02AF\\u02B0-\\u02B8\" + \"\\u02BB-\\u02C1\\u02D0-\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376-\\u0377\" + \"\\u037A\\u037B-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\" + \"\\u03A3-\\u03F5\\u03F7-\\u0481\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559\" + \"\\u055A-\\u055F\\u0561-\\u0587\\u0589\\u0903\\u0904-\\u0939\\u093B\\u093D\" + \"\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0950\\u0958-\\u0961\\u0964-\\u0965\" + \"\\u0966-\\u096F\\u0970\\u0971\\u0972-\\u0980\\u0982-\\u0983\\u0985-\\u098C\" + \"\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\" + \"\\u09BE-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u09CE\\u09D7\\u09DC-\\u09DD\" + \"\\u09DF-\\u09E1\\u09E6-\\u09EF\\u09F0-\\u09F1\\u09F4-\\u09F9\\u09FA\\u0A03\" + \"\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\" + \"\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\" + \"\\u0A72-\\u0A74\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\" + \"\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0AD0\" + \"\\u0AE0-\\u0AE1\\u0AE6-\\u0AEF\\u0AF0\\u0B02-\\u0B03\\u0B05-\\u0B0C\\u0B0F-\\u0B10\" + \"\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\" + \"\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0B57\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\" + \"\\u0B70\\u0B71\\u0B72-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\" + \"\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\" + \"\\u0BBE-\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\" + \"\\u0BE6-\\u0BEF\\u0BF0-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\" + \"\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C59\\u0C60-\\u0C61\" + \"\\u0C66-\\u0C6F\\u0C7F\\u0C82-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\" + \"\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CBE\\u0CBF\\u0CC0-\\u0CC4\\u0CC6\" + \"\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0CD5-\\u0CD6\\u0CDE\\u0CE0-\\u0CE1\\u0CE6-\\u0CEF\" + \"\\u0CF1-\\u0CF2\\u0D02-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\" + \"\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D57\\u0D60-\\u0D61\" + \"\\u0D66-\\u0D6F\\u0D70-\\u0D75\\u0D79\\u0D7A-\\u0D7F\\u0D82-\\u0D83\\u0D85-\\u0D96\" + \"\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\" + \"\\u0DE6-\\u0DEF\\u0DF2-\\u0DF3\\u0DF4\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E45\" + \"\\u0E46\\u0E4F\\u0E50-\\u0E59\\u0E5A-\\u0E5B\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\" + \"\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\" + \"\\u0EAA-\\u0EAB\\u0EAD-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\" + \"\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F01-\\u0F03\\u0F04-\\u0F12\\u0F13\\u0F14\" + \"\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F20-\\u0F29\\u0F2A-\\u0F33\\u0F34\\u0F36\\u0F38\" + \"\\u0F3E-\\u0F3F\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\" + \"\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FCF\\u0FD0-\\u0FD4\\u0FD5-\\u0FD8\" + \"\\u0FD9-\\u0FDA\\u1000-\\u102A\\u102B-\\u102C\\u1031\\u1038\\u103B-\\u103C\\u103F\" + \"\\u1040-\\u1049\\u104A-\\u104F\\u1050-\\u1055\\u1056-\\u1057\\u105A-\\u105D\\u1061\" + \"\\u1062-\\u1064\\u1065-\\u1066\\u1067-\\u106D\\u106E-\\u1070\\u1075-\\u1081\" + \"\\u1083-\\u1084\\u1087-\\u108C\\u108E\\u108F\\u1090-\\u1099\\u109A-\\u109C\" + \"\\u109E-\\u109F\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FB\\u10FC\" + \"\\u10FD-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\" + \"\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\" + \"\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u1368\" + \"\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166D-\\u166E\" + \"\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EB-\\u16ED\\u16EE-\\u16F0\" + \"\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1735-\\u1736\" + \"\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\" + \"\\u17C7-\\u17C8\\u17D4-\\u17D6\\u17D7\\u17D8-\\u17DA\\u17DC\\u17E0-\\u17E9\" + \"\\u1810-\\u1819\\u1820-\\u1842\\u1843\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\" + \"\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\" + \"\\u1933-\\u1938\\u1946-\\u194F\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\" + \"\\u19B0-\\u19C0\\u19C1-\\u19C7\\u19C8-\\u19C9\\u19D0-\\u19D9\\u19DA\\u1A00-\\u1A16\" + \"\\u1A19-\\u1A1A\\u1A1E-\\u1A1F\\u1A20-\\u1A54\\u1A55\\u1A57\\u1A61\\u1A63-\\u1A64\" + \"\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AA6\\u1AA7\\u1AA8-\\u1AAD\" + \"\\u1B04\\u1B05-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B45-\\u1B4B\" + \"\\u1B50-\\u1B59\\u1B5A-\\u1B60\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1B82\\u1B83-\\u1BA0\" + \"\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BAE-\\u1BAF\\u1BB0-\\u1BB9\\u1BBA-\\u1BE5\\u1BE7\" + \"\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1BFC-\\u1BFF\\u1C00-\\u1C23\\u1C24-\\u1C2B\" + \"\\u1C34-\\u1C35\\u1C3B-\\u1C3F\\u1C40-\\u1C49\\u1C4D-\\u1C4F\\u1C50-\\u1C59\" + \"\\u1C5A-\\u1C77\\u1C78-\\u1C7D\\u1C7E-\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u1CE1\" + \"\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF2-\\u1CF3\\u1CF5-\\u1CF6\\u1D00-\\u1D2B\" + \"\\u1D2C-\\u1D6A\\u1D6B-\\u1D77\\u1D78\\u1D79-\\u1D9A\\u1D9B-\\u1DBF\\u1E00-\\u1F15\" + \"\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\" + \"\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\" + \"\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\" + \"\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\" + \"\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2134\\u2135-\\u2138\\u2139\" + \"\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2182\\u2183-\\u2184\" + \"\\u2185-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\" + \"\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C7B\\u2C7C-\\u2C7D\\u2C7E-\\u2CE4\" + \"\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\" + \"\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\" + \"\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005\\u3006\\u3007\" + \"\\u3021-\\u3029\\u302E-\\u302F\\u3031-\\u3035\\u3038-\\u303A\\u303B\\u303C\" + \"\\u3041-\\u3096\\u309D-\\u309E\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FE\\u30FF\" + \"\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u3191\\u3192-\\u3195\\u3196-\\u319F\" + \"\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3200-\\u321C\\u3220-\\u3229\\u322A-\\u3247\" + \"\\u3248-\\u324F\\u3260-\\u327B\\u327F\\u3280-\\u3289\\u328A-\\u32B0\\u32C0-\\u32CB\" + \"\\u32D0-\\u32FE\\u3300-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DB5\" + \"\\u4E00-\\u9FCC\\uA000-\\uA014\\uA015\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA4F8-\\uA4FD\" + \"\\uA4FE-\\uA4FF\\uA500-\\uA60B\\uA60C\\uA610-\\uA61F\\uA620-\\uA629\\uA62A-\\uA62B\" + \"\\uA640-\\uA66D\\uA66E\\uA680-\\uA69B\\uA69C-\\uA69D\\uA6A0-\\uA6E5\\uA6E6-\\uA6EF\" + \"\\uA6F2-\\uA6F7\\uA722-\\uA76F\\uA770\\uA771-\\uA787\\uA789-\\uA78A\\uA78B-\\uA78E\" + \"\\uA790-\\uA7AD\\uA7B0-\\uA7B1\\uA7F7\\uA7F8-\\uA7F9\\uA7FA\\uA7FB-\\uA801\" + \"\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA823-\\uA824\\uA827\\uA830-\\uA835\" + \"\\uA836-\\uA837\\uA840-\\uA873\\uA880-\\uA881\\uA882-\\uA8B3\\uA8B4-\\uA8C3\" + \"\\uA8CE-\\uA8CF\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8F8-\\uA8FA\\uA8FB\\uA900-\\uA909\" + \"\\uA90A-\\uA925\\uA92E-\\uA92F\\uA930-\\uA946\\uA952-\\uA953\\uA95F\\uA960-\\uA97C\" + \"\\uA983\\uA984-\\uA9B2\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BD-\\uA9C0\\uA9C1-\\uA9CD\" + \"\\uA9CF\\uA9D0-\\uA9D9\\uA9DE-\\uA9DF\\uA9E0-\\uA9E4\\uA9E6\\uA9E7-\\uA9EF\" + \"\\uA9F0-\\uA9F9\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA2F-\\uAA30\\uAA33-\\uAA34\" + \"\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA5F\\uAA60-\\uAA6F\" + \"\\uAA70\\uAA71-\\uAA76\\uAA77-\\uAA79\\uAA7A\\uAA7B\\uAA7D\\uAA7E-\\uAAAF\\uAAB1\" + \"\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADC\\uAADD\\uAADE-\\uAADF\" + \"\\uAAE0-\\uAAEA\\uAAEB\\uAAEE-\\uAAEF\\uAAF0-\\uAAF1\\uAAF2\\uAAF3-\\uAAF4\\uAAF5\" + \"\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\" + \"\\uAB30-\\uAB5A\\uAB5B\\uAB5C-\\uAB5F\\uAB64-\\uAB65\\uABC0-\\uABE2\\uABE3-\\uABE4\" + \"\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEB\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\" + \"\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uE000-\\uF8FF\\uF900-\\uFA6D\\uFA70-\\uFAD9\" + \"\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFF6F\\uFF70\" + \"\\uFF71-\\uFF9D\\uFF9E-\\uFF9F\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\" + \"\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\",\n R: \"\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05D0-\\u05EA\\u05EB-\\u05EF\" + \"\\u05F0-\\u05F2\\u05F3-\\u05F4\\u05F5-\\u05FF\\u07C0-\\u07C9\\u07CA-\\u07EA\" + \"\\u07F4-\\u07F5\\u07FA\\u07FB-\\u07FF\\u0800-\\u0815\\u081A\\u0824\\u0828\" + \"\\u082E-\\u082F\\u0830-\\u083E\\u083F\\u0840-\\u0858\\u085C-\\u085D\\u085E\" + \"\\u085F-\\u089F\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB37\\uFB38-\\uFB3C\" + \"\\uFB3D\\uFB3E\\uFB3F\\uFB40-\\uFB41\\uFB42\\uFB43-\\uFB44\\uFB45\\uFB46-\\uFB4F\",\n AL: \"\\u0608\\u060B\\u060D\\u061B\\u061C\\u061D\\u061E-\\u061F\\u0620-\\u063F\\u0640\" + \"\\u0641-\\u064A\\u066D\\u066E-\\u066F\\u0671-\\u06D3\\u06D4\\u06D5\\u06E5-\\u06E6\" + \"\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FD-\\u06FE\\u06FF\\u0700-\\u070D\\u070E\\u070F\" + \"\\u0710\\u0712-\\u072F\\u074B-\\u074C\\u074D-\\u07A5\\u07B1\\u07B2-\\u07BF\" + \"\\u08A0-\\u08B2\\u08B3-\\u08E3\\uFB50-\\uFBB1\\uFBB2-\\uFBC1\\uFBC2-\\uFBD2\" + \"\\uFBD3-\\uFD3D\\uFD40-\\uFD4F\\uFD50-\\uFD8F\\uFD90-\\uFD91\\uFD92-\\uFDC7\" + \"\\uFDC8-\\uFDCF\\uFDF0-\\uFDFB\\uFDFC\\uFDFE-\\uFDFF\\uFE70-\\uFE74\\uFE75\" + \"\\uFE76-\\uFEFC\\uFEFD-\\uFEFE\"\n};\nvar REGEX_STRONG = new RegExp('[' + RANGE_BY_BIDI_TYPE.L + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\nvar REGEX_RTL = new RegExp('[' + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\n/**\n * Returns the first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @return A character with strong bidi direction, or null if not found\n */\n\nfunction firstStrongChar(str) {\n var match = REGEX_STRONG.exec(str);\n return match == null ? null : match[0];\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @return The resolved direction\n */\n\n\nfunction firstStrongCharDir(str) {\n var strongChar = firstStrongChar(str);\n\n if (strongChar == null) {\n return UnicodeBidiDirection.NEUTRAL;\n }\n\n return REGEX_RTL.exec(strongChar) ? UnicodeBidiDirection.RTL : UnicodeBidiDirection.LTR;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @param fallback Fallback direction, used if no strong direction detected\n * for the block (default = NEUTRAL)\n * @return The resolved direction\n */\n\n\nfunction resolveBlockDir(str, fallback) {\n fallback = fallback || UnicodeBidiDirection.NEUTRAL;\n\n if (!str.length) {\n return fallback;\n }\n\n var blockDir = firstStrongCharDir(str);\n return blockDir === UnicodeBidiDirection.NEUTRAL ? fallback : blockDir;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * NOTE: This function is similar to resolveBlockDir(), but uses the global\n * direction as the fallback, so it *always* returns a Strong direction,\n * making it useful for integration in places that you need to make the final\n * decision, like setting some CSS class.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return The resolved Strong direction\n */\n\n\nfunction getDirection(str, strongFallback) {\n if (!strongFallback) {\n strongFallback = UnicodeBidiDirection.getGlobalDir();\n }\n\n !UnicodeBidiDirection.isStrong(strongFallback) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Fallback direction must be a strong direction') : invariant(false) : void 0;\n return resolveBlockDir(str, strongFallback);\n}\n/**\n * Returns true if getDirection(arguments...) returns LTR.\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return True if the resolved direction is LTR\n */\n\n\nfunction isDirectionLTR(str, strongFallback) {\n return getDirection(str, strongFallback) === UnicodeBidiDirection.LTR;\n}\n/**\n * Returns true if getDirection(arguments...) returns RTL.\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return True if the resolved direction is RTL\n */\n\n\nfunction isDirectionRTL(str, strongFallback) {\n return getDirection(str, strongFallback) === UnicodeBidiDirection.RTL;\n}\n\nvar UnicodeBidi = {\n firstStrongChar: firstStrongChar,\n firstStrongCharDir: firstStrongCharDir,\n resolveBlockDir: resolveBlockDir,\n getDirection: getDirection,\n isDirectionLTR: isDirectionLTR,\n isDirectionRTL: isDirectionRTL\n};\nmodule.exports = UnicodeBidi;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar _require = require(\"immutable\"),\n Map = _require.Map;\n\nvar UL_WRAP = React.createElement(\"ul\", {\n className: cx('public/DraftStyleDefault/ul')\n});\nvar OL_WRAP = React.createElement(\"ol\", {\n className: cx('public/DraftStyleDefault/ol')\n});\nvar PRE_WRAP = React.createElement(\"pre\", {\n className: cx('public/DraftStyleDefault/pre')\n});\nvar DefaultDraftBlockRenderMap = Map({\n 'header-one': {\n element: 'h1'\n },\n 'header-two': {\n element: 'h2'\n },\n 'header-three': {\n element: 'h3'\n },\n 'header-four': {\n element: 'h4'\n },\n 'header-five': {\n element: 'h5'\n },\n 'header-six': {\n element: 'h6'\n },\n section: {\n element: 'section'\n },\n article: {\n element: 'article'\n },\n 'unordered-list-item': {\n element: 'li',\n wrapper: UL_WRAP\n },\n 'ordered-list-item': {\n element: 'li',\n wrapper: OL_WRAP\n },\n blockquote: {\n element: 'blockquote'\n },\n atomic: {\n element: 'figure'\n },\n 'code-block': {\n element: 'pre',\n wrapper: PRE_WRAP\n },\n unstyled: {\n element: 'div',\n aliasedElements: ['p']\n }\n});\nmodule.exports = DefaultDraftBlockRenderMap;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _require = require(\"./draftKeyUtils\"),\n notEmptyKey = _require.notEmptyKey;\n/**\n * Return the entity key that should be used when inserting text for the\n * specified target selection, only if the entity is `MUTABLE`. `IMMUTABLE`\n * and `SEGMENTED` entities should not be used for insertion behavior.\n */\n\n\nfunction getEntityKeyForSelection(contentState, targetSelection) {\n var entityKey;\n\n if (targetSelection.isCollapsed()) {\n var key = targetSelection.getAnchorKey();\n var offset = targetSelection.getAnchorOffset();\n\n if (offset > 0) {\n entityKey = contentState.getBlockForKey(key).getEntityAt(offset - 1);\n\n if (entityKey !== contentState.getBlockForKey(key).getEntityAt(offset)) {\n return null;\n }\n\n return filterKey(contentState.getEntityMap(), entityKey);\n }\n\n return null;\n }\n\n var startKey = targetSelection.getStartKey();\n var startOffset = targetSelection.getStartOffset();\n var startBlock = contentState.getBlockForKey(startKey);\n entityKey = startOffset === startBlock.getLength() ? null : startBlock.getEntityAt(startOffset);\n return filterKey(contentState.getEntityMap(), entityKey);\n}\n/**\n * Determine whether an entity key corresponds to a `MUTABLE` entity. If so,\n * return it. If not, return null.\n */\n\n\nfunction filterKey(entityMap, entityKey) {\n if (notEmptyKey(entityKey)) {\n var entity = entityMap.__get(entityKey);\n\n return entity.getMutability() === 'MUTABLE' ? entityKey : null;\n }\n\n return null;\n}\n\nmodule.exports = getEntityKeyForSelection;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar isTextNode = require(\"./isTextNode\");\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\n\n\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * @param {DOMElement} element\n * @param {DOMDocument} doc\n * @return {boolean}\n */\nfunction _isViewportScrollElement(element, doc) {\n return !!doc && (element === doc.documentElement || element === doc.body);\n}\n/**\n * Scroll Module. This class contains 4 simple static functions\n * to be used to access Element.scrollTop/scrollLeft properties.\n * To solve the inconsistencies between browsers when either\n * document.body or document.documentElement is supplied,\n * below logic will be used to alleviate the issue:\n *\n * 1. If 'element' is either 'document.body' or 'document.documentElement,\n * get whichever element's 'scroll{Top,Left}' is larger.\n * 2. If 'element' is either 'document.body' or 'document.documentElement',\n * set the 'scroll{Top,Left}' on both elements.\n */\n\n\nvar Scroll = {\n /**\n * @param {DOMElement} element\n * @return {number}\n */\n getTop: function getTop(element) {\n var doc = element.ownerDocument;\n return _isViewportScrollElement(element, doc) ? // In practice, they will either both have the same value,\n // or one will be zero and the other will be the scroll position\n // of the viewport. So we can use `X || Y` instead of `Math.max(X, Y)`\n doc.body.scrollTop || doc.documentElement.scrollTop : element.scrollTop;\n },\n\n /**\n * @param {DOMElement} element\n * @param {number} newTop\n */\n setTop: function setTop(element, newTop) {\n var doc = element.ownerDocument;\n\n if (_isViewportScrollElement(element, doc)) {\n doc.body.scrollTop = doc.documentElement.scrollTop = newTop;\n } else {\n element.scrollTop = newTop;\n }\n },\n\n /**\n * @param {DOMElement} element\n * @return {number}\n */\n getLeft: function getLeft(element) {\n var doc = element.ownerDocument;\n return _isViewportScrollElement(element, doc) ? doc.body.scrollLeft || doc.documentElement.scrollLeft : element.scrollLeft;\n },\n\n /**\n * @param {DOMElement} element\n * @param {number} newLeft\n */\n setLeft: function setLeft(element, newLeft) {\n var doc = element.ownerDocument;\n\n if (_isViewportScrollElement(element, doc)) {\n doc.body.scrollLeft = doc.documentElement.scrollLeft = newLeft;\n } else {\n element.scrollLeft = newLeft;\n }\n }\n};\nmodule.exports = Scroll;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` backward within\n * the selected block. If the selection will go beyond the start of the block,\n * move focus to the end of the previous block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionBackward(editorState, maxDistance) {\n var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionBackward should only be called with a collapsed SelectionState') : void 0;\n var content = editorState.getCurrentContent();\n var key = selection.getStartKey();\n var offset = selection.getStartOffset();\n var focusKey = key;\n var focusOffset = 0;\n\n if (maxDistance > offset) {\n var keyBefore = content.getKeyBefore(key);\n\n if (keyBefore == null) {\n focusKey = key;\n } else {\n focusKey = keyBefore;\n var blockBefore = content.getBlockForKey(keyBefore);\n focusOffset = blockBefore.getText().length;\n }\n } else {\n focusOffset = offset - maxDistance;\n }\n\n return selection.merge({\n focusKey: focusKey,\n focusOffset: focusOffset,\n isBackward: true\n });\n}\n\nmodule.exports = moveSelectionBackward;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar emptyFunction = require(\"./emptyFunction\");\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nfunction printWarning(format) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n}\n\nvar warning = process.env.NODE_ENV !== \"production\" ? function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(void 0, [format].concat(args));\n }\n} : emptyFunction;\nmodule.exports = warning;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isSoftNewlineEvent = require(\"./isSoftNewlineEvent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X');\nvar KeyBindingUtil = {\n /**\n * Check whether the ctrlKey modifier is *not* being used in conjunction with\n * the altKey modifier. If they are combined, the result is an `altGraph`\n * key modifier, which should not be handled by this set of key bindings.\n */\n isCtrlKeyCommand: function isCtrlKeyCommand(e) {\n return !!e.ctrlKey && !e.altKey;\n },\n isOptionKeyCommand: function isOptionKeyCommand(e) {\n return isOSX && e.altKey;\n },\n usesMacOSHeuristics: function usesMacOSHeuristics() {\n return isOSX;\n },\n hasCommandModifier: function hasCommandModifier(e) {\n return isOSX ? !!e.metaKey && !e.altKey : KeyBindingUtil.isCtrlKeyCommand(e);\n },\n isSoftNewlineEvent: isSoftNewlineEvent\n};\nmodule.exports = KeyBindingUtil;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\n\nvar randomizeContentBlockNodeKeys = function randomizeContentBlockNodeKeys(blockMap) {\n var newKeysRef = {}; // we keep track of root blocks in order to update subsequent sibling links\n\n var lastRootBlock;\n return OrderedMap(blockMap.withMutations(function (blockMapState) {\n blockMapState.forEach(function (block, index) {\n var oldKey = block.getKey();\n var nextKey = block.getNextSiblingKey();\n var prevKey = block.getPrevSiblingKey();\n var childrenKeys = block.getChildKeys();\n var parentKey = block.getParentKey(); // new key that we will use to build linking\n\n var key = generateRandomKey(); // we will add it here to re-use it later\n\n newKeysRef[oldKey] = key;\n\n if (nextKey) {\n var nextBlock = blockMapState.get(nextKey);\n\n if (nextBlock) {\n blockMapState.setIn([nextKey, 'prevSibling'], key);\n } else {\n // this can happen when generating random keys for fragments\n blockMapState.setIn([oldKey, 'nextSibling'], null);\n }\n }\n\n if (prevKey) {\n var prevBlock = blockMapState.get(prevKey);\n\n if (prevBlock) {\n blockMapState.setIn([prevKey, 'nextSibling'], key);\n } else {\n // this can happen when generating random keys for fragments\n blockMapState.setIn([oldKey, 'prevSibling'], null);\n }\n }\n\n if (parentKey && blockMapState.get(parentKey)) {\n var parentBlock = blockMapState.get(parentKey);\n var parentChildrenList = parentBlock.getChildKeys();\n blockMapState.setIn([parentKey, 'children'], parentChildrenList.set(parentChildrenList.indexOf(block.getKey()), key));\n } else {\n // blocks will then be treated as root block nodes\n blockMapState.setIn([oldKey, 'parent'], null);\n\n if (lastRootBlock) {\n blockMapState.setIn([lastRootBlock.getKey(), 'nextSibling'], key);\n blockMapState.setIn([oldKey, 'prevSibling'], newKeysRef[lastRootBlock.getKey()]);\n }\n\n lastRootBlock = blockMapState.get(oldKey);\n }\n\n childrenKeys.forEach(function (childKey) {\n var childBlock = blockMapState.get(childKey);\n\n if (childBlock) {\n blockMapState.setIn([childKey, 'parent'], key);\n } else {\n blockMapState.setIn([oldKey, 'children'], block.getChildKeys().filter(function (child) {\n return child !== childKey;\n }));\n }\n });\n });\n }).toArray().map(function (block) {\n return [newKeysRef[block.getKey()], block.set('key', newKeysRef[block.getKey()])];\n }));\n};\n\nvar randomizeContentBlockKeys = function randomizeContentBlockKeys(blockMap) {\n return OrderedMap(blockMap.toArray().map(function (block) {\n var key = generateRandomKey();\n return [key, block.set('key', key)];\n }));\n};\n\nvar randomizeBlockMapKeys = function randomizeBlockMapKeys(blockMap) {\n var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n\n if (!isTreeBasedBlockMap) {\n return randomizeContentBlockKeys(blockMap);\n }\n\n return randomizeContentBlockNodeKeys(blockMap);\n};\n\nmodule.exports = randomizeBlockMapKeys;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nfunction removeEntitiesAtEdges(contentState, selectionState) {\n var blockMap = contentState.getBlockMap();\n var entityMap = contentState.getEntityMap();\n var updatedBlocks = {};\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var startBlock = blockMap.get(startKey);\n var updatedStart = removeForBlock(entityMap, startBlock, startOffset);\n\n if (updatedStart !== startBlock) {\n updatedBlocks[startKey] = updatedStart;\n }\n\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var endBlock = blockMap.get(endKey);\n\n if (startKey === endKey) {\n endBlock = updatedStart;\n }\n\n var updatedEnd = removeForBlock(entityMap, endBlock, endOffset);\n\n if (updatedEnd !== endBlock) {\n updatedBlocks[endKey] = updatedEnd;\n }\n\n if (!Object.keys(updatedBlocks).length) {\n return contentState.set('selectionAfter', selectionState);\n }\n\n return contentState.merge({\n blockMap: blockMap.merge(updatedBlocks),\n selectionAfter: selectionState\n });\n}\n/**\n * Given a list of characters and an offset that is in the middle of an entity,\n * returns the start and end of the entity that is overlapping the offset.\n * Note: This method requires that the offset be in an entity range.\n */\n\n\nfunction getRemovalRange(characters, entityKey, offset) {\n var removalRange; // Iterates through a list looking for ranges of matching items\n // based on the 'isEqual' callback.\n // Then instead of returning the result, call the 'found' callback\n // with each range.\n // Then filters those ranges based on the 'filter' callback\n //\n // Here we use it to find ranges of characters with the same entity key.\n\n findRangesImmutable(characters, // the list to iterate through\n function (a, b) {\n return a.getEntity() === b.getEntity();\n }, // 'isEqual' callback\n function (element) {\n return element.getEntity() === entityKey;\n }, // 'filter' callback\n function (start, end) {\n // 'found' callback\n if (start <= offset && end >= offset) {\n // this entity overlaps the offset index\n removalRange = {\n start: start,\n end: end\n };\n }\n });\n !(typeof removalRange === 'object') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Removal range must exist within character list.') : invariant(false) : void 0;\n return removalRange;\n}\n\nfunction removeForBlock(entityMap, block, offset) {\n var chars = block.getCharacterList();\n var charBefore = offset > 0 ? chars.get(offset - 1) : undefined;\n var charAfter = offset < chars.count() ? chars.get(offset) : undefined;\n var entityBeforeCursor = charBefore ? charBefore.getEntity() : undefined;\n var entityAfterCursor = charAfter ? charAfter.getEntity() : undefined;\n\n if (entityAfterCursor && entityAfterCursor === entityBeforeCursor) {\n var entity = entityMap.__get(entityAfterCursor);\n\n if (entity.getMutability() !== 'MUTABLE') {\n var _getRemovalRange = getRemovalRange(chars, entityAfterCursor, offset),\n start = _getRemovalRange.start,\n end = _getRemovalRange.end;\n\n var current;\n\n while (start < end) {\n current = chars.get(start);\n chars = chars.set(start, CharacterMetadata.applyEntity(current, null));\n start++;\n }\n\n return block.set('characterList', chars);\n }\n }\n\n return block;\n}\n\nmodule.exports = removeEntitiesAtEdges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Maintain persistence for target list when appending and prepending.\n */\nfunction insertIntoList(targetListArg, toInsert, offset) {\n var targetList = targetListArg;\n\n if (offset === targetList.count()) {\n toInsert.forEach(function (c) {\n targetList = targetList.push(c);\n });\n } else if (offset === 0) {\n toInsert.reverse().forEach(function (c) {\n targetList = targetList.unshift(c);\n });\n } else {\n var head = targetList.slice(0, offset);\n var tail = targetList.slice(offset);\n targetList = head.concat(toInsert, tail).toList();\n }\n\n return targetList;\n}\n\nmodule.exports = insertIntoList;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar Map = Immutable.Map;\n\nfunction modifyBlockForContentState(contentState, selectionState, operation) {\n var startKey = selectionState.getStartKey();\n var endKey = selectionState.getEndKey();\n var blockMap = contentState.getBlockMap();\n var newBlocks = blockMap.toSeq().skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).concat(Map([[endKey, blockMap.get(endKey)]])).map(operation);\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = modifyBlockForContentState;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = function getNextDelimiterBlockKey(block, blockMap) {\n var isExperimentalTreeBlock = block instanceof ContentBlockNode;\n\n if (!isExperimentalTreeBlock) {\n return null;\n }\n\n var nextSiblingKey = block.getNextSiblingKey();\n\n if (nextSiblingKey) {\n return nextSiblingKey;\n }\n\n var parent = block.getParentKey();\n\n if (!parent) {\n return null;\n }\n\n var nextNonDescendantBlock = blockMap.get(parent);\n\n while (nextNonDescendantBlock && !nextNonDescendantBlock.getNextSiblingKey()) {\n var parentKey = nextNonDescendantBlock.getParentKey();\n nextNonDescendantBlock = parentKey ? blockMap.get(parentKey) : null;\n }\n\n if (!nextNonDescendantBlock) {\n return null;\n }\n\n return nextNonDescendantBlock.getNextSiblingKey();\n};\n\nmodule.exports = getNextDelimiterBlockKey;","\"use strict\";\n\n/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * \n * @typechecks\n * @format\n */\n\n/**\n * Retrieve an object's own values as an array. If you want the values in the\n * protoype chain, too, use getObjectValuesIncludingPrototype.\n *\n * If you are looking for a function that creates an Array instance based\n * on an \"Array-like\" object, use createArrayFrom instead.\n *\n * @param {object} obj An object.\n * @return {array} The object's values.\n */\nfunction getOwnObjectValues(obj) {\n return Object.keys(obj).map(function (key) {\n return obj[key];\n });\n}\n\nmodule.exports = getOwnObjectValues;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @legacyServerCallableInstance\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar DraftEntityInstanceRecord = Record({\n type: 'TOKEN',\n mutability: 'IMMUTABLE',\n data: Object\n});\n/**\n * An instance of a document entity, consisting of a `type` and relevant\n * `data`, metadata about the entity.\n *\n * For instance, a \"link\" entity might provide a URI, and a \"mention\"\n * entity might provide the mentioned user's ID. These pieces of data\n * may be used when rendering the entity as part of a ContentBlock DOM\n * representation. For a link, the data would be used as an href for\n * the rendered anchor. For a mention, the ID could be used to retrieve\n * a hovercard.\n */\n\nvar DraftEntityInstance = /*#__PURE__*/function (_DraftEntityInstanceR) {\n _inheritsLoose(DraftEntityInstance, _DraftEntityInstanceR);\n\n function DraftEntityInstance() {\n return _DraftEntityInstanceR.apply(this, arguments) || this;\n }\n\n var _proto = DraftEntityInstance.prototype;\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getMutability = function getMutability() {\n return this.get('mutability');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n return DraftEntityInstance;\n}(DraftEntityInstanceRecord);\n\nmodule.exports = DraftEntityInstance;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar REGEX_BLOCK_DELIMITER = new RegExp('\\r', 'g');\n\nfunction sanitizeDraftText(input) {\n return input.replace(REGEX_BLOCK_DELIMITER, '');\n}\n\nmodule.exports = sanitizeDraftText;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nmodule.exports = {\n BOLD: {\n fontWeight: 'bold'\n },\n CODE: {\n fontFamily: 'monospace',\n wordWrap: 'break-word'\n },\n ITALIC: {\n fontStyle: 'italic'\n },\n STRIKETHROUGH: {\n textDecoration: 'line-through'\n },\n UNDERLINE: {\n textDecoration: 'underline'\n }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n/**\n * Get offset key from a node or it's child nodes. Return the first offset key\n * found on the DOM tree of given node.\n */\n\nvar isElement = require(\"./isElement\");\n\nfunction getSelectionOffsetKeyForNode(node) {\n if (isElement(node)) {\n var castedNode = node;\n var offsetKey = castedNode.getAttribute('data-offset-key');\n\n if (offsetKey) {\n return offsetKey;\n }\n\n for (var ii = 0; ii < castedNode.childNodes.length; ii++) {\n var childOffsetKey = getSelectionOffsetKeyForNode(castedNode.childNodes[ii]);\n\n if (childOffsetKey) {\n return childOffsetKey;\n }\n }\n }\n\n return null;\n}\n\nmodule.exports = getSelectionOffsetKeyForNode;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction getWindowForNode(node) {\n if (!node || !node.ownerDocument || !node.ownerDocument.defaultView) {\n return window;\n }\n\n return node.ownerDocument.defaultView;\n}\n\nmodule.exports = getWindowForNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftJsDebugLogging = require(\"./DraftJsDebugLogging\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentEditableContainer = require(\"./getContentEditableContainer\");\n\nvar getDraftEditorSelection = require(\"./getDraftEditorSelection\");\n\nfunction editOnSelect(editor) {\n if (editor._blockSelectEvents || editor._latestEditorState !== editor.props.editorState) {\n if (editor._blockSelectEvents) {\n var _editorState = editor.props.editorState;\n\n var selectionState = _editorState.getSelection();\n\n DraftJsDebugLogging.logBlockedSelectionEvent({\n // For now I don't think we need any other info\n anonymizedDom: 'N/A',\n extraParams: JSON.stringify({\n stacktrace: new Error().stack\n }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n }\n\n return;\n }\n\n var editorState = editor.props.editorState;\n var documentSelection = getDraftEditorSelection(editorState, getContentEditableContainer(editor));\n var updatedSelectionState = documentSelection.selectionState;\n\n if (updatedSelectionState !== editorState.getSelection()) {\n if (documentSelection.needsRecovery) {\n editorState = EditorState.forceSelection(editorState, updatedSelectionState);\n } else {\n editorState = EditorState.acceptSelection(editorState, updatedSelectionState);\n }\n\n editor.update(editorState);\n }\n}\n\nmodule.exports = editOnSelect;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nmodule.exports = {\n logBlockedSelectionEvent: function logBlockedSelectionEvent() {\n return null;\n },\n logSelectionStateFailure: function logSelectionStateFailure() {\n return null;\n }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nfunction getContentEditableContainer(editor) {\n var editorNode = editor.editorContainer;\n !editorNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing editorNode') : invariant(false) : void 0;\n !isHTMLElement(editorNode.firstChild) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode.firstChild is not an HTMLElement') : invariant(false) : void 0;\n var htmlElement = editorNode.firstChild;\n return htmlElement;\n}\n\nmodule.exports = getContentEditableContainer;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getDraftEditorSelectionWithNodes = require(\"./getDraftEditorSelectionWithNodes\");\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\n\n\nfunction getDraftEditorSelection(editorState, root) {\n var selection = root.ownerDocument.defaultView.getSelection();\n var anchorNode = selection.anchorNode,\n anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode,\n focusOffset = selection.focusOffset,\n rangeCount = selection.rangeCount;\n\n if ( // No active selection.\n rangeCount === 0 || // No selection, ever. As in, the user hasn't selected anything since\n // opening the document.\n anchorNode == null || focusNode == null) {\n return {\n selectionState: editorState.getSelection().set('hasFocus', false),\n needsRecovery: false\n };\n }\n\n return getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n\nmodule.exports = getDraftEditorSelection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n\nvar getUpdatedSelectionState = require(\"./getUpdatedSelectionState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\nfunction getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset) {\n var anchorIsTextNode = anchorNode.nodeType === Node.TEXT_NODE;\n var focusIsTextNode = focusNode.nodeType === Node.TEXT_NODE; // If the selection range lies only on text nodes, the task is simple.\n // Find the nearest offset-aware elements and use the\n // offset values supplied by the selection range.\n\n if (anchorIsTextNode && focusIsTextNode) {\n return {\n selectionState: getUpdatedSelectionState(editorState, nullthrows(findAncestorOffsetKey(anchorNode)), anchorOffset, nullthrows(findAncestorOffsetKey(focusNode)), focusOffset),\n needsRecovery: false\n };\n }\n\n var anchorPoint = null;\n var focusPoint = null;\n var needsRecovery = true; // An element is selected. Convert this selection range into leaf offset\n // keys and offset values for consumption at the component level. This\n // is common in Firefox, where select-all and triple click behavior leads\n // to entire elements being selected.\n //\n // Note that we use the `needsRecovery` parameter in the callback here. This\n // is because when certain elements are selected, the behavior for subsequent\n // cursor movement (e.g. via arrow keys) is uncertain and may not match\n // expectations at the component level. For example, if an entire <div> is\n // selected and the user presses the right arrow, Firefox keeps the selection\n // on the <div>. If we allow subsequent keypresses to insert characters\n // natively, they will be inserted into a browser-created text node to the\n // right of that <div>. This is obviously undesirable.\n //\n // With the `needsRecovery` flag, we inform the caller that it is responsible\n // for manually setting the selection state on the rendered document to\n // ensure proper selection state maintenance.\n\n if (anchorIsTextNode) {\n anchorPoint = {\n key: nullthrows(findAncestorOffsetKey(anchorNode)),\n offset: anchorOffset\n };\n focusPoint = getPointForNonTextNode(root, focusNode, focusOffset);\n } else if (focusIsTextNode) {\n focusPoint = {\n key: nullthrows(findAncestorOffsetKey(focusNode)),\n offset: focusOffset\n };\n anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n } else {\n anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n focusPoint = getPointForNonTextNode(root, focusNode, focusOffset); // If the selection is collapsed on an empty block, don't force recovery.\n // This way, on arrow key selection changes, the browser can move the\n // cursor from a non-zero offset on one block, through empty blocks,\n // to a matching non-zero offset on other text blocks.\n\n if (anchorNode === focusNode && anchorOffset === focusOffset) {\n needsRecovery = !!anchorNode.firstChild && anchorNode.firstChild.nodeName !== 'BR';\n }\n }\n\n return {\n selectionState: getUpdatedSelectionState(editorState, anchorPoint.key, anchorPoint.offset, focusPoint.key, focusPoint.offset),\n needsRecovery: needsRecovery\n };\n}\n/**\n * Identify the first leaf descendant for the given node.\n */\n\n\nfunction getFirstLeaf(node) {\n while (node.firstChild && ( // data-blocks has no offset\n isElement(node.firstChild) && node.firstChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.firstChild))) {\n node = node.firstChild;\n }\n\n return node;\n}\n/**\n * Identify the last leaf descendant for the given node.\n */\n\n\nfunction getLastLeaf(node) {\n while (node.lastChild && ( // data-blocks has no offset\n isElement(node.lastChild) && node.lastChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.lastChild))) {\n node = node.lastChild;\n }\n\n return node;\n}\n\nfunction getPointForNonTextNode(editorRoot, startNode, childOffset) {\n var node = startNode;\n var offsetKey = findAncestorOffsetKey(node);\n !(offsetKey != null || editorRoot && (editorRoot === node || editorRoot.firstChild === node)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown node in selection range.') : invariant(false) : void 0; // If the editorRoot is the selection, step downward into the content\n // wrapper.\n\n if (editorRoot === node) {\n node = node.firstChild;\n !isElement(node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents node.') : invariant(false) : void 0;\n var castedNode = node; // assignment only added for flow :/\n // otherwise it throws in line 200 saying that node can be null or undefined\n\n node = castedNode;\n !(node.getAttribute('data-contents') === 'true') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents structure.') : invariant(false) : void 0;\n\n if (childOffset > 0) {\n childOffset = node.childNodes.length;\n }\n } // If the child offset is zero and we have an offset key, we're done.\n // If there's no offset key because the entire editor is selected,\n // find the leftmost (\"first\") leaf in the tree and use that as the offset\n // key.\n\n\n if (childOffset === 0) {\n var key = null;\n\n if (offsetKey != null) {\n key = offsetKey;\n } else {\n var firstLeaf = getFirstLeaf(node);\n key = nullthrows(getSelectionOffsetKeyForNode(firstLeaf));\n }\n\n return {\n key: key,\n offset: 0\n };\n }\n\n var nodeBeforeCursor = node.childNodes[childOffset - 1];\n var leafKey = null;\n var textLength = null;\n\n if (!getSelectionOffsetKeyForNode(nodeBeforeCursor)) {\n // Our target node may be a leaf or a text node, in which case we're\n // already where we want to be and can just use the child's length as\n // our offset.\n leafKey = nullthrows(offsetKey);\n textLength = getTextContentLength(nodeBeforeCursor);\n } else {\n // Otherwise, we'll look at the child to the left of the cursor and find\n // the last leaf node in its subtree.\n var lastLeaf = getLastLeaf(nodeBeforeCursor);\n leafKey = nullthrows(getSelectionOffsetKeyForNode(lastLeaf));\n textLength = getTextContentLength(lastLeaf);\n }\n\n return {\n key: leafKey,\n offset: textLength\n };\n}\n/**\n * Return the length of a node's textContent, regarding single newline\n * characters as zero-length. This allows us to avoid problems with identifying\n * the correct selection offset for empty blocks in IE, in which we\n * render newlines instead of break tags.\n */\n\n\nfunction getTextContentLength(node) {\n var textContent = node.textContent;\n return textContent === '\\n' ? 0 : textContent.length;\n}\n\nmodule.exports = getDraftEditorSelectionWithNodes;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nfunction getUpdatedSelectionState(editorState, anchorKey, anchorOffset, focusKey, focusOffset) {\n var selection = nullthrows(editorState.getSelection());\n\n if (!anchorKey || !focusKey) {\n // If we cannot make sense of the updated selection state, stick to the current one.\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable-next-line */\n console.warn('Invalid selection state.', arguments, editorState.toJS());\n }\n\n return selection;\n }\n\n var anchorPath = DraftOffsetKey.decode(anchorKey);\n var anchorBlockKey = anchorPath.blockKey;\n var anchorLeafBlockTree = editorState.getBlockTree(anchorBlockKey);\n var anchorLeaf = anchorLeafBlockTree && anchorLeafBlockTree.getIn([anchorPath.decoratorKey, 'leaves', anchorPath.leafKey]);\n var focusPath = DraftOffsetKey.decode(focusKey);\n var focusBlockKey = focusPath.blockKey;\n var focusLeafBlockTree = editorState.getBlockTree(focusBlockKey);\n var focusLeaf = focusLeafBlockTree && focusLeafBlockTree.getIn([focusPath.decoratorKey, 'leaves', focusPath.leafKey]);\n\n if (!anchorLeaf || !focusLeaf) {\n // If we cannot make sense of the updated selection state, stick to the current one.\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable-next-line */\n console.warn('Invalid selection state.', arguments, editorState.toJS());\n }\n\n return selection;\n }\n\n var anchorLeafStart = anchorLeaf.get('start');\n var focusLeafStart = focusLeaf.get('start');\n var anchorBlockOffset = anchorLeaf ? anchorLeafStart + anchorOffset : null;\n var focusBlockOffset = focusLeaf ? focusLeafStart + focusOffset : null;\n var areEqual = selection.getAnchorKey() === anchorBlockKey && selection.getAnchorOffset() === anchorBlockOffset && selection.getFocusKey() === focusBlockKey && selection.getFocusOffset() === focusBlockOffset;\n\n if (areEqual) {\n return selection;\n }\n\n var isBackward = false;\n\n if (anchorBlockKey === focusBlockKey) {\n var anchorLeafEnd = anchorLeaf.get('end');\n var focusLeafEnd = focusLeaf.get('end');\n\n if (focusLeafStart === anchorLeafStart && focusLeafEnd === anchorLeafEnd) {\n isBackward = focusOffset < anchorOffset;\n } else {\n isBackward = focusLeafStart < anchorLeafStart;\n }\n } else {\n var startKey = editorState.getCurrentContent().getBlockMap().keySeq().skipUntil(function (v) {\n return v === anchorBlockKey || v === focusBlockKey;\n }).first();\n isBackward = startKey === focusBlockKey;\n }\n\n return selection.merge({\n anchorKey: anchorBlockKey,\n anchorOffset: anchorBlockOffset,\n focusKey: focusBlockKey,\n focusOffset: focusBlockOffset,\n isBackward: isBackward\n });\n}\n\nmodule.exports = getUpdatedSelectionState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Provides utilities for handling draftjs keys.\n *\n * @emails oncall+draft_js\n * \n * @format\n */\n'use strict';\n\nfunction notEmptyKey(key) {\n return key != null && key != '';\n}\n\nmodule.exports = {\n notEmptyKey: notEmptyKey\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorTextNode = require(\"./DraftEditorTextNode.react\");\n\nvar React = require(\"react\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar setDraftEditorSelection = require(\"./setDraftEditorSelection\").setDraftEditorSelection;\n\n/**\n * All leaf nodes in the editor are spans with single text nodes. Leaf\n * elements are styled based on the merging of an optional custom style map\n * and a default style map.\n *\n * `DraftEditorLeaf` also provides a wrapper for calling into the imperative\n * DOM Selection API. In this way, top-level components can declaratively\n * maintain the selection state.\n */\nvar DraftEditorLeaf = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorLeaf, _React$Component);\n\n function DraftEditorLeaf() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"leaf\", void 0);\n\n return _this;\n }\n\n var _proto = DraftEditorLeaf.prototype;\n\n _proto._setSelection = function _setSelection() {\n var selection = this.props.selection; // If selection state is irrelevant to the parent block, no-op.\n\n if (selection == null || !selection.getHasFocus()) {\n return;\n }\n\n var _this$props = this.props,\n block = _this$props.block,\n start = _this$props.start,\n text = _this$props.text;\n var blockKey = block.getKey();\n var end = start + text.length;\n\n if (!selection.hasEdgeWithin(blockKey, start, end)) {\n return;\n } // Determine the appropriate target node for selection. If the child\n // is not a text node, it is a <br /> spacer. In this case, use the\n // <span> itself as the selection target.\n\n\n var node = this.leaf;\n !node ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing node') : invariant(false) : void 0;\n var child = node.firstChild;\n !child ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing child') : invariant(false) : void 0;\n var targetNode;\n\n if (child.nodeType === Node.TEXT_NODE) {\n targetNode = child;\n } else if (isHTMLBRElement(child)) {\n targetNode = node;\n } else {\n targetNode = child.firstChild;\n !targetNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing targetNode') : invariant(false) : void 0;\n }\n\n setDraftEditorSelection(selection, targetNode, blockKey, start, end);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var leafNode = this.leaf;\n !leafNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing leafNode') : invariant(false) : void 0;\n var shouldUpdate = leafNode.textContent !== nextProps.text || nextProps.styleSet !== this.props.styleSet || nextProps.forceSelection;\n return shouldUpdate;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this._setSelection();\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._setSelection();\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var block = this.props.block;\n var text = this.props.text; // If the leaf is at the end of its block and ends in a soft newline, append\n // an extra line feed character. Browsers collapse trailing newline\n // characters, which leaves the cursor in the wrong place after a\n // shift+enter. The extra character repairs this.\n\n if (text.endsWith('\\n') && this.props.isLast) {\n text += '\\n';\n }\n\n var _this$props2 = this.props,\n customStyleMap = _this$props2.customStyleMap,\n customStyleFn = _this$props2.customStyleFn,\n offsetKey = _this$props2.offsetKey,\n styleSet = _this$props2.styleSet;\n var styleObj = styleSet.reduce(function (map, styleName) {\n var mergedStyles = {};\n var style = customStyleMap[styleName];\n\n if (style !== undefined && map.textDecoration !== style.textDecoration) {\n // .trim() is necessary for IE9/10/11 and Edge\n mergedStyles.textDecoration = [map.textDecoration, style.textDecoration].join(' ').trim();\n }\n\n return _assign(map, style, mergedStyles);\n }, {});\n\n if (customStyleFn) {\n var newStyles = customStyleFn(styleSet, block);\n styleObj = _assign(styleObj, newStyles);\n }\n\n return React.createElement(\"span\", {\n \"data-offset-key\": offsetKey,\n ref: function ref(_ref) {\n return _this2.leaf = _ref;\n },\n style: styleObj\n }, React.createElement(DraftEditorTextNode, null, text));\n };\n\n return DraftEditorLeaf;\n}(React.Component);\n\nmodule.exports = DraftEditorLeaf;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLBRElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return isElement(node) && node.nodeName === 'BR';\n}\n\nmodule.exports = isHTMLBRElement;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nmodule.exports = {\n initODS: function initODS() {},\n handleExtensionCausedError: function handleExtensionCausedError() {}\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc)\n/*?DOMElement*/\n{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n if (typeof doc === 'undefined') {\n return null;\n }\n\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getElementRect = require(\"./getElementRect\");\n/**\n * Gets an element's position in pixels relative to the viewport. The returned\n * object represents the position of the element's top left corner.\n *\n * @param {DOMElement} element\n * @return {object}\n */\n\n\nfunction getElementPosition(element) {\n var rect = getElementRect(element);\n return {\n x: rect.left,\n y: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n}\n\nmodule.exports = getElementPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks\n */\nfunction getViewportWidth() {\n var width;\n\n if (document.documentElement) {\n width = document.documentElement.clientWidth;\n }\n\n if (!width && document.body) {\n width = document.body.clientWidth;\n }\n\n return width || 0;\n}\n\nfunction getViewportHeight() {\n var height;\n\n if (document.documentElement) {\n height = document.documentElement.clientHeight;\n }\n\n if (!height && document.body) {\n height = document.body.clientHeight;\n }\n\n return height || 0;\n}\n/**\n * Gets the viewport dimensions including any scrollbars.\n */\n\n\nfunction getViewportDimensions() {\n return {\n width: window.innerWidth || getViewportWidth(),\n height: window.innerHeight || getViewportHeight()\n };\n}\n/**\n * Gets the viewport dimensions excluding any scrollbars.\n */\n\n\ngetViewportDimensions.withoutScrollbars = function () {\n return {\n width: getViewportWidth(),\n height: getViewportHeight()\n };\n};\n\nmodule.exports = getViewportDimensions;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorLeaf = require(\"./DraftEditorLeaf.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar UnicodeBidi = require(\"fbjs/lib/UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"fbjs/lib/UnicodeBidiDirection\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar getElementPosition = require(\"fbjs/lib/getElementPosition\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar getViewportDimensions = require(\"fbjs/lib/getViewportDimensions\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar SCROLL_BUFFER = 10;\n\n/**\n * Return whether a block overlaps with either edge of the `SelectionState`.\n */\nvar isBlockOnSelectionEdge = function isBlockOnSelectionEdge(selection, key) {\n return selection.getAnchorKey() === key || selection.getFocusKey() === key;\n};\n/**\n * The default block renderer for a `DraftEditor` component.\n *\n * A `DraftEditorBlock` is able to render a given `ContentBlock` to its\n * appropriate decorator and inline style components.\n */\n\n\nvar DraftEditorBlock = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorBlock, _React$Component);\n\n function DraftEditorBlock() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"_node\", void 0);\n\n return _this;\n }\n\n var _proto = DraftEditorBlock.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return this.props.block !== nextProps.block || this.props.tree !== nextProps.tree || this.props.direction !== nextProps.direction || isBlockOnSelectionEdge(nextProps.selection, nextProps.block.getKey()) && nextProps.forceSelection;\n }\n /**\n * When a block is mounted and overlaps the selection state, we need to make\n * sure that the cursor is visible to match native behavior. This may not\n * be the case if the user has pressed `RETURN` or pasted some content, since\n * programmatically creating these new blocks and setting the DOM selection\n * will miss out on the browser natively scrolling to that position.\n *\n * To replicate native behavior, if the block overlaps the selection state\n * on mount, force the scroll position. Check the scroll state of the scroll\n * parent, and adjust it to align the entire block to the bottom of the\n * scroll parent.\n */\n ;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.preventScroll) {\n return;\n }\n\n var selection = this.props.selection;\n var endKey = selection.getEndKey();\n\n if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n return;\n }\n\n var blockNode = this._node;\n\n if (blockNode == null) {\n return;\n }\n\n var scrollParent = Style.getScrollParent(blockNode);\n var scrollPosition = getScrollPosition(scrollParent);\n var scrollDelta;\n\n if (scrollParent === window) {\n var nodePosition = getElementPosition(blockNode);\n var nodeBottom = nodePosition.y + nodePosition.height;\n var viewportHeight = getViewportDimensions().height;\n scrollDelta = nodeBottom - viewportHeight;\n\n if (scrollDelta > 0) {\n window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n }\n } else {\n !isHTMLElement(blockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'blockNode is not an HTMLElement') : invariant(false) : void 0;\n var blockBottom = blockNode.offsetHeight + blockNode.offsetTop;\n var pOffset = scrollParent.offsetTop + scrollParent.offsetHeight;\n var scrollBottom = pOffset + scrollPosition.y;\n scrollDelta = blockBottom - scrollBottom;\n\n if (scrollDelta > 0) {\n Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n }\n }\n };\n\n _proto._renderChildren = function _renderChildren() {\n var _this2 = this;\n\n var block = this.props.block;\n var blockKey = block.getKey();\n var text = block.getText();\n var lastLeafSet = this.props.tree.size - 1;\n var hasSelection = isBlockOnSelectionEdge(this.props.selection, blockKey);\n return this.props.tree.map(function (leafSet, ii) {\n var leavesForLeafSet = leafSet.get('leaves'); // T44088704\n\n if (leavesForLeafSet.size === 0) {\n return null;\n }\n\n var lastLeaf = leavesForLeafSet.size - 1;\n var leaves = leavesForLeafSet.map(function (leaf, jj) {\n var offsetKey = DraftOffsetKey.encode(blockKey, ii, jj);\n var start = leaf.get('start');\n var end = leaf.get('end');\n return React.createElement(DraftEditorLeaf, {\n key: offsetKey,\n offsetKey: offsetKey,\n block: block,\n start: start,\n selection: hasSelection ? _this2.props.selection : null,\n forceSelection: _this2.props.forceSelection,\n text: text.slice(start, end),\n styleSet: block.getInlineStyleAt(start),\n customStyleMap: _this2.props.customStyleMap,\n customStyleFn: _this2.props.customStyleFn,\n isLast: ii === lastLeafSet && jj === lastLeaf\n });\n }).toArray();\n var decoratorKey = leafSet.get('decoratorKey');\n\n if (decoratorKey == null) {\n return leaves;\n }\n\n if (!_this2.props.decorator) {\n return leaves;\n }\n\n var decorator = nullthrows(_this2.props.decorator);\n var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n\n if (!DecoratorComponent) {\n return leaves;\n }\n\n var decoratorProps = decorator.getPropsForKey(decoratorKey);\n var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, ii, 0);\n var start = leavesForLeafSet.first().get('start');\n var end = leavesForLeafSet.last().get('end');\n var decoratedText = text.slice(start, end);\n var entityKey = block.getEntityAt(leafSet.get('start')); // Resetting dir to the same value on a child node makes Chrome/Firefox\n // confused on cursor movement. See http://jsfiddle.net/d157kLck/3/\n\n var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), _this2.props.direction);\n var commonProps = {\n contentState: _this2.props.contentState,\n decoratedText: decoratedText,\n dir: dir,\n start: start,\n end: end,\n blockKey: blockKey,\n entityKey: entityKey,\n offsetKey: decoratorOffsetKey\n };\n return React.createElement(DecoratorComponent, _extends({}, decoratorProps, commonProps, {\n key: decoratorOffsetKey\n }), leaves);\n }).toArray();\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n direction = _this$props.direction,\n offsetKey = _this$props.offsetKey;\n var className = cx({\n 'public/DraftStyleDefault/block': true,\n 'public/DraftStyleDefault/ltr': direction === 'LTR',\n 'public/DraftStyleDefault/rtl': direction === 'RTL'\n });\n return React.createElement(\"div\", {\n \"data-offset-key\": offsetKey,\n className: className,\n ref: function ref(_ref) {\n return _this3._node = _ref;\n }\n }, this._renderChildren());\n };\n\n return DraftEditorBlock;\n}(React.Component);\n\nmodule.exports = DraftEditorBlock;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar PhotosMimeType = require(\"./PhotosMimeType\");\n\nvar createArrayFromMixed = require(\"./createArrayFromMixed\");\n\nvar emptyFunction = require(\"./emptyFunction\");\n\nvar CR_LF_REGEX = new RegExp(\"\\r\\n\", 'g');\nvar LF_ONLY = \"\\n\";\nvar RICH_TEXT_TYPES = {\n 'text/rtf': 1,\n 'text/html': 1\n};\n/**\n * If DataTransferItem is a file then return the Blob of data.\n *\n * @param {object} item\n * @return {?blob}\n */\n\nfunction getFileFromDataTransfer(item) {\n if (item.kind == 'file') {\n return item.getAsFile();\n }\n}\n\nvar DataTransfer =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {object} data\n */\n function DataTransfer(data) {\n this.data = data; // Types could be DOMStringList or array\n\n this.types = data.types ? createArrayFromMixed(data.types) : [];\n }\n /**\n * Is this likely to be a rich text data transfer?\n *\n * @return {boolean}\n */\n\n\n var _proto = DataTransfer.prototype;\n\n _proto.isRichText = function isRichText() {\n // If HTML is available, treat this data as rich text. This way, we avoid\n // using a pasted image if it is packaged with HTML -- this may occur with\n // pastes from MS Word, for example. However this is only rich text if\n // there's accompanying text.\n if (this.getHTML() && this.getText()) {\n return true;\n } // When an image is copied from a preview window, you end up with two\n // DataTransferItems one of which is a file's metadata as text. Skip those.\n\n\n if (this.isImage()) {\n return false;\n }\n\n return this.types.some(function (type) {\n return RICH_TEXT_TYPES[type];\n });\n };\n /**\n * Get raw text.\n *\n * @return {?string}\n */\n\n\n _proto.getText = function getText() {\n var text;\n\n if (this.data.getData) {\n if (!this.types.length) {\n text = this.data.getData('Text');\n } else if (this.types.indexOf('text/plain') != -1) {\n text = this.data.getData('text/plain');\n }\n }\n\n return text ? text.replace(CR_LF_REGEX, LF_ONLY) : null;\n };\n /**\n * Get HTML paste data\n *\n * @return {?string}\n */\n\n\n _proto.getHTML = function getHTML() {\n if (this.data.getData) {\n if (!this.types.length) {\n return this.data.getData('Text');\n } else if (this.types.indexOf('text/html') != -1) {\n return this.data.getData('text/html');\n }\n }\n };\n /**\n * Is this a link data transfer?\n *\n * @return {boolean}\n */\n\n\n _proto.isLink = function isLink() {\n return this.types.some(function (type) {\n return type.indexOf('Url') != -1 || type.indexOf('text/uri-list') != -1 || type.indexOf('text/x-moz-url');\n });\n };\n /**\n * Get a link url.\n *\n * @return {?string}\n */\n\n\n _proto.getLink = function getLink() {\n if (this.data.getData) {\n if (this.types.indexOf('text/x-moz-url') != -1) {\n var url = this.data.getData('text/x-moz-url').split('\\n');\n return url[0];\n }\n\n return this.types.indexOf('text/uri-list') != -1 ? this.data.getData('text/uri-list') : this.data.getData('url');\n }\n\n return null;\n };\n /**\n * Is this an image data transfer?\n *\n * @return {boolean}\n */\n\n\n _proto.isImage = function isImage() {\n var isImage = this.types.some(function (type) {\n // Firefox will have a type of application/x-moz-file for images during\n // dragging\n return type.indexOf('application/x-moz-file') != -1;\n });\n\n if (isImage) {\n return true;\n }\n\n var items = this.getFiles();\n\n for (var i = 0; i < items.length; i++) {\n var type = items[i].type;\n\n if (!PhotosMimeType.isImage(type)) {\n return false;\n }\n }\n\n return true;\n };\n\n _proto.getCount = function getCount() {\n if (this.data.hasOwnProperty('items')) {\n return this.data.items.length;\n } else if (this.data.hasOwnProperty('mozItemCount')) {\n return this.data.mozItemCount;\n } else if (this.data.files) {\n return this.data.files.length;\n }\n\n return null;\n };\n /**\n * Get files.\n *\n * @return {array}\n */\n\n\n _proto.getFiles = function getFiles() {\n if (this.data.items) {\n // createArrayFromMixed doesn't properly handle DataTransferItemLists.\n return Array.prototype.slice.call(this.data.items).map(getFileFromDataTransfer).filter(emptyFunction.thatReturnsArgument);\n } else if (this.data.files) {\n return Array.prototype.slice.call(this.data.files);\n } else {\n return [];\n }\n };\n /**\n * Are there any files to fetch?\n *\n * @return {boolean}\n */\n\n\n _proto.hasFiles = function hasFiles() {\n return this.getFiles().length > 0;\n };\n\n return DataTransfer;\n}();\n\nmodule.exports = DataTransfer;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar TEXT_CLIPPING_REGEX = /\\.textClipping$/;\nvar TEXT_TYPES = {\n 'text/plain': true,\n 'text/html': true,\n 'text/rtf': true\n}; // Somewhat arbitrary upper bound on text size. Let's not lock up the browser.\n\nvar TEXT_SIZE_UPPER_BOUND = 5000;\n/**\n * Extract the text content from a file list.\n */\n\nfunction getTextContentFromFiles(files, callback) {\n var readCount = 0;\n var results = [];\n files.forEach(function (\n /*blob*/\n file) {\n readFile(file, function (\n /*string*/\n text) {\n readCount++;\n text && results.push(text.slice(0, TEXT_SIZE_UPPER_BOUND));\n\n if (readCount == files.length) {\n callback(results.join('\\r'));\n }\n });\n });\n}\n/**\n * todo isaac: Do work to turn html/rtf into a content fragment.\n */\n\n\nfunction readFile(file, callback) {\n if (!global.FileReader || file.type && !(file.type in TEXT_TYPES)) {\n callback('');\n return;\n }\n\n if (file.type === '') {\n var _contents = ''; // Special-case text clippings, which have an empty type but include\n // `.textClipping` in the file name. `readAsText` results in an empty\n // string for text clippings, so we force the file name to serve\n // as the text value for the file.\n\n if (TEXT_CLIPPING_REGEX.test(file.name)) {\n _contents = file.name.replace(TEXT_CLIPPING_REGEX, '');\n }\n\n callback(_contents);\n return;\n }\n\n var reader = new FileReader();\n\n reader.onload = function () {\n var result = reader.result;\n !(typeof result === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'We should be calling \"FileReader.readAsText\" which returns a string') : invariant(false) : void 0;\n callback(result);\n };\n\n reader.onerror = function () {\n callback('');\n };\n\n reader.readAsText(file);\n}\n\nmodule.exports = getTextContentFromFiles;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nfunction getFragmentFromSelection(editorState) {\n var selectionState = editorState.getSelection();\n\n if (selectionState.isCollapsed()) {\n return null;\n }\n\n return getContentStateFragment(editorState.getCurrentContent(), selectionState);\n}\n\nmodule.exports = getFragmentFromSelection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Remove the selected range. If the cursor is collapsed, remove the preceding\n * character. This operation is Unicode-aware, so removing a single character\n * will remove a surrogate pair properly as well.\n */\n\n\nfunction keyCommandPlainBackspace(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var content = strategyState.getCurrentContent();\n var key = selection.getAnchorKey();\n var offset = selection.getAnchorOffset();\n var charBehind = content.getBlockForKey(key).getText()[offset - 1];\n return moveSelectionBackward(strategyState, charBehind ? UnicodeUtils.getUTF16Length(charBehind, 0) : 1);\n }, 'backward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n var selection = editorState.getSelection();\n return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'backspace-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainBackspace;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isChrome = UserAgent.isBrowser('Chrome'); // In Chrome, the client rects will include the entire bounds of all nodes that\n// begin (have a start tag) within the selection, even if the selection does\n// not overlap the entire node. To resolve this, we split the range at each\n// start tag and join the client rects together.\n// https://code.google.com/p/chromium/issues/detail?id=324437\n\n/* eslint-disable consistent-return */\n\nfunction getRangeClientRectsChrome(range) {\n var tempRange = range.cloneRange();\n var clientRects = [];\n\n for (var ancestor = range.endContainer; ancestor != null; ancestor = ancestor.parentNode) {\n // If we've climbed up to the common ancestor, we can now use the\n // original start point and stop climbing the tree.\n var atCommonAncestor = ancestor === range.commonAncestorContainer;\n\n if (atCommonAncestor) {\n tempRange.setStart(range.startContainer, range.startOffset);\n } else {\n tempRange.setStart(tempRange.endContainer, 0);\n }\n\n var rects = Array.from(tempRange.getClientRects());\n clientRects.push(rects);\n\n if (atCommonAncestor) {\n var _ref;\n\n clientRects.reverse();\n return (_ref = []).concat.apply(_ref, clientRects);\n }\n\n tempRange.setEndBefore(ancestor);\n }\n\n !false ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Found an unexpected detached subtree when getting range client rects.') : invariant(false) : void 0;\n}\n/* eslint-enable consistent-return */\n\n/**\n * Like range.getClientRects() but normalizes for browser bugs.\n */\n\n\nvar getRangeClientRects = isChrome ? getRangeClientRectsChrome : function (range) {\n return Array.from(range.getClientRects());\n};\nmodule.exports = getRangeClientRects;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar TokenizeUtil = require(\"fbjs/lib/TokenizeUtil\");\n\nvar punctuation = TokenizeUtil.getPunctuation(); // The apostrophe and curly single quotes behave in a curious way: when\n// surrounded on both sides by word characters, they behave as word chars; when\n// either neighbor is punctuation or an end of the string, they behave as\n// punctuation.\n\nvar CHAMELEON_CHARS = \"['\\u2018\\u2019]\"; // Remove the underscore, which should count as part of the removable word. The\n// \"chameleon chars\" also count as punctuation in this regex.\n\nvar WHITESPACE_AND_PUNCTUATION = '\\\\s|(?![_])' + punctuation;\nvar DELETE_STRING = '^' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)';\nvar DELETE_REGEX = new RegExp(DELETE_STRING);\nvar BACKSPACE_STRING = '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '$';\nvar BACKSPACE_REGEX = new RegExp(BACKSPACE_STRING);\n\nfunction getRemovableWord(text, isBackward) {\n var matches = isBackward ? BACKSPACE_REGEX.exec(text) : DELETE_REGEX.exec(text);\n return matches ? matches[0] : text;\n}\n\nvar DraftRemovableWord = {\n getBackward: function getBackward(text) {\n return getRemovableWord(text, true);\n },\n getForward: function getForward(text) {\n return getRemovableWord(text, false);\n }\n};\nmodule.exports = DraftRemovableWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` forward within\n * the selected block. If the selection will go beyond the end of the block,\n * move focus to the start of the next block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionForward(editorState, maxDistance) {\n var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionForward should only be called with a collapsed SelectionState') : void 0;\n var key = selection.getStartKey();\n var offset = selection.getStartOffset();\n var content = editorState.getCurrentContent();\n var focusKey = key;\n var focusOffset;\n var block = content.getBlockForKey(key);\n\n if (maxDistance > block.getText().length - offset) {\n focusKey = content.getKeyAfter(key);\n focusOffset = 0;\n } else {\n focusOffset = offset + maxDistance;\n }\n\n return selection.merge({\n focusKey: focusKey,\n focusOffset: focusOffset\n });\n}\n\nmodule.exports = moveSelectionForward;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _knownListItemDepthCl;\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar URI = require(\"fbjs/lib/URI\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getSafeBodyFromHTML = require(\"./getSafeBodyFromHTML\");\n\nvar gkx = require(\"./gkx\");\n\nvar _require = require(\"immutable\"),\n List = _require.List,\n Map = _require.Map,\n OrderedSet = _require.OrderedSet;\n\nvar isHTMLAnchorElement = require(\"./isHTMLAnchorElement\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar isHTMLImageElement = require(\"./isHTMLImageElement\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar NBSP = ' ';\nvar SPACE = ' '; // used for replacing characters in HTML\n\nvar REGEX_CR = new RegExp('\\r', 'g');\nvar REGEX_LF = new RegExp('\\n', 'g');\nvar REGEX_LEADING_LF = new RegExp('^\\n', 'g');\nvar REGEX_NBSP = new RegExp(NBSP, 'g');\nvar REGEX_CARRIAGE = new RegExp(' ?', 'g');\nvar REGEX_ZWS = new RegExp('​?', 'g'); // https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n\nvar boldValues = ['bold', 'bolder', '500', '600', '700', '800', '900'];\nvar notBoldValues = ['light', 'lighter', 'normal', '100', '200', '300', '400'];\nvar anchorAttr = ['className', 'href', 'rel', 'target', 'title'];\nvar imgAttr = ['alt', 'className', 'height', 'src', 'width'];\nvar knownListItemDepthClasses = (_knownListItemDepthCl = {}, _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth0'), 0), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth1'), 1), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth2'), 2), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth3'), 3), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth4'), 4), _knownListItemDepthCl);\nvar HTMLTagToRawInlineStyleMap = Map({\n b: 'BOLD',\n code: 'CODE',\n del: 'STRIKETHROUGH',\n em: 'ITALIC',\n i: 'ITALIC',\n s: 'STRIKETHROUGH',\n strike: 'STRIKETHROUGH',\n strong: 'BOLD',\n u: 'UNDERLINE',\n mark: 'HIGHLIGHT'\n});\n\n/**\n * Build a mapping from HTML tags to draftjs block types\n * out of a BlockRenderMap.\n *\n * The BlockTypeMap for the default BlockRenderMap looks like this:\n * Map({\n * h1: 'header-one',\n * h2: 'header-two',\n * h3: 'header-three',\n * h4: 'header-four',\n * h5: 'header-five',\n * h6: 'header-six',\n * blockquote: 'blockquote',\n * figure: 'atomic',\n * pre: ['code-block'],\n * div: 'unstyled',\n * p: 'unstyled',\n * li: ['ordered-list-item', 'unordered-list-item'],\n * })\n */\nvar buildBlockTypeMap = function buildBlockTypeMap(blockRenderMap) {\n var blockTypeMap = {};\n blockRenderMap.mapKeys(function (blockType, desc) {\n var elements = [desc.element];\n\n if (desc.aliasedElements !== undefined) {\n elements.push.apply(elements, desc.aliasedElements);\n }\n\n elements.forEach(function (element) {\n if (blockTypeMap[element] === undefined) {\n blockTypeMap[element] = blockType;\n } else if (typeof blockTypeMap[element] === 'string') {\n blockTypeMap[element] = [blockTypeMap[element], blockType];\n } else {\n blockTypeMap[element].push(blockType);\n }\n });\n });\n return Map(blockTypeMap);\n};\n\nvar detectInlineStyle = function detectInlineStyle(node) {\n if (isHTMLElement(node)) {\n var element = node; // Currently only used to detect preformatted inline code\n\n if (element.style.fontFamily.includes('monospace')) {\n return 'CODE';\n }\n }\n\n return null;\n};\n/**\n * If we're pasting from one DraftEditor to another we can check to see if\n * existing list item depth classes are being used and preserve this style\n */\n\n\nvar getListItemDepth = function getListItemDepth(node) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n Object.keys(knownListItemDepthClasses).some(function (depthClass) {\n if (node.classList.contains(depthClass)) {\n depth = knownListItemDepthClasses[depthClass];\n }\n });\n return depth;\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible link.\n */\n\n\nvar isValidAnchor = function isValidAnchor(node) {\n if (!isHTMLAnchorElement(node)) {\n return false;\n }\n\n var anchorNode = node;\n\n if (!anchorNode.href || anchorNode.protocol !== 'http:' && anchorNode.protocol !== 'https:' && anchorNode.protocol !== 'mailto:' && anchorNode.protocol !== 'tel:') {\n return false;\n }\n\n try {\n // Just checking whether we can actually create a URI\n var _ = new URI(anchorNode.href);\n\n return true; // We need our catch statements to have arguments, else\n // UglifyJS (which we use for our OSS builds) will crash.\n // eslint-disable-next-line fb-www/no-unused-catch-bindings\n } catch (_) {\n return false;\n }\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible image.\n */\n\n\nvar isValidImage = function isValidImage(node) {\n if (!isHTMLImageElement(node)) {\n return false;\n }\n\n var imageNode = node;\n return !!(imageNode.attributes.getNamedItem('src') && imageNode.attributes.getNamedItem('src').value);\n};\n/**\n * Try to guess the inline style of an HTML element based on its css\n * styles (font-weight, font-style and text-decoration).\n */\n\n\nvar styleFromNodeAttributes = function styleFromNodeAttributes(node, style) {\n if (!isHTMLElement(node)) {\n return style;\n }\n\n var htmlElement = node;\n var fontWeight = htmlElement.style.fontWeight;\n var fontStyle = htmlElement.style.fontStyle;\n var textDecoration = htmlElement.style.textDecoration;\n return style.withMutations(function (style) {\n if (boldValues.indexOf(fontWeight) >= 0) {\n style.add('BOLD');\n } else if (notBoldValues.indexOf(fontWeight) >= 0) {\n style.remove('BOLD');\n }\n\n if (fontStyle === 'italic') {\n style.add('ITALIC');\n } else if (fontStyle === 'normal') {\n style.remove('ITALIC');\n }\n\n if (textDecoration === 'underline') {\n style.add('UNDERLINE');\n }\n\n if (textDecoration === 'line-through') {\n style.add('STRIKETHROUGH');\n }\n\n if (textDecoration === 'none') {\n style.remove('UNDERLINE');\n style.remove('STRIKETHROUGH');\n }\n });\n};\n/**\n * Determine if a nodeName is a list type, 'ul' or 'ol'\n */\n\n\nvar isListNode = function isListNode(nodeName) {\n return nodeName === 'ul' || nodeName === 'ol';\n};\n/**\n * ContentBlockConfig is a mutable data structure that holds all\n * the information required to build a ContentBlock and an array of\n * all the child nodes (childConfigs).\n * It is being used a temporary data structure by the\n * ContentBlocksBuilder class.\n */\n\n\n/**\n * ContentBlocksBuilder builds a list of ContentBlocks and an Entity Map\n * out of one (or several) HTMLElement(s).\n *\n * The algorithm has two passes: first it builds a tree of ContentBlockConfigs\n * by walking through the HTML nodes and their children, then it walks the\n * ContentBlockConfigs tree to compute parents/siblings and create\n * the actual ContentBlocks.\n *\n * Typical usage is:\n * new ContentBlocksBuilder()\n * .addDOMNode(someHTMLNode)\n * .addDOMNode(someOtherHTMLNode)\n * .getContentBlocks();\n *\n */\nvar ContentBlocksBuilder = /*#__PURE__*/function () {\n // Most of the method in the class depend on the state of the content builder\n // (i.e. currentBlockType, currentDepth, currentEntity etc.). Though it may\n // be confusing at first, it made the code simpler than the alternative which\n // is to pass those values around in every call.\n // The following attributes are used to accumulate text and styles\n // as we are walking the HTML node tree.\n // Describes the future ContentState as a tree of content blocks\n // The content blocks generated from the blockConfigs\n // Entity map use to store links and images found in the HTML nodes\n // Map HTML tags to draftjs block types and disambiguation function\n function ContentBlocksBuilder(blockTypeMap, disambiguate) {\n _defineProperty(this, \"characterList\", List());\n\n _defineProperty(this, \"currentBlockType\", 'unstyled');\n\n _defineProperty(this, \"currentDepth\", 0);\n\n _defineProperty(this, \"currentEntity\", null);\n\n _defineProperty(this, \"currentText\", '');\n\n _defineProperty(this, \"wrapper\", null);\n\n _defineProperty(this, \"blockConfigs\", []);\n\n _defineProperty(this, \"contentBlocks\", []);\n\n _defineProperty(this, \"entityMap\", DraftEntity);\n\n _defineProperty(this, \"blockTypeMap\", void 0);\n\n _defineProperty(this, \"disambiguate\", void 0);\n\n this.clear();\n this.blockTypeMap = blockTypeMap;\n this.disambiguate = disambiguate;\n }\n /**\n * Clear the internal state of the ContentBlocksBuilder\n */\n\n\n var _proto = ContentBlocksBuilder.prototype;\n\n _proto.clear = function clear() {\n this.characterList = List();\n this.blockConfigs = [];\n this.currentBlockType = 'unstyled';\n this.currentDepth = 0;\n this.currentEntity = null;\n this.currentText = '';\n this.entityMap = DraftEntity;\n this.wrapper = null;\n this.contentBlocks = [];\n }\n /**\n * Add an HTMLElement to the ContentBlocksBuilder\n */\n ;\n\n _proto.addDOMNode = function addDOMNode(node) {\n var _this$blockConfigs;\n\n this.contentBlocks = [];\n this.currentDepth = 0; // Converts the HTML node to block config\n\n (_this$blockConfigs = this.blockConfigs).push.apply(_this$blockConfigs, this._toBlockConfigs([node], OrderedSet())); // There might be some left over text in the builder's\n // internal state, if so make a ContentBlock out of it.\n\n\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n this.blockConfigs.push(this._makeBlockConfig());\n } // for chaining\n\n\n return this;\n }\n /**\n * Return the ContentBlocks and the EntityMap that corresponds\n * to the previously added HTML nodes.\n */\n ;\n\n _proto.getContentBlocks = function getContentBlocks() {\n if (this.contentBlocks.length === 0) {\n if (experimentalTreeDataSupport) {\n this._toContentBlocks(this.blockConfigs);\n } else {\n this._toFlatContentBlocks(this.blockConfigs);\n }\n }\n\n return {\n contentBlocks: this.contentBlocks,\n entityMap: this.entityMap\n };\n } // ***********************************WARNING******************************\n // The methods below this line are private - don't call them directly.\n\n /**\n * Generate a new ContentBlockConfig out of the current internal state\n * of the builder, then clears the internal state.\n */\n ;\n\n _proto._makeBlockConfig = function _makeBlockConfig() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var key = config.key || generateRandomKey();\n\n var block = _objectSpread({\n key: key,\n type: this.currentBlockType,\n text: this.currentText,\n characterList: this.characterList,\n depth: this.currentDepth,\n parent: null,\n children: List(),\n prevSibling: null,\n nextSibling: null,\n childConfigs: []\n }, config);\n\n this.characterList = List();\n this.currentBlockType = 'unstyled';\n this.currentText = '';\n return block;\n }\n /**\n * Converts an array of HTML elements to a multi-root tree of content\n * block configs. Some text content may be left in the builders internal\n * state to enable chaining sucessive calls.\n */\n ;\n\n _proto._toBlockConfigs = function _toBlockConfigs(nodes, style) {\n var blockConfigs = [];\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var nodeName = node.nodeName.toLowerCase();\n\n if (nodeName === 'body' || isListNode(nodeName)) {\n // body, ol and ul are 'block' type nodes so create a block config\n // with the text accumulated so far (if any)\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n blockConfigs.push(this._makeBlockConfig());\n } // body, ol and ul nodes are ignored, but their children are inlined in\n // the parent block config.\n\n\n var wasCurrentDepth = this.currentDepth;\n var wasWrapper = this.wrapper;\n\n if (isListNode(nodeName)) {\n this.wrapper = nodeName;\n\n if (isListNode(wasWrapper)) {\n this.currentDepth++;\n }\n }\n\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n this.currentDepth = wasCurrentDepth;\n this.wrapper = wasWrapper;\n continue;\n }\n\n var blockType = this.blockTypeMap.get(nodeName);\n\n if (blockType !== undefined) {\n // 'block' type node means we need to create a block config\n // with the text accumulated so far (if any)\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n blockConfigs.push(this._makeBlockConfig());\n }\n\n var _wasCurrentDepth = this.currentDepth;\n var _wasWrapper = this.wrapper;\n this.wrapper = nodeName === 'pre' ? 'pre' : this.wrapper;\n\n if (typeof blockType !== 'string') {\n blockType = this.disambiguate(nodeName, this.wrapper) || blockType[0] || 'unstyled';\n }\n\n if (!experimentalTreeDataSupport && isHTMLElement(node) && (blockType === 'unordered-list-item' || blockType === 'ordered-list-item')) {\n var htmlElement = node;\n this.currentDepth = getListItemDepth(htmlElement, this.currentDepth);\n }\n\n var key = generateRandomKey();\n\n var childConfigs = this._toBlockConfigs(Array.from(node.childNodes), style);\n\n this._trimCurrentText();\n\n blockConfigs.push(this._makeBlockConfig({\n key: key,\n childConfigs: childConfigs,\n type: blockType\n }));\n this.currentDepth = _wasCurrentDepth;\n this.wrapper = _wasWrapper;\n continue;\n }\n\n if (nodeName === '#text') {\n this._addTextNode(node, style);\n\n continue;\n }\n\n if (nodeName === 'br') {\n this._addBreakNode(node, style);\n\n continue;\n }\n\n if (isValidImage(node)) {\n this._addImgNode(node, style);\n\n continue;\n }\n\n if (isValidAnchor(node)) {\n this._addAnchorNode(node, blockConfigs, style);\n\n continue;\n }\n\n var newStyle = style;\n\n if (HTMLTagToRawInlineStyleMap.has(nodeName)) {\n newStyle = newStyle.add(HTMLTagToRawInlineStyleMap.get(nodeName));\n }\n\n newStyle = styleFromNodeAttributes(node, newStyle);\n var inlineStyle = detectInlineStyle(node);\n\n if (inlineStyle != null) {\n newStyle = newStyle.add(inlineStyle);\n }\n\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), newStyle));\n }\n\n return blockConfigs;\n }\n /**\n * Append a string of text to the internal buffer.\n */\n ;\n\n _proto._appendText = function _appendText(text, style) {\n var _this$characterList;\n\n this.currentText += text;\n var characterMetadata = CharacterMetadata.create({\n style: style,\n entity: this.currentEntity\n });\n this.characterList = (_this$characterList = this.characterList).push.apply(_this$characterList, Array(text.length).fill(characterMetadata));\n }\n /**\n * Trim the text in the internal buffer.\n */\n ;\n\n _proto._trimCurrentText = function _trimCurrentText() {\n var l = this.currentText.length;\n var begin = l - this.currentText.trimLeft().length;\n var end = this.currentText.trimRight().length; // We should not trim whitespaces for which an entity is defined.\n\n var entity = this.characterList.findEntry(function (characterMetadata) {\n return characterMetadata.getEntity() !== null;\n });\n begin = entity !== undefined ? Math.min(begin, entity[0]) : begin;\n entity = this.characterList.reverse().findEntry(function (characterMetadata) {\n return characterMetadata.getEntity() !== null;\n });\n end = entity !== undefined ? Math.max(end, l - entity[0]) : end;\n\n if (begin > end) {\n this.currentText = '';\n this.characterList = List();\n } else {\n this.currentText = this.currentText.slice(begin, end);\n this.characterList = this.characterList.slice(begin, end);\n }\n }\n /**\n * Add the content of an HTML text node to the internal state\n */\n ;\n\n _proto._addTextNode = function _addTextNode(node, style) {\n var text = node.textContent;\n var trimmedText = text.trim(); // If we are not in a pre block and the trimmed content is empty,\n // normalize to a single space.\n\n if (trimmedText === '' && this.wrapper !== 'pre') {\n text = ' ';\n }\n\n if (this.wrapper !== 'pre') {\n // Trim leading line feed, which is invisible in HTML\n text = text.replace(REGEX_LEADING_LF, ''); // Can't use empty string because MSWord\n\n text = text.replace(REGEX_LF, SPACE);\n }\n\n this._appendText(text, style);\n };\n\n _proto._addBreakNode = function _addBreakNode(node, style) {\n if (!isHTMLBRElement(node)) {\n return;\n }\n\n this._appendText('\\n', style);\n }\n /**\n * Add the content of an HTML img node to the internal state\n */\n ;\n\n _proto._addImgNode = function _addImgNode(node, style) {\n if (!isHTMLImageElement(node)) {\n return;\n }\n\n var image = node;\n var entityConfig = {};\n imgAttr.forEach(function (attr) {\n var imageAttribute = image.getAttribute(attr);\n\n if (imageAttribute) {\n entityConfig[attr] = imageAttribute;\n }\n }); // TODO: T15530363 update this when we remove DraftEntity entirely\n\n this.currentEntity = this.entityMap.__create('IMAGE', 'IMMUTABLE', entityConfig); // The child text node cannot just have a space or return as content (since\n // we strip those out), unless the image is for presentation only.\n // See https://github.com/facebook/draft-js/issues/231 for some context.\n\n if (gkx('draftjs_fix_paste_for_img')) {\n if (image.getAttribute('role') !== 'presentation') {\n this._appendText(\"\\uD83D\\uDCF7\", style);\n }\n } else {\n this._appendText(\"\\uD83D\\uDCF7\", style);\n }\n\n this.currentEntity = null;\n }\n /**\n * Add the content of an HTML 'a' node to the internal state. Child nodes\n * (if any) are converted to Block Configs and appended to the provided\n * blockConfig array.\n */\n ;\n\n _proto._addAnchorNode = function _addAnchorNode(node, blockConfigs, style) {\n // The check has already been made by isValidAnchor but\n // we have to do it again to keep flow happy.\n if (!isHTMLAnchorElement(node)) {\n return;\n }\n\n var anchor = node;\n var entityConfig = {};\n anchorAttr.forEach(function (attr) {\n var anchorAttribute = anchor.getAttribute(attr);\n\n if (anchorAttribute) {\n entityConfig[attr] = anchorAttribute;\n }\n });\n entityConfig.url = new URI(anchor.href).toString(); // TODO: T15530363 update this when we remove DraftEntity completely\n\n this.currentEntity = this.entityMap.__create('LINK', 'MUTABLE', entityConfig || {});\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n this.currentEntity = null;\n }\n /**\n * Walk the BlockConfig tree, compute parent/children/siblings,\n * and generate the corresponding ContentBlockNode\n */\n ;\n\n _proto._toContentBlocks = function _toContentBlocks(blockConfigs) {\n var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var l = blockConfigs.length - 1;\n\n for (var i = 0; i <= l; i++) {\n var config = blockConfigs[i];\n config.parent = parent;\n config.prevSibling = i > 0 ? blockConfigs[i - 1].key : null;\n config.nextSibling = i < l ? blockConfigs[i + 1].key : null;\n config.children = List(config.childConfigs.map(function (child) {\n return child.key;\n }));\n this.contentBlocks.push(new ContentBlockNode(_objectSpread({}, config)));\n\n this._toContentBlocks(config.childConfigs, config.key);\n }\n }\n /**\n * Remove 'useless' container nodes from the block config hierarchy, by\n * replacing them with their children.\n */\n ;\n\n _proto._hoistContainersInBlockConfigs = function _hoistContainersInBlockConfigs(blockConfigs) {\n var _this = this;\n\n var hoisted = List(blockConfigs).flatMap(function (blockConfig) {\n // Don't mess with useful blocks\n if (blockConfig.type !== 'unstyled' || blockConfig.text !== '') {\n return [blockConfig];\n }\n\n return _this._hoistContainersInBlockConfigs(blockConfig.childConfigs);\n });\n return hoisted;\n } // ***********************************************************************\n // The two methods below are used for backward compatibility when\n // experimentalTreeDataSupport is disabled.\n\n /**\n * Same as _toContentBlocks but replaces nested blocks by their\n * text content.\n */\n ;\n\n _proto._toFlatContentBlocks = function _toFlatContentBlocks(blockConfigs) {\n var _this2 = this;\n\n var cleanConfigs = this._hoistContainersInBlockConfigs(blockConfigs);\n\n cleanConfigs.forEach(function (config) {\n var _this2$_extractTextFr = _this2._extractTextFromBlockConfigs(config.childConfigs),\n text = _this2$_extractTextFr.text,\n characterList = _this2$_extractTextFr.characterList;\n\n _this2.contentBlocks.push(new ContentBlock(_objectSpread({}, config, {\n text: config.text + text,\n characterList: config.characterList.concat(characterList)\n })));\n });\n }\n /**\n * Extract the text and the associated inline styles form an\n * array of content block configs.\n */\n ;\n\n _proto._extractTextFromBlockConfigs = function _extractTextFromBlockConfigs(blockConfigs) {\n var l = blockConfigs.length - 1;\n var text = '';\n var characterList = List();\n\n for (var i = 0; i <= l; i++) {\n var config = blockConfigs[i];\n text += config.text;\n characterList = characterList.concat(config.characterList);\n\n if (text !== '' && config.type !== 'unstyled') {\n text += '\\n';\n characterList = characterList.push(characterList.last());\n }\n\n var children = this._extractTextFromBlockConfigs(config.childConfigs);\n\n text += children.text;\n characterList = characterList.concat(children.characterList);\n }\n\n return {\n text: text,\n characterList: characterList\n };\n };\n\n return ContentBlocksBuilder;\n}();\n/**\n * Converts an HTML string to an array of ContentBlocks and an EntityMap\n * suitable to initialize the internal state of a Draftjs component.\n */\n\n\nvar convertFromHTMLToContentBlocks = function convertFromHTMLToContentBlocks(html) {\n var DOMBuilder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getSafeBodyFromHTML;\n var blockRenderMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DefaultDraftBlockRenderMap;\n // Be ABSOLUTELY SURE that the dom builder you pass here won't execute\n // arbitrary code in whatever environment you're running this in. For an\n // example of how we try to do this in-browser, see getSafeBodyFromHTML.\n // Remove funky characters from the HTML string\n html = html.trim().replace(REGEX_CR, '').replace(REGEX_NBSP, SPACE).replace(REGEX_CARRIAGE, '').replace(REGEX_ZWS, ''); // Build a DOM tree out of the HTML string\n\n var safeBody = DOMBuilder(html);\n\n if (!safeBody) {\n return null;\n } // Build a BlockTypeMap out of the BlockRenderMap\n\n\n var blockTypeMap = buildBlockTypeMap(blockRenderMap); // Select the proper block type for the cases where the blockRenderMap\n // uses multiple block types for the same html tag.\n\n var disambiguate = function disambiguate(tag, wrapper) {\n if (tag === 'li') {\n return wrapper === 'ol' ? 'ordered-list-item' : 'unordered-list-item';\n }\n\n return null;\n };\n\n return new ContentBlocksBuilder(blockTypeMap, disambiguate).addDOMNode(safeBody).getContentBlocks();\n};\n\nmodule.exports = convertFromHTMLToContentBlocks;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isOldIE = UserAgent.isBrowser('IE <= 9'); // Provides a dom node that will not execute scripts\n// https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument\n// https://developer.mozilla.org/en-US/Add-ons/Code_snippets/HTML_to_DOM\n\nfunction getSafeBodyFromHTML(html) {\n var doc;\n var root = null; // Provides a safe context\n\n if (!isOldIE && document.implementation && document.implementation.createHTMLDocument) {\n doc = document.implementation.createHTMLDocument('foo');\n !doc.documentElement ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing doc.documentElement') : invariant(false) : void 0;\n doc.documentElement.innerHTML = html;\n root = doc.getElementsByTagName('body')[0];\n }\n\n return root;\n}\n\nmodule.exports = getSafeBodyFromHTML;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar adjustBlockDepthForContentState = require(\"./adjustBlockDepthForContentState\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar RichTextEditorUtil = {\n currentBlockContainsLink: function currentBlockContainsLink(editorState) {\n var selection = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n var entityMap = contentState.getEntityMap();\n return contentState.getBlockForKey(selection.getAnchorKey()).getCharacterList().slice(selection.getStartOffset(), selection.getEndOffset()).some(function (v) {\n var entity = v.getEntity();\n return !!entity && entityMap.__get(entity).getType() === 'LINK';\n });\n },\n getCurrentBlockType: function getCurrentBlockType(editorState) {\n var selection = editorState.getSelection();\n return editorState.getCurrentContent().getBlockForKey(selection.getStartKey()).getType();\n },\n getDataObjectForLinkURL: function getDataObjectForLinkURL(uri) {\n return {\n url: uri.toString()\n };\n },\n handleKeyCommand: function handleKeyCommand(editorState, command, eventTimeStamp) {\n switch (command) {\n case 'bold':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'BOLD');\n\n case 'italic':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'ITALIC');\n\n case 'underline':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'UNDERLINE');\n\n case 'code':\n return RichTextEditorUtil.toggleCode(editorState);\n\n case 'backspace':\n case 'backspace-word':\n case 'backspace-to-start-of-line':\n return RichTextEditorUtil.onBackspace(editorState);\n\n case 'delete':\n case 'delete-word':\n case 'delete-to-end-of-block':\n return RichTextEditorUtil.onDelete(editorState);\n\n default:\n // they may have custom editor commands; ignore those\n return null;\n }\n },\n insertSoftNewline: function insertSoftNewline(editorState) {\n var contentState = DraftModifier.insertText(editorState.getCurrentContent(), editorState.getSelection(), '\\n', editorState.getCurrentInlineStyle(), null);\n var newEditorState = EditorState.push(editorState, contentState, 'insert-characters');\n return EditorState.forceSelection(newEditorState, contentState.getSelectionAfter());\n },\n\n /**\n * For collapsed selections at the start of styled blocks, backspace should\n * just remove the existing style.\n */\n onBackspace: function onBackspace(editorState) {\n var selection = editorState.getSelection();\n\n if (!selection.isCollapsed() || selection.getAnchorOffset() || selection.getFocusOffset()) {\n return null;\n } // First, try to remove a preceding atomic block.\n\n\n var content = editorState.getCurrentContent();\n var startKey = selection.getStartKey();\n var blockBefore = content.getBlockBefore(startKey);\n\n if (blockBefore && blockBefore.getType() === 'atomic') {\n var blockMap = content.getBlockMap()[\"delete\"](blockBefore.getKey());\n var withoutAtomicBlock = content.merge({\n blockMap: blockMap,\n selectionAfter: selection\n });\n\n if (withoutAtomicBlock !== content) {\n return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n }\n } // If that doesn't succeed, try to remove the current block style.\n\n\n var withoutBlockStyle = RichTextEditorUtil.tryToRemoveBlockStyle(editorState);\n\n if (withoutBlockStyle) {\n return EditorState.push(editorState, withoutBlockStyle, 'change-block-type');\n }\n\n return null;\n },\n onDelete: function onDelete(editorState) {\n var selection = editorState.getSelection();\n\n if (!selection.isCollapsed()) {\n return null;\n }\n\n var content = editorState.getCurrentContent();\n var startKey = selection.getStartKey();\n var block = content.getBlockForKey(startKey);\n var length = block.getLength(); // The cursor is somewhere within the text. Behave normally.\n\n if (selection.getStartOffset() < length) {\n return null;\n }\n\n var blockAfter = content.getBlockAfter(startKey);\n\n if (!blockAfter || blockAfter.getType() !== 'atomic') {\n return null;\n }\n\n var atomicBlockTarget = selection.merge({\n focusKey: blockAfter.getKey(),\n focusOffset: blockAfter.getLength()\n });\n var withoutAtomicBlock = DraftModifier.removeRange(content, atomicBlockTarget, 'forward');\n\n if (withoutAtomicBlock !== content) {\n return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n }\n\n return null;\n },\n onTab: function onTab(event, editorState, maxDepth) {\n var selection = editorState.getSelection();\n var key = selection.getAnchorKey();\n\n if (key !== selection.getFocusKey()) {\n return editorState;\n }\n\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(key);\n var type = block.getType();\n\n if (type !== 'unordered-list-item' && type !== 'ordered-list-item') {\n return editorState;\n }\n\n event.preventDefault();\n var depth = block.getDepth();\n\n if (!event.shiftKey && depth === maxDepth) {\n return editorState;\n }\n\n var withAdjustment = adjustBlockDepthForContentState(content, selection, event.shiftKey ? -1 : 1, maxDepth);\n return EditorState.push(editorState, withAdjustment, 'adjust-depth');\n },\n toggleBlockType: function toggleBlockType(editorState, blockType) {\n var selection = editorState.getSelection();\n var startKey = selection.getStartKey();\n var endKey = selection.getEndKey();\n var content = editorState.getCurrentContent();\n var target = selection; // Triple-click can lead to a selection that includes offset 0 of the\n // following block. The `SelectionState` for this case is accurate, but\n // we should avoid toggling block type for the trailing block because it\n // is a confusing interaction.\n\n if (startKey !== endKey && selection.getEndOffset() === 0) {\n var blockBefore = nullthrows(content.getBlockBefore(endKey));\n endKey = blockBefore.getKey();\n target = target.merge({\n anchorKey: startKey,\n anchorOffset: selection.getStartOffset(),\n focusKey: endKey,\n focusOffset: blockBefore.getLength(),\n isBackward: false\n });\n }\n\n var hasAtomicBlock = content.getBlockMap().skipWhile(function (_, k) {\n return k !== startKey;\n }).reverse().skipWhile(function (_, k) {\n return k !== endKey;\n }).some(function (v) {\n return v.getType() === 'atomic';\n });\n\n if (hasAtomicBlock) {\n return editorState;\n }\n\n var typeToSet = content.getBlockForKey(startKey).getType() === blockType ? 'unstyled' : blockType;\n return EditorState.push(editorState, DraftModifier.setBlockType(content, target, typeToSet), 'change-block-type');\n },\n toggleCode: function toggleCode(editorState) {\n var selection = editorState.getSelection();\n var anchorKey = selection.getAnchorKey();\n var focusKey = selection.getFocusKey();\n\n if (selection.isCollapsed() || anchorKey !== focusKey) {\n return RichTextEditorUtil.toggleBlockType(editorState, 'code-block');\n }\n\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'CODE');\n },\n\n /**\n * Toggle the specified inline style for the selection. If the\n * user's selection is collapsed, apply or remove the style for the\n * internal state. If it is not collapsed, apply the change directly\n * to the document state.\n */\n toggleInlineStyle: function toggleInlineStyle(editorState, inlineStyle) {\n var selection = editorState.getSelection();\n var currentStyle = editorState.getCurrentInlineStyle(); // If the selection is collapsed, toggle the specified style on or off and\n // set the result as the new inline style override. This will then be\n // used as the inline style for the next character to be inserted.\n\n if (selection.isCollapsed()) {\n return EditorState.setInlineStyleOverride(editorState, currentStyle.has(inlineStyle) ? currentStyle.remove(inlineStyle) : currentStyle.add(inlineStyle));\n } // If characters are selected, immediately apply or remove the\n // inline style on the document state itself.\n\n\n var content = editorState.getCurrentContent();\n var newContent; // If the style is already present for the selection range, remove it.\n // Otherwise, apply it.\n\n if (currentStyle.has(inlineStyle)) {\n newContent = DraftModifier.removeInlineStyle(content, selection, inlineStyle);\n } else {\n newContent = DraftModifier.applyInlineStyle(content, selection, inlineStyle);\n }\n\n return EditorState.push(editorState, newContent, 'change-inline-style');\n },\n toggleLink: function toggleLink(editorState, targetSelection, entityKey) {\n var withoutLink = DraftModifier.applyEntity(editorState.getCurrentContent(), targetSelection, entityKey);\n return EditorState.push(editorState, withoutLink, 'apply-entity');\n },\n\n /**\n * When a collapsed cursor is at the start of a styled block, changes block\n * type to 'unstyled'. Returns null if selection does not meet that criteria.\n */\n tryToRemoveBlockStyle: function tryToRemoveBlockStyle(editorState) {\n var selection = editorState.getSelection();\n var offset = selection.getAnchorOffset();\n\n if (selection.isCollapsed() && offset === 0) {\n var key = selection.getAnchorKey();\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(key);\n var type = block.getType();\n var blockBefore = content.getBlockBefore(key);\n\n if (type === 'code-block' && blockBefore && blockBefore.getType() === 'code-block' && blockBefore.getLength() !== 0) {\n return null;\n }\n\n if (type !== 'unstyled') {\n return DraftModifier.setBlockType(content, selection, 'unstyled');\n }\n }\n\n return null;\n }\n};\nmodule.exports = RichTextEditorUtil;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X'); // Firefox on OSX had a bug resulting in navigation instead of cursor movement.\n// This bug was fixed in Firefox 29. Feature detection is virtually impossible\n// so we just check the version number. See #342765.\n\nvar shouldFixFirefoxMovement = isOSX && UserAgent.isBrowser('Firefox < 29');\nvar hasCommandModifier = KeyBindingUtil.hasCommandModifier,\n isCtrlKeyCommand = KeyBindingUtil.isCtrlKeyCommand;\n\nfunction shouldRemoveWord(e) {\n return isOSX && e.altKey || isCtrlKeyCommand(e);\n}\n/**\n * Get the appropriate undo/redo command for a Z key command.\n */\n\n\nfunction getZCommand(e) {\n if (!hasCommandModifier(e)) {\n return null;\n }\n\n return e.shiftKey ? 'redo' : 'undo';\n}\n\nfunction getDeleteCommand(e) {\n // Allow default \"cut\" behavior for PCs on Shift + Delete.\n if (!isOSX && e.shiftKey) {\n return null;\n }\n\n return shouldRemoveWord(e) ? 'delete-word' : 'delete';\n}\n\nfunction getBackspaceCommand(e) {\n if (hasCommandModifier(e) && isOSX) {\n return 'backspace-to-start-of-line';\n }\n\n return shouldRemoveWord(e) ? 'backspace-word' : 'backspace';\n}\n/**\n * Retrieve a bound key command for the given event.\n */\n\n\nfunction getDefaultKeyBinding(e) {\n switch (e.keyCode) {\n case 66:\n // B\n return hasCommandModifier(e) ? 'bold' : null;\n\n case 68:\n // D\n return isCtrlKeyCommand(e) ? 'delete' : null;\n\n case 72:\n // H\n return isCtrlKeyCommand(e) ? 'backspace' : null;\n\n case 73:\n // I\n return hasCommandModifier(e) ? 'italic' : null;\n\n case 74:\n // J\n return hasCommandModifier(e) ? 'code' : null;\n\n case 75:\n // K\n return isOSX && isCtrlKeyCommand(e) ? 'secondary-cut' : null;\n\n case 77:\n // M\n return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n case 79:\n // O\n return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n case 84:\n // T\n return isOSX && isCtrlKeyCommand(e) ? 'transpose-characters' : null;\n\n case 85:\n // U\n return hasCommandModifier(e) ? 'underline' : null;\n\n case 87:\n // W\n return isOSX && isCtrlKeyCommand(e) ? 'backspace-word' : null;\n\n case 89:\n // Y\n if (isCtrlKeyCommand(e)) {\n return isOSX ? 'secondary-paste' : 'redo';\n }\n\n return null;\n\n case 90:\n // Z\n return getZCommand(e) || null;\n\n case Keys.RETURN:\n return 'split-block';\n\n case Keys.DELETE:\n return getDeleteCommand(e);\n\n case Keys.BACKSPACE:\n return getBackspaceCommand(e);\n // LEFT/RIGHT handlers serve as a workaround for a Firefox bug.\n\n case Keys.LEFT:\n return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-start-of-block' : null;\n\n case Keys.RIGHT:\n return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-end-of-block' : null;\n\n default:\n return null;\n }\n}\n\nmodule.exports = getDefaultKeyBinding;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftStringKey = {\n stringify: function stringify(key) {\n return '_' + String(key);\n },\n unstringify: function unstringify(key) {\n return key.slice(1);\n }\n};\nmodule.exports = DraftStringKey;","/**\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' ? 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 if (o !== o || o === Infinity) {\n return 0;\n }\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.of = function() {var keyValues = SLICE$0.call(arguments, 0);\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() {\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 if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\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 if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\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 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 findEntry: function(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(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\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 keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\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 lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\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 mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\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.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\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 entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\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 keySeq: function() {\n return Range(0, this.size);\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 SetIterable.prototype.contains = SetIterable.prototype.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) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar moveBlockInContentState = require(\"./moveBlockInContentState\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\nvar List = Immutable.List,\n Repeat = Immutable.Repeat;\nvar AtomicBlockUtils = {\n insertAtomicBlock: function insertAtomicBlock(editorState, entityKey, character) {\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n var afterRemoval = DraftModifier.removeRange(contentState, selectionState, 'backward');\n var targetSelection = afterRemoval.getSelectionAfter();\n var afterSplit = DraftModifier.splitBlock(afterRemoval, targetSelection);\n var insertionTarget = afterSplit.getSelectionAfter();\n var asAtomicBlock = DraftModifier.setBlockType(afterSplit, insertionTarget, 'atomic');\n var charData = CharacterMetadata.create({\n entity: entityKey\n });\n var atomicBlockConfig = {\n key: generateRandomKey(),\n type: 'atomic',\n text: character,\n characterList: List(Repeat(charData, character.length))\n };\n var atomicDividerBlockConfig = {\n key: generateRandomKey(),\n type: 'unstyled'\n };\n\n if (experimentalTreeDataSupport) {\n atomicBlockConfig = _objectSpread({}, atomicBlockConfig, {\n nextSibling: atomicDividerBlockConfig.key\n });\n atomicDividerBlockConfig = _objectSpread({}, atomicDividerBlockConfig, {\n prevSibling: atomicBlockConfig.key\n });\n }\n\n var fragmentArray = [new ContentBlockRecord(atomicBlockConfig), new ContentBlockRecord(atomicDividerBlockConfig)];\n var fragment = BlockMapBuilder.createFromArray(fragmentArray);\n var withAtomicBlock = DraftModifier.replaceWithFragment(asAtomicBlock, insertionTarget, fragment);\n var newContent = withAtomicBlock.merge({\n selectionBefore: selectionState,\n selectionAfter: withAtomicBlock.getSelectionAfter().set('hasFocus', true)\n });\n return EditorState.push(editorState, newContent, 'insert-fragment');\n },\n moveAtomicBlock: function moveAtomicBlock(editorState, atomicBlock, targetRange, insertionMode) {\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n var withMovedAtomicBlock;\n\n if (insertionMode === 'before' || insertionMode === 'after') {\n var targetBlock = contentState.getBlockForKey(insertionMode === 'before' ? targetRange.getStartKey() : targetRange.getEndKey());\n withMovedAtomicBlock = moveBlockInContentState(contentState, atomicBlock, targetBlock, insertionMode);\n } else {\n var afterRemoval = DraftModifier.removeRange(contentState, targetRange, 'backward');\n var selectionAfterRemoval = afterRemoval.getSelectionAfter();\n\n var _targetBlock = afterRemoval.getBlockForKey(selectionAfterRemoval.getFocusKey());\n\n if (selectionAfterRemoval.getStartOffset() === 0) {\n withMovedAtomicBlock = moveBlockInContentState(afterRemoval, atomicBlock, _targetBlock, 'before');\n } else if (selectionAfterRemoval.getEndOffset() === _targetBlock.getLength()) {\n withMovedAtomicBlock = moveBlockInContentState(afterRemoval, atomicBlock, _targetBlock, 'after');\n } else {\n var afterSplit = DraftModifier.splitBlock(afterRemoval, selectionAfterRemoval);\n var selectionAfterSplit = afterSplit.getSelectionAfter();\n\n var _targetBlock2 = afterSplit.getBlockForKey(selectionAfterSplit.getFocusKey());\n\n withMovedAtomicBlock = moveBlockInContentState(afterSplit, atomicBlock, _targetBlock2, 'before');\n }\n }\n\n var newContent = withMovedAtomicBlock.merge({\n selectionBefore: selectionState,\n selectionAfter: withMovedAtomicBlock.getSelectionAfter().set('hasFocus', true)\n });\n return EditorState.push(editorState, newContent, 'move-block');\n }\n};\nmodule.exports = AtomicBlockUtils;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar _require = require(\"immutable\"),\n Map = _require.Map;\n\nvar ContentStateInlineStyle = {\n add: function add(contentState, selectionState, inlineStyle) {\n return modifyInlineStyle(contentState, selectionState, inlineStyle, true);\n },\n remove: function remove(contentState, selectionState, inlineStyle) {\n return modifyInlineStyle(contentState, selectionState, inlineStyle, false);\n }\n};\n\nfunction modifyInlineStyle(contentState, selectionState, inlineStyle, addOrRemove) {\n var blockMap = contentState.getBlockMap();\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var newBlocks = blockMap.skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).concat(Map([[endKey, blockMap.get(endKey)]])).map(function (block, blockKey) {\n var sliceStart;\n var sliceEnd;\n\n if (startKey === endKey) {\n sliceStart = startOffset;\n sliceEnd = endOffset;\n } else {\n sliceStart = blockKey === startKey ? startOffset : 0;\n sliceEnd = blockKey === endKey ? endOffset : block.getLength();\n }\n\n var chars = block.getCharacterList();\n var current;\n\n while (sliceStart < sliceEnd) {\n current = chars.get(sliceStart);\n chars = chars.set(sliceStart, addOrRemove ? CharacterMetadata.applyStyle(current, inlineStyle) : CharacterMetadata.removeStyle(current, inlineStyle));\n sliceStart++;\n }\n\n return block.set('characterList', chars);\n });\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = ContentStateInlineStyle;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar applyEntityToContentBlock = require(\"./applyEntityToContentBlock\");\n\nvar Immutable = require(\"immutable\");\n\nfunction applyEntityToContentState(contentState, selectionState, entityKey) {\n var blockMap = contentState.getBlockMap();\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var newBlocks = blockMap.skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).toOrderedMap().merge(Immutable.OrderedMap([[endKey, blockMap.get(endKey)]])).map(function (block, blockKey) {\n var sliceStart = blockKey === startKey ? startOffset : 0;\n var sliceEnd = blockKey === endKey ? endOffset : block.getLength();\n return applyEntityToContentBlock(block, sliceStart, sliceEnd, entityKey);\n });\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = applyEntityToContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nfunction applyEntityToContentBlock(contentBlock, startArg, end, entityKey) {\n var start = startArg;\n var characterList = contentBlock.getCharacterList();\n\n while (start < end) {\n characterList = characterList.set(start, CharacterMetadata.applyEntity(characterList.get(start), entityKey));\n start++;\n }\n\n return contentBlock.set('characterList', characterList);\n}\n\nmodule.exports = applyEntityToContentBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftEntitySegments = require(\"./DraftEntitySegments\");\n\nvar getRangesForDraftEntity = require(\"./getRangesForDraftEntity\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Given a SelectionState and a removal direction, determine the entire range\n * that should be removed from a ContentState. This is based on any entities\n * within the target, with their `mutability` values taken into account.\n *\n * For instance, if we are attempting to remove part of an \"immutable\" entity\n * range, the entire entity must be removed. The returned `SelectionState`\n * will be adjusted accordingly.\n */\n\n\nfunction getCharacterRemovalRange(entityMap, startBlock, endBlock, selectionState, direction) {\n var start = selectionState.getStartOffset();\n var end = selectionState.getEndOffset();\n var startEntityKey = startBlock.getEntityAt(start);\n var endEntityKey = endBlock.getEntityAt(end - 1);\n\n if (!startEntityKey && !endEntityKey) {\n return selectionState;\n }\n\n var newSelectionState = selectionState;\n\n if (startEntityKey && startEntityKey === endEntityKey) {\n newSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, true, true);\n } else if (startEntityKey && endEntityKey) {\n var startSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, false, true);\n var endSelectionState = getEntityRemovalRange(entityMap, endBlock, newSelectionState, direction, endEntityKey, false, false);\n newSelectionState = newSelectionState.merge({\n anchorOffset: startSelectionState.getAnchorOffset(),\n focusOffset: endSelectionState.getFocusOffset(),\n isBackward: false\n });\n } else if (startEntityKey) {\n var _startSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, false, true);\n\n newSelectionState = newSelectionState.merge({\n anchorOffset: _startSelectionState.getStartOffset(),\n isBackward: false\n });\n } else if (endEntityKey) {\n var _endSelectionState = getEntityRemovalRange(entityMap, endBlock, newSelectionState, direction, endEntityKey, false, false);\n\n newSelectionState = newSelectionState.merge({\n focusOffset: _endSelectionState.getEndOffset(),\n isBackward: false\n });\n }\n\n return newSelectionState;\n}\n\nfunction getEntityRemovalRange(entityMap, block, selectionState, direction, entityKey, isEntireSelectionWithinEntity, isEntityAtStart) {\n var start = selectionState.getStartOffset();\n var end = selectionState.getEndOffset();\n\n var entity = entityMap.__get(entityKey);\n\n var mutability = entity.getMutability();\n var sideToConsider = isEntityAtStart ? start : end; // `MUTABLE` entities can just have the specified range of text removed\n // directly. No adjustments are needed.\n\n if (mutability === 'MUTABLE') {\n return selectionState;\n } // Find the entity range that overlaps with our removal range.\n\n\n var entityRanges = getRangesForDraftEntity(block, entityKey).filter(function (range) {\n return sideToConsider <= range.end && sideToConsider >= range.start;\n });\n !(entityRanges.length == 1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'There should only be one entity range within this removal range.') : invariant(false) : void 0;\n var entityRange = entityRanges[0]; // For `IMMUTABLE` entity types, we will remove the entire entity range.\n\n if (mutability === 'IMMUTABLE') {\n return selectionState.merge({\n anchorOffset: entityRange.start,\n focusOffset: entityRange.end,\n isBackward: false\n });\n } // For `SEGMENTED` entity types, determine the appropriate segment to\n // remove.\n\n\n if (!isEntireSelectionWithinEntity) {\n if (isEntityAtStart) {\n end = entityRange.end;\n } else {\n start = entityRange.start;\n }\n }\n\n var removalRange = DraftEntitySegments.getRemovalRange(start, end, block.getText().slice(entityRange.start, entityRange.end), entityRange.start, direction);\n return selectionState.merge({\n anchorOffset: removalRange.start,\n focusOffset: removalRange.end,\n isBackward: false\n });\n}\n\nmodule.exports = getCharacterRemovalRange;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Identify the range to delete from a segmented entity.\n *\n * Rules:\n *\n * Example: 'John F. Kennedy'\n *\n * - Deletion from within any non-whitespace (i.e. ['John', 'F.', 'Kennedy'])\n * will return the range of that text.\n *\n * 'John F. Kennedy' -> 'John F.'\n * ^\n *\n * - Forward deletion of whitespace will remove the following section:\n *\n * 'John F. Kennedy' -> 'John Kennedy'\n * ^\n *\n * - Backward deletion of whitespace will remove the previous section:\n *\n * 'John F. Kennedy' -> 'F. Kennedy'\n * ^\n */\nvar DraftEntitySegments = {\n getRemovalRange: function getRemovalRange(selectionStart, selectionEnd, text, entityStart, direction) {\n var segments = text.split(' ');\n segments = segments.map(function (\n /*string*/\n segment,\n /*number*/\n ii) {\n if (direction === 'forward') {\n if (ii > 0) {\n return ' ' + segment;\n }\n } else if (ii < segments.length - 1) {\n return segment + ' ';\n }\n\n return segment;\n });\n var segmentStart = entityStart;\n var segmentEnd;\n var segment;\n var removalStart = null;\n var removalEnd = null;\n\n for (var jj = 0; jj < segments.length; jj++) {\n segment = segments[jj];\n segmentEnd = segmentStart + segment.length; // Our selection overlaps this segment.\n\n if (selectionStart < segmentEnd && segmentStart < selectionEnd) {\n if (removalStart !== null) {\n removalEnd = segmentEnd;\n } else {\n removalStart = segmentStart;\n removalEnd = segmentEnd;\n }\n } else if (removalStart !== null) {\n break;\n }\n\n segmentStart = segmentEnd;\n }\n\n var entityEnd = entityStart + text.length;\n var atStart = removalStart === entityStart;\n var atEnd = removalEnd === entityEnd;\n\n if (!atStart && atEnd || atStart && !atEnd) {\n if (direction === 'forward') {\n if (removalEnd !== entityEnd) {\n removalEnd++;\n }\n } else if (removalStart !== entityStart) {\n removalStart--;\n }\n }\n\n return {\n start: removalStart,\n end: removalEnd\n };\n }\n};\nmodule.exports = DraftEntitySegments;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Obtain the start and end positions of the range that has the\n * specified entity applied to it.\n *\n * Entity keys are applied only to contiguous stretches of text, so this\n * method searches for the first instance of the entity key and returns\n * the subsequent range.\n */\n\n\nfunction getRangesForDraftEntity(block, key) {\n var ranges = [];\n block.findEntityRanges(function (c) {\n return c.getEntity() === key;\n }, function (start, end) {\n ranges.push({\n start: start,\n end: end\n });\n });\n !!!ranges.length ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Entity key not found in this range.') : invariant(false) : void 0;\n return ranges;\n}\n\nmodule.exports = getRangesForDraftEntity;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar Immutable = require(\"immutable\");\n\nvar insertIntoList = require(\"./insertIntoList\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar randomizeBlockMapKeys = require(\"./randomizeBlockMapKeys\");\n\nvar List = Immutable.List;\n\nvar updateExistingBlock = function updateExistingBlock(contentState, selectionState, blockMap, fragmentBlock, targetKey, targetOffset) {\n var mergeBlockData = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 'REPLACE_WITH_NEW_DATA';\n var targetBlock = blockMap.get(targetKey);\n var text = targetBlock.getText();\n var chars = targetBlock.getCharacterList();\n var finalKey = targetKey;\n var finalOffset = targetOffset + fragmentBlock.getText().length;\n var data = null;\n\n switch (mergeBlockData) {\n case 'MERGE_OLD_DATA_TO_NEW_DATA':\n data = fragmentBlock.getData().merge(targetBlock.getData());\n break;\n\n case 'REPLACE_WITH_NEW_DATA':\n data = fragmentBlock.getData();\n break;\n }\n\n var type = targetBlock.getType();\n\n if (text && type === 'unstyled') {\n type = fragmentBlock.getType();\n }\n\n var newBlock = targetBlock.merge({\n text: text.slice(0, targetOffset) + fragmentBlock.getText() + text.slice(targetOffset),\n characterList: insertIntoList(chars, fragmentBlock.getCharacterList(), targetOffset),\n type: type,\n data: data\n });\n return contentState.merge({\n blockMap: blockMap.set(targetKey, newBlock),\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: finalKey,\n anchorOffset: finalOffset,\n focusKey: finalKey,\n focusOffset: finalOffset,\n isBackward: false\n })\n });\n};\n/**\n * Appends text/characterList from the fragment first block to\n * target block.\n */\n\n\nvar updateHead = function updateHead(block, targetOffset, fragment) {\n var text = block.getText();\n var chars = block.getCharacterList(); // Modify head portion of block.\n\n var headText = text.slice(0, targetOffset);\n var headCharacters = chars.slice(0, targetOffset);\n var appendToHead = fragment.first();\n return block.merge({\n text: headText + appendToHead.getText(),\n characterList: headCharacters.concat(appendToHead.getCharacterList()),\n type: headText ? block.getType() : appendToHead.getType(),\n data: appendToHead.getData()\n });\n};\n/**\n * Appends offset text/characterList from the target block to the last\n * fragment block.\n */\n\n\nvar updateTail = function updateTail(block, targetOffset, fragment) {\n // Modify tail portion of block.\n var text = block.getText();\n var chars = block.getCharacterList(); // Modify head portion of block.\n\n var blockSize = text.length;\n var tailText = text.slice(targetOffset, blockSize);\n var tailCharacters = chars.slice(targetOffset, blockSize);\n var prependToTail = fragment.last();\n return prependToTail.merge({\n text: prependToTail.getText() + tailText,\n characterList: prependToTail.getCharacterList().concat(tailCharacters),\n data: prependToTail.getData()\n });\n};\n\nvar getRootBlocks = function getRootBlocks(block, blockMap) {\n var headKey = block.getKey();\n var rootBlock = block;\n var rootBlocks = []; // sometimes the fragment head block will not be part of the blockMap itself this can happen when\n // the fragment head is used to update the target block, however when this does not happen we need\n // to make sure that we include it on the rootBlocks since the first block of a fragment is always a\n // fragment root block\n\n if (blockMap.get(headKey)) {\n rootBlocks.push(headKey);\n }\n\n while (rootBlock && rootBlock.getNextSiblingKey()) {\n var lastSiblingKey = rootBlock.getNextSiblingKey();\n\n if (!lastSiblingKey) {\n break;\n }\n\n rootBlocks.push(lastSiblingKey);\n rootBlock = blockMap.get(lastSiblingKey);\n }\n\n return rootBlocks;\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlockMap, targetBlock, fragmentHeadBlock) {\n return blockMap.withMutations(function (blockMapState) {\n var targetKey = targetBlock.getKey();\n var headKey = fragmentHeadBlock.getKey();\n var targetNextKey = targetBlock.getNextSiblingKey();\n var targetParentKey = targetBlock.getParentKey();\n var fragmentRootBlocks = getRootBlocks(fragmentHeadBlock, blockMap);\n var lastRootFragmentBlockKey = fragmentRootBlocks[fragmentRootBlocks.length - 1];\n\n if (blockMapState.get(headKey)) {\n // update the fragment head when it is part of the blockMap otherwise\n blockMapState.setIn([targetKey, 'nextSibling'], headKey);\n blockMapState.setIn([headKey, 'prevSibling'], targetKey);\n } else {\n // update the target block that had the fragment head contents merged into it\n blockMapState.setIn([targetKey, 'nextSibling'], fragmentHeadBlock.getNextSiblingKey());\n blockMapState.setIn([fragmentHeadBlock.getNextSiblingKey(), 'prevSibling'], targetKey);\n } // update the last root block fragment\n\n\n blockMapState.setIn([lastRootFragmentBlockKey, 'nextSibling'], targetNextKey); // update the original target next block\n\n if (targetNextKey) {\n blockMapState.setIn([targetNextKey, 'prevSibling'], lastRootFragmentBlockKey);\n } // update fragment parent links\n\n\n fragmentRootBlocks.forEach(function (blockKey) {\n return blockMapState.setIn([blockKey, 'parent'], targetParentKey);\n }); // update targetBlock parent child links\n\n if (targetParentKey) {\n var targetParent = blockMap.get(targetParentKey);\n var originalTargetParentChildKeys = targetParent.getChildKeys();\n var targetBlockIndex = originalTargetParentChildKeys.indexOf(targetKey);\n var insertionIndex = targetBlockIndex + 1;\n var newChildrenKeysArray = originalTargetParentChildKeys.toArray(); // insert fragment children\n\n newChildrenKeysArray.splice.apply(newChildrenKeysArray, [insertionIndex, 0].concat(fragmentRootBlocks));\n blockMapState.setIn([targetParentKey, 'children'], List(newChildrenKeysArray));\n }\n });\n};\n\nvar insertFragment = function insertFragment(contentState, selectionState, blockMap, fragment, targetKey, targetOffset) {\n var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n var newBlockArr = [];\n var fragmentSize = fragment.size;\n var target = blockMap.get(targetKey);\n var head = fragment.first();\n var tail = fragment.last();\n var finalOffset = tail.getLength();\n var finalKey = tail.getKey();\n var shouldNotUpdateFromFragmentBlock = isTreeBasedBlockMap && (!target.getChildKeys().isEmpty() || !head.getChildKeys().isEmpty());\n blockMap.forEach(function (block, blockKey) {\n if (blockKey !== targetKey) {\n newBlockArr.push(block);\n return;\n }\n\n if (shouldNotUpdateFromFragmentBlock) {\n newBlockArr.push(block);\n } else {\n newBlockArr.push(updateHead(block, targetOffset, fragment));\n } // Insert fragment blocks after the head and before the tail.\n\n\n fragment // when we are updating the target block with the head fragment block we skip the first fragment\n // head since its contents have already been merged with the target block otherwise we include\n // the whole fragment\n .slice(shouldNotUpdateFromFragmentBlock ? 0 : 1, fragmentSize - 1).forEach(function (fragmentBlock) {\n return newBlockArr.push(fragmentBlock);\n }); // update tail\n\n newBlockArr.push(updateTail(block, targetOffset, fragment));\n });\n var updatedBlockMap = BlockMapBuilder.createFromArray(newBlockArr);\n\n if (isTreeBasedBlockMap) {\n updatedBlockMap = updateBlockMapLinks(updatedBlockMap, blockMap, target, head);\n }\n\n return contentState.merge({\n blockMap: updatedBlockMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: finalKey,\n anchorOffset: finalOffset,\n focusKey: finalKey,\n focusOffset: finalOffset,\n isBackward: false\n })\n });\n};\n\nvar insertFragmentIntoContentState = function insertFragmentIntoContentState(contentState, selectionState, fragmentBlockMap) {\n var mergeBlockData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'REPLACE_WITH_NEW_DATA';\n !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertFragment` should only be called with a collapsed selection state.') : invariant(false) : void 0;\n var blockMap = contentState.getBlockMap();\n var fragment = randomizeBlockMapKeys(fragmentBlockMap);\n var targetKey = selectionState.getStartKey();\n var targetOffset = selectionState.getStartOffset();\n var targetBlock = blockMap.get(targetKey);\n\n if (targetBlock instanceof ContentBlockNode) {\n !targetBlock.getChildKeys().isEmpty() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertFragment` should not be called when a container node is selected.') : invariant(false) : void 0;\n } // When we insert a fragment with a single block we simply update the target block\n // with the contents of the inserted fragment block\n\n\n if (fragment.size === 1) {\n return updateExistingBlock(contentState, selectionState, blockMap, fragment.first(), targetKey, targetOffset, mergeBlockData);\n }\n\n return insertFragment(contentState, selectionState, blockMap, fragment, targetKey, targetOffset);\n};\n\nmodule.exports = insertFragmentIntoContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar insertIntoList = require(\"./insertIntoList\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar Repeat = Immutable.Repeat;\n\nfunction insertTextIntoContentState(contentState, selectionState, text, characterMetadata) {\n !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertText` should only be called with a collapsed range.') : invariant(false) : void 0;\n var len = null;\n\n if (text != null) {\n len = text.length;\n }\n\n if (len == null || len === 0) {\n return contentState;\n }\n\n var blockMap = contentState.getBlockMap();\n var key = selectionState.getStartKey();\n var offset = selectionState.getStartOffset();\n var block = blockMap.get(key);\n var blockText = block.getText();\n var newBlock = block.merge({\n text: blockText.slice(0, offset) + text + blockText.slice(offset, block.getLength()),\n characterList: insertIntoList(block.getCharacterList(), Repeat(characterMetadata, len).toList(), offset)\n });\n var newOffset = offset + len;\n return contentState.merge({\n blockMap: blockMap.set(key, newBlock),\n selectionAfter: selectionState.merge({\n anchorOffset: newOffset,\n focusOffset: newOffset\n })\n });\n}\n\nmodule.exports = insertTextIntoContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = require(\"./getNextDelimiterBlockKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Map = Immutable.Map;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n if (!key) {\n return;\n }\n\n var block = blockMap.get(key);\n\n if (!block) {\n return;\n }\n\n blockMap.set(key, func(block));\n};\n/**\n * Ancestors needs to be preserved when there are non selected\n * children to make sure we do not leave any orphans behind\n */\n\n\nvar getAncestorsKeys = function getAncestorsKeys(blockKey, blockMap) {\n var parents = [];\n\n if (!blockKey) {\n return parents;\n }\n\n var blockNode = blockMap.get(blockKey);\n\n while (blockNode && blockNode.getParentKey()) {\n var parentKey = blockNode.getParentKey();\n\n if (parentKey) {\n parents.push(parentKey);\n }\n\n blockNode = parentKey ? blockMap.get(parentKey) : null;\n }\n\n return parents;\n};\n/**\n * Get all next delimiter keys until we hit a root delimiter and return\n * an array of key references\n */\n\n\nvar getNextDelimitersBlockKeys = function getNextDelimitersBlockKeys(block, blockMap) {\n var nextDelimiters = [];\n\n if (!block) {\n return nextDelimiters;\n }\n\n var nextDelimiter = getNextDelimiterBlockKey(block, blockMap);\n\n while (nextDelimiter && blockMap.get(nextDelimiter)) {\n var _block = blockMap.get(nextDelimiter);\n\n nextDelimiters.push(nextDelimiter); // we do not need to keep checking all root node siblings, just the first occurance\n\n nextDelimiter = _block.getParentKey() ? getNextDelimiterBlockKey(_block, blockMap) : null;\n }\n\n return nextDelimiters;\n};\n\nvar getNextValidSibling = function getNextValidSibling(block, blockMap, originalBlockMap) {\n if (!block) {\n return null;\n } // note that we need to make sure we refer to the original block since this\n // function is called within a withMutations\n\n\n var nextValidSiblingKey = originalBlockMap.get(block.getKey()).getNextSiblingKey();\n\n while (nextValidSiblingKey && !blockMap.get(nextValidSiblingKey)) {\n nextValidSiblingKey = originalBlockMap.get(nextValidSiblingKey).getNextSiblingKey() || null;\n }\n\n return nextValidSiblingKey;\n};\n\nvar getPrevValidSibling = function getPrevValidSibling(block, blockMap, originalBlockMap) {\n if (!block) {\n return null;\n } // note that we need to make sure we refer to the original block since this\n // function is called within a withMutations\n\n\n var prevValidSiblingKey = originalBlockMap.get(block.getKey()).getPrevSiblingKey();\n\n while (prevValidSiblingKey && !blockMap.get(prevValidSiblingKey)) {\n prevValidSiblingKey = originalBlockMap.get(prevValidSiblingKey).getPrevSiblingKey() || null;\n }\n\n return prevValidSiblingKey;\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, startBlock, endBlock, originalBlockMap) {\n return blockMap.withMutations(function (blocks) {\n // update start block if its retained\n transformBlock(startBlock.getKey(), blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n }); // update endblock if its retained\n\n transformBlock(endBlock.getKey(), blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n }); // update start block parent ancestors\n\n getAncestorsKeys(startBlock.getKey(), originalBlockMap).forEach(function (parentKey) {\n return transformBlock(parentKey, blocks, function (block) {\n return block.merge({\n children: block.getChildKeys().filter(function (key) {\n return blocks.get(key);\n }),\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n });\n }); // update start block next - can only happen if startBlock == endBlock\n\n transformBlock(startBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: startBlock.getPrevSiblingKey()\n });\n }); // update start block prev\n\n transformBlock(startBlock.getPrevSiblingKey(), blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap)\n });\n }); // update end block next\n\n transformBlock(endBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n }); // update end block prev\n\n transformBlock(endBlock.getPrevSiblingKey(), blocks, function (block) {\n return block.merge({\n nextSibling: endBlock.getNextSiblingKey()\n });\n }); // update end block parent ancestors\n\n getAncestorsKeys(endBlock.getKey(), originalBlockMap).forEach(function (parentKey) {\n transformBlock(parentKey, blocks, function (block) {\n return block.merge({\n children: block.getChildKeys().filter(function (key) {\n return blocks.get(key);\n }),\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n });\n }); // update next delimiters all the way to a root delimiter\n\n getNextDelimitersBlockKeys(endBlock, originalBlockMap).forEach(function (delimiterKey) {\n return transformBlock(delimiterKey, blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n });\n }); // if parent (startBlock) was deleted\n\n if (blockMap.get(startBlock.getKey()) == null && blockMap.get(endBlock.getKey()) != null && endBlock.getParentKey() === startBlock.getKey() && endBlock.getPrevSiblingKey() == null) {\n var prevSiblingKey = startBlock.getPrevSiblingKey(); // endBlock becomes next sibling of parent's prevSibling\n\n transformBlock(endBlock.getKey(), blocks, function (block) {\n return block.merge({\n prevSibling: prevSiblingKey\n });\n });\n transformBlock(prevSiblingKey, blocks, function (block) {\n return block.merge({\n nextSibling: endBlock.getKey()\n });\n }); // Update parent for previous parent's children, and children for that parent\n\n var prevSibling = prevSiblingKey ? blockMap.get(prevSiblingKey) : null;\n var newParentKey = prevSibling ? prevSibling.getParentKey() : null;\n startBlock.getChildKeys().forEach(function (childKey) {\n transformBlock(childKey, blocks, function (block) {\n return block.merge({\n parent: newParentKey // set to null if there is no parent\n\n });\n });\n });\n\n if (newParentKey != null) {\n var newParent = blockMap.get(newParentKey);\n transformBlock(newParentKey, blocks, function (block) {\n return block.merge({\n children: newParent.getChildKeys().concat(startBlock.getChildKeys())\n });\n });\n } // last child of deleted parent should point to next sibling\n\n\n transformBlock(startBlock.getChildKeys().find(function (key) {\n var block = blockMap.get(key);\n return block.getNextSiblingKey() === null;\n }), blocks, function (block) {\n return block.merge({\n nextSibling: startBlock.getNextSiblingKey()\n });\n });\n }\n });\n};\n\nvar removeRangeFromContentState = function removeRangeFromContentState(contentState, selectionState) {\n if (selectionState.isCollapsed()) {\n return contentState;\n }\n\n var blockMap = contentState.getBlockMap();\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var startBlock = blockMap.get(startKey);\n var endBlock = blockMap.get(endKey); // we assume that ContentBlockNode and ContentBlocks are not mixed together\n\n var isExperimentalTreeBlock = startBlock instanceof ContentBlockNode; // used to retain blocks that should not be deleted to avoid orphan children\n\n var parentAncestors = [];\n\n if (isExperimentalTreeBlock) {\n var endBlockchildrenKeys = endBlock.getChildKeys();\n var endBlockAncestors = getAncestorsKeys(endKey, blockMap); // endBlock has unselected siblings so we can not remove its ancestors parents\n\n if (endBlock.getNextSiblingKey()) {\n parentAncestors = parentAncestors.concat(endBlockAncestors);\n } // endBlock has children so can not remove this block or any of its ancestors\n\n\n if (!endBlockchildrenKeys.isEmpty()) {\n parentAncestors = parentAncestors.concat(endBlockAncestors.concat([endKey]));\n } // we need to retain all ancestors of the next delimiter block\n\n\n parentAncestors = parentAncestors.concat(getAncestorsKeys(getNextDelimiterBlockKey(endBlock, blockMap), blockMap));\n }\n\n var characterList;\n\n if (startBlock === endBlock) {\n characterList = removeFromList(startBlock.getCharacterList(), startOffset, endOffset);\n } else {\n characterList = startBlock.getCharacterList().slice(0, startOffset).concat(endBlock.getCharacterList().slice(endOffset));\n }\n\n var modifiedStart = startBlock.merge({\n text: startBlock.getText().slice(0, startOffset) + endBlock.getText().slice(endOffset),\n characterList: characterList\n }); // If cursor (collapsed) is at the start of the first child, delete parent\n // instead of child\n\n var shouldDeleteParent = isExperimentalTreeBlock && startOffset === 0 && endOffset === 0 && endBlock.getParentKey() === startKey && endBlock.getPrevSiblingKey() == null;\n var newBlocks = shouldDeleteParent ? Map([[startKey, null]]) : blockMap.toSeq().skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).filter(function (_, k) {\n return parentAncestors.indexOf(k) === -1;\n }).concat(Map([[endKey, null]])).map(function (_, k) {\n return k === startKey ? modifiedStart : null;\n });\n var updatedBlockMap = blockMap.merge(newBlocks).filter(function (block) {\n return !!block;\n }); // Only update tree block pointers if the range is across blocks\n\n if (isExperimentalTreeBlock && startBlock !== endBlock) {\n updatedBlockMap = updateBlockMapLinks(updatedBlockMap, startBlock, endBlock, blockMap);\n }\n\n return contentState.merge({\n blockMap: updatedBlockMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: startKey,\n anchorOffset: startOffset,\n focusKey: startKey,\n focusOffset: startOffset,\n isBackward: false\n })\n });\n};\n/**\n * Maintain persistence for target list when removing characters on the\n * head and tail of the character list.\n */\n\n\nvar removeFromList = function removeFromList(targetList, startOffset, endOffset) {\n if (startOffset === 0) {\n while (startOffset < endOffset) {\n targetList = targetList.shift();\n startOffset++;\n }\n } else if (endOffset === targetList.count()) {\n while (endOffset > startOffset) {\n targetList = targetList.pop();\n endOffset--;\n }\n } else {\n var head = targetList.slice(0, startOffset);\n var tail = targetList.slice(endOffset);\n targetList = head.concat(tail).toList();\n }\n\n return targetList;\n};\n\nmodule.exports = removeRangeFromContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar modifyBlockForContentState = require(\"./modifyBlockForContentState\");\n\nvar List = Immutable.List,\n Map = Immutable.Map;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n if (!key) {\n return;\n }\n\n var block = blockMap.get(key);\n\n if (!block) {\n return;\n }\n\n blockMap.set(key, func(block));\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlock, belowBlock) {\n return blockMap.withMutations(function (blocks) {\n var originalBlockKey = originalBlock.getKey();\n var belowBlockKey = belowBlock.getKey(); // update block parent\n\n transformBlock(originalBlock.getParentKey(), blocks, function (block) {\n var parentChildrenList = block.getChildKeys();\n var insertionIndex = parentChildrenList.indexOf(originalBlockKey) + 1;\n var newChildrenArray = parentChildrenList.toArray();\n newChildrenArray.splice(insertionIndex, 0, belowBlockKey);\n return block.merge({\n children: List(newChildrenArray)\n });\n }); // update original next block\n\n transformBlock(originalBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: belowBlockKey\n });\n }); // update original block\n\n transformBlock(originalBlockKey, blocks, function (block) {\n return block.merge({\n nextSibling: belowBlockKey\n });\n }); // update below block\n\n transformBlock(belowBlockKey, blocks, function (block) {\n return block.merge({\n prevSibling: originalBlockKey\n });\n });\n });\n};\n\nvar splitBlockInContentState = function splitBlockInContentState(contentState, selectionState) {\n !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Selection range must be collapsed.') : invariant(false) : void 0;\n var key = selectionState.getAnchorKey();\n var blockMap = contentState.getBlockMap();\n var blockToSplit = blockMap.get(key);\n var text = blockToSplit.getText();\n\n if (!text) {\n var blockType = blockToSplit.getType();\n\n if (blockType === 'unordered-list-item' || blockType === 'ordered-list-item') {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n type: 'unstyled',\n depth: 0\n });\n });\n }\n }\n\n var offset = selectionState.getAnchorOffset();\n var chars = blockToSplit.getCharacterList();\n var keyBelow = generateRandomKey();\n var isExperimentalTreeBlock = blockToSplit instanceof ContentBlockNode;\n var blockAbove = blockToSplit.merge({\n text: text.slice(0, offset),\n characterList: chars.slice(0, offset)\n });\n var blockBelow = blockAbove.merge({\n key: keyBelow,\n text: text.slice(offset),\n characterList: chars.slice(offset),\n data: Map()\n });\n var blocksBefore = blockMap.toSeq().takeUntil(function (v) {\n return v === blockToSplit;\n });\n var blocksAfter = blockMap.toSeq().skipUntil(function (v) {\n return v === blockToSplit;\n }).rest();\n var newBlocks = blocksBefore.concat([[key, blockAbove], [keyBelow, blockBelow]], blocksAfter).toOrderedMap();\n\n if (isExperimentalTreeBlock) {\n !blockToSplit.getChildKeys().isEmpty() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ContentBlockNode must not have children') : invariant(false) : void 0;\n newBlocks = updateBlockMapLinks(newBlocks, blockAbove, blockBelow);\n }\n\n return contentState.merge({\n blockMap: newBlocks,\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: keyBelow,\n anchorOffset: 0,\n focusKey: keyBelow,\n focusOffset: 0,\n isBackward: false\n })\n });\n};\n\nmodule.exports = splitBlockInContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar getOwnObjectValues = require(\"./getOwnObjectValues\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Repeat = Immutable.Repeat,\n Record = Immutable.Record;\n\nvar returnTrue = function returnTrue() {\n return true;\n};\n\nvar defaultLeafRange = {\n start: null,\n end: null\n};\nvar LeafRange = Record(defaultLeafRange);\nvar defaultDecoratorRange = {\n start: null,\n end: null,\n decoratorKey: null,\n leaves: null\n};\nvar DecoratorRange = Record(defaultDecoratorRange);\nvar BlockTree = {\n /**\n * Generate a block tree for a given ContentBlock/decorator pair.\n */\n generate: function generate(contentState, block, decorator) {\n var textLength = block.getLength();\n\n if (!textLength) {\n return List.of(new DecoratorRange({\n start: 0,\n end: 0,\n decoratorKey: null,\n leaves: List.of(new LeafRange({\n start: 0,\n end: 0\n }))\n }));\n }\n\n var leafSets = [];\n var decorations = decorator ? decorator.getDecorations(block, contentState) : List(Repeat(null, textLength));\n var chars = block.getCharacterList();\n findRangesImmutable(decorations, areEqual, returnTrue, function (start, end) {\n leafSets.push(new DecoratorRange({\n start: start,\n end: end,\n decoratorKey: decorations.get(start),\n leaves: generateLeaves(chars.slice(start, end).toList(), start)\n }));\n });\n return List(leafSets);\n },\n fromJS: function fromJS(_ref) {\n var leaves = _ref.leaves,\n other = _objectWithoutPropertiesLoose(_ref, [\"leaves\"]);\n\n return new DecoratorRange(_objectSpread({}, other, {\n leaves: leaves != null ? List(Array.isArray(leaves) ? leaves : getOwnObjectValues(leaves)).map(function (leaf) {\n return LeafRange(leaf);\n }) : null\n }));\n }\n};\n/**\n * Generate LeafRange records for a given character list.\n */\n\nfunction generateLeaves(characters, offset) {\n var leaves = [];\n var inlineStyles = characters.map(function (c) {\n return c.getStyle();\n }).toList();\n findRangesImmutable(inlineStyles, areEqual, returnTrue, function (start, end) {\n leaves.push(new LeafRange({\n start: start + offset,\n end: end + offset\n }));\n });\n return List(leaves);\n}\n\nfunction areEqual(a, b) {\n return a === b;\n}\n\nmodule.exports = BlockTree;","\"use strict\";\n\n/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @typechecks\n * \n * @format\n */\n\n/*eslint-disable no-bitwise */\n\n/**\n * Based on the rfc4122-compliant solution posted at\n * http://stackoverflow.com/questions/105034\n */\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c == 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n}\n\nmodule.exports = uuid;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeBidiService = require(\"fbjs/lib/UnicodeBidiService\");\n\nvar Immutable = require(\"immutable\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar OrderedMap = Immutable.OrderedMap;\nvar bidiService;\nvar EditorBidiService = {\n getDirectionMap: function getDirectionMap(content, prevBidiMap) {\n if (!bidiService) {\n bidiService = new UnicodeBidiService();\n } else {\n bidiService.reset();\n }\n\n var blockMap = content.getBlockMap();\n var nextBidi = blockMap.valueSeq().map(function (block) {\n return nullthrows(bidiService).getDirection(block.getText());\n });\n var bidiMap = OrderedMap(blockMap.keySeq().zip(nextBidi));\n\n if (prevBidiMap != null && Immutable.is(prevBidiMap, bidiMap)) {\n return prevBidiMap;\n }\n\n return bidiMap;\n }\n};\nmodule.exports = EditorBidiService;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Stateful API for text direction detection\n *\n * This class can be used in applications where you need to detect the\n * direction of a sequence of text blocks, where each direction shall be used\n * as the fallback direction for the next one.\n *\n * NOTE: A default direction, if not provided, is set based on the global\n * direction, as defined by `UnicodeBidiDirection`.\n *\n * == Example ==\n * ```\n * var UnicodeBidiService = require('UnicodeBidiService');\n *\n * var bidiService = new UnicodeBidiService();\n *\n * ...\n *\n * bidiService.reset();\n * for (var para in paragraphs) {\n * var dir = bidiService.getDirection(para);\n * ...\n * }\n * ```\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar UnicodeBidi = require(\"./UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\nvar UnicodeBidiService =\n/*#__PURE__*/\nfunction () {\n /**\n * Stateful class for paragraph direction detection\n *\n * @param defaultDir Default direction of the service\n */\n function UnicodeBidiService(defaultDir) {\n _defineProperty(this, \"_defaultDir\", void 0);\n\n _defineProperty(this, \"_lastDir\", void 0);\n\n if (!defaultDir) {\n defaultDir = UnicodeBidiDirection.getGlobalDir();\n } else {\n !UnicodeBidiDirection.isStrong(defaultDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Default direction must be a strong direction (LTR or RTL)') : invariant(false) : void 0;\n }\n\n this._defaultDir = defaultDir;\n this.reset();\n }\n /**\n * Reset the internal state\n *\n * Instead of creating a new instance, you can just reset() your instance\n * everytime you start a new loop.\n */\n\n\n var _proto = UnicodeBidiService.prototype;\n\n _proto.reset = function reset() {\n this._lastDir = this._defaultDir;\n };\n /**\n * Returns the direction of a block of text, and remembers it as the\n * fall-back direction for the next paragraph.\n *\n * @param str A text block, e.g. paragraph, table cell, tag\n * @return The resolved direction\n */\n\n\n _proto.getDirection = function getDirection(str) {\n this._lastDir = UnicodeBidi.getDirection(str, this._lastDir);\n return this._lastDir;\n };\n\n return UnicodeBidiService;\n}();\n\nmodule.exports = UnicodeBidiService;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = require(\"./getNextDelimiterBlockKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar OrderedMap = Immutable.OrderedMap,\n List = Immutable.List;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n if (!key) {\n return;\n }\n\n var block = blockMap.get(key);\n\n if (!block) {\n return;\n }\n\n blockMap.set(key, func(block));\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlockToBeMoved, originalTargetBlock, insertionMode, isExperimentalTreeBlock) {\n if (!isExperimentalTreeBlock) {\n return blockMap;\n } // possible values of 'insertionMode' are: 'after', 'before'\n\n\n var isInsertedAfterTarget = insertionMode === 'after';\n var originalBlockKey = originalBlockToBeMoved.getKey();\n var originalTargetKey = originalTargetBlock.getKey();\n var originalParentKey = originalBlockToBeMoved.getParentKey();\n var originalNextSiblingKey = originalBlockToBeMoved.getNextSiblingKey();\n var originalPrevSiblingKey = originalBlockToBeMoved.getPrevSiblingKey();\n var newParentKey = originalTargetBlock.getParentKey();\n var newNextSiblingKey = isInsertedAfterTarget ? originalTargetBlock.getNextSiblingKey() : originalTargetKey;\n var newPrevSiblingKey = isInsertedAfterTarget ? originalTargetKey : originalTargetBlock.getPrevSiblingKey();\n return blockMap.withMutations(function (blocks) {\n // update old parent\n transformBlock(originalParentKey, blocks, function (block) {\n var parentChildrenList = block.getChildKeys();\n return block.merge({\n children: parentChildrenList[\"delete\"](parentChildrenList.indexOf(originalBlockKey))\n });\n }); // update old prev\n\n transformBlock(originalPrevSiblingKey, blocks, function (block) {\n return block.merge({\n nextSibling: originalNextSiblingKey\n });\n }); // update old next\n\n transformBlock(originalNextSiblingKey, blocks, function (block) {\n return block.merge({\n prevSibling: originalPrevSiblingKey\n });\n }); // update new next\n\n transformBlock(newNextSiblingKey, blocks, function (block) {\n return block.merge({\n prevSibling: originalBlockKey\n });\n }); // update new prev\n\n transformBlock(newPrevSiblingKey, blocks, function (block) {\n return block.merge({\n nextSibling: originalBlockKey\n });\n }); // update new parent\n\n transformBlock(newParentKey, blocks, function (block) {\n var newParentChildrenList = block.getChildKeys();\n var targetBlockIndex = newParentChildrenList.indexOf(originalTargetKey);\n var insertionIndex = isInsertedAfterTarget ? targetBlockIndex + 1 : targetBlockIndex !== 0 ? targetBlockIndex - 1 : 0;\n var newChildrenArray = newParentChildrenList.toArray();\n newChildrenArray.splice(insertionIndex, 0, originalBlockKey);\n return block.merge({\n children: List(newChildrenArray)\n });\n }); // update block\n\n transformBlock(originalBlockKey, blocks, function (block) {\n return block.merge({\n nextSibling: newNextSiblingKey,\n prevSibling: newPrevSiblingKey,\n parent: newParentKey\n });\n });\n });\n};\n\nvar moveBlockInContentState = function moveBlockInContentState(contentState, blockToBeMoved, targetBlock, insertionMode) {\n !(insertionMode !== 'replace') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Replacing blocks is not supported.') : invariant(false) : void 0;\n var targetKey = targetBlock.getKey();\n var blockKey = blockToBeMoved.getKey();\n !(blockKey !== targetKey) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n var blockMap = contentState.getBlockMap();\n var isExperimentalTreeBlock = blockToBeMoved instanceof ContentBlockNode;\n var blocksToBeMoved = [blockToBeMoved];\n var blockMapWithoutBlocksToBeMoved = blockMap[\"delete\"](blockKey);\n\n if (isExperimentalTreeBlock) {\n blocksToBeMoved = [];\n blockMapWithoutBlocksToBeMoved = blockMap.withMutations(function (blocks) {\n var nextSiblingKey = blockToBeMoved.getNextSiblingKey();\n var nextDelimiterBlockKey = getNextDelimiterBlockKey(blockToBeMoved, blocks);\n blocks.toSeq().skipUntil(function (block) {\n return block.getKey() === blockKey;\n }).takeWhile(function (block) {\n var key = block.getKey();\n var isBlockToBeMoved = key === blockKey;\n var hasNextSiblingAndIsNotNextSibling = nextSiblingKey && key !== nextSiblingKey;\n var doesNotHaveNextSiblingAndIsNotDelimiter = !nextSiblingKey && block.getParentKey() && (!nextDelimiterBlockKey || key !== nextDelimiterBlockKey);\n return !!(isBlockToBeMoved || hasNextSiblingAndIsNotNextSibling || doesNotHaveNextSiblingAndIsNotDelimiter);\n }).forEach(function (block) {\n blocksToBeMoved.push(block);\n blocks[\"delete\"](block.getKey());\n });\n });\n }\n\n var blocksBefore = blockMapWithoutBlocksToBeMoved.toSeq().takeUntil(function (v) {\n return v === targetBlock;\n });\n var blocksAfter = blockMapWithoutBlocksToBeMoved.toSeq().skipUntil(function (v) {\n return v === targetBlock;\n }).skip(1);\n var slicedBlocks = blocksToBeMoved.map(function (block) {\n return [block.getKey(), block];\n });\n var newBlocks = OrderedMap();\n\n if (insertionMode === 'before') {\n var blockBefore = contentState.getBlockBefore(targetKey);\n !(!blockBefore || blockBefore.getKey() !== blockToBeMoved.getKey()) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n newBlocks = blocksBefore.concat([].concat(slicedBlocks, [[targetKey, targetBlock]]), blocksAfter).toOrderedMap();\n } else if (insertionMode === 'after') {\n var blockAfter = contentState.getBlockAfter(targetKey);\n !(!blockAfter || blockAfter.getKey() !== blockKey) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n newBlocks = blocksBefore.concat([[targetKey, targetBlock]].concat(slicedBlocks), blocksAfter).toOrderedMap();\n }\n\n return contentState.merge({\n blockMap: updateBlockMapLinks(newBlocks, blockToBeMoved, targetBlock, insertionMode, isExperimentalTreeBlock),\n selectionBefore: contentState.getSelectionAfter(),\n selectionAfter: contentState.getSelectionAfter().merge({\n anchorKey: blockKey,\n focusKey: blockKey\n })\n });\n};\n\nmodule.exports = moveBlockInContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List;\nvar DELIMITER = '.';\n/**\n * A CompositeDraftDecorator traverses through a list of DraftDecorator\n * instances to identify sections of a ContentBlock that should be rendered\n * in a \"decorated\" manner. For example, hashtags, mentions, and links may\n * be intended to stand out visually, be rendered as anchors, etc.\n *\n * The list of decorators supplied to the constructor will be used in the\n * order they are provided. This allows the caller to specify a priority for\n * string matching, in case of match collisions among decorators.\n *\n * For instance, I may have a link with a `#` in its text. Though this section\n * of text may match our hashtag decorator, it should not be treated as a\n * hashtag. I should therefore list my link DraftDecorator\n * before my hashtag DraftDecorator when constructing this composite\n * decorator instance.\n *\n * Thus, when a collision like this is encountered, the earlier match is\n * preserved and the new match is discarded.\n */\n\nvar CompositeDraftDecorator = /*#__PURE__*/function () {\n function CompositeDraftDecorator(decorators) {\n _defineProperty(this, \"_decorators\", void 0);\n\n // Copy the decorator array, since we use this array order to determine\n // precedence of decoration matching. If the array is mutated externally,\n // we don't want to be affected here.\n this._decorators = decorators.slice();\n }\n\n var _proto = CompositeDraftDecorator.prototype;\n\n _proto.getDecorations = function getDecorations(block, contentState) {\n var decorations = Array(block.getText().length).fill(null);\n\n this._decorators.forEach(function (\n /*object*/\n decorator,\n /*number*/\n ii) {\n var counter = 0;\n var strategy = decorator.strategy;\n\n var callback = function callback(\n /*number*/\n start,\n /*number*/\n end) {\n // Find out if any of our matching range is already occupied\n // by another decorator. If so, discard the match. Otherwise, store\n // the component key for rendering.\n if (canOccupySlice(decorations, start, end)) {\n occupySlice(decorations, start, end, ii + DELIMITER + counter);\n counter++;\n }\n };\n\n strategy(block, callback, contentState);\n });\n\n return List(decorations);\n };\n\n _proto.getComponentForKey = function getComponentForKey(key) {\n var componentKey = parseInt(key.split(DELIMITER)[0], 10);\n return this._decorators[componentKey].component;\n };\n\n _proto.getPropsForKey = function getPropsForKey(key) {\n var componentKey = parseInt(key.split(DELIMITER)[0], 10);\n return this._decorators[componentKey].props;\n };\n\n return CompositeDraftDecorator;\n}();\n/**\n * Determine whether we can occupy the specified slice of the decorations\n * array.\n */\n\n\nfunction canOccupySlice(decorations, start, end) {\n for (var ii = start; ii < end; ii++) {\n if (decorations[ii] != null) {\n return false;\n }\n }\n\n return true;\n}\n/**\n * Splice the specified component into our decoration array at the desired\n * range.\n */\n\n\nfunction occupySlice(targetArr, start, end, componentKey) {\n for (var ii = start; ii < end; ii++) {\n targetArr[ii] = componentKey;\n }\n}\n\nmodule.exports = CompositeDraftDecorator;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @preventMunge\n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DefaultDraftInlineStyle = require(\"./DefaultDraftInlineStyle\");\n\nvar DraftEditorCompositionHandler = require(\"./DraftEditorCompositionHandler\");\n\nvar DraftEditorContents = require(\"./DraftEditorContents.react\");\n\nvar DraftEditorDragHandler = require(\"./DraftEditorDragHandler\");\n\nvar DraftEditorEditHandler = require(\"./DraftEditorEditHandler\");\n\nvar flushControlled = require(\"./DraftEditorFlushControlled\");\n\nvar DraftEditorPlaceholder = require(\"./DraftEditorPlaceholder.react\");\n\nvar DraftEffects = require(\"./DraftEffects\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getDefaultKeyBinding = require(\"./getDefaultKeyBinding\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar gkx = require(\"./gkx\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isIE = UserAgent.isBrowser('IE'); // IE does not support the `input` event on contentEditable, so we can't\n// observe spellcheck behavior.\n\nvar allowSpellCheck = !isIE; // Define a set of handler objects to correspond to each possible `mode`\n// of editor behavior.\n\nvar handlerMap = {\n edit: DraftEditorEditHandler,\n composite: DraftEditorCompositionHandler,\n drag: DraftEditorDragHandler,\n cut: null,\n render: null\n};\nvar didInitODS = false;\n\nvar UpdateDraftEditorFlags = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(UpdateDraftEditorFlags, _React$Component);\n\n function UpdateDraftEditorFlags() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = UpdateDraftEditorFlags.prototype;\n\n _proto.render = function render() {\n return null;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._update();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this._update();\n };\n\n _proto._update = function _update() {\n var editor = this.props.editor;\n /**\n * Sometimes a render triggers a 'focus' or other event, and that will\n * schedule a second render pass.\n * In order to make sure the second render pass gets the latest editor\n * state, we update it here.\n * Example:\n * render #1\n * +\n * |\n * | cWU -> Nothing ... latestEditorState = STALE_STATE :(\n * |\n * | render -> this.props.editorState = FRESH_STATE\n * | + *and* set latestEditorState = FRESH_STATE\n * |\n * | |\n * | +--> triggers 'focus' event, calling 'handleFocus' with latestEditorState\n * | +\n * | |\n * +>cdU -> latestEditorState = FRESH_STATE | the 'handleFocus' call schedules render #2\n * | with latestEditorState, which is FRESH_STATE\n * |\n * render #2 <--------------------------------------+\n * +\n * |\n * | cwU -> nothing updates\n * |\n * | render -> this.props.editorState = FRESH_STATE which was passed in above\n * |\n * +>cdU fires and resets latestEditorState = FRESH_STATE\n * ---\n * Note that if we don't set latestEditorState in 'render' in the above\n * diagram, then STALE_STATE gets passed to render #2.\n */\n\n editor._latestEditorState = this.props.editorState;\n /**\n * The reason we set this 'blockSelectEvents' flag is that IE will fire a\n * 'selectionChange' event when we programmatically change the selection,\n * meaning it would trigger a new select event while we are in the middle\n * of updating.\n * We found that the 'selection.addRange' was what triggered the stray\n * selectionchange event in IE.\n * To be clear - we have not been able to reproduce specific bugs related\n * to this stray selection event, but have recorded logs that some\n * conditions do cause it to get bumped into during editOnSelect.\n */\n\n editor._blockSelectEvents = true;\n };\n\n return UpdateDraftEditorFlags;\n}(React.Component);\n/**\n * `DraftEditor` is the root editor component. It composes a `contentEditable`\n * div, and provides a wide variety of useful function props for managing the\n * state of the editor. See `DraftEditorProps` for details.\n */\n\n\nvar DraftEditor = /*#__PURE__*/function (_React$Component2) {\n _inheritsLoose(DraftEditor, _React$Component2);\n\n /**\n * Define proxies that can route events to the current handler.\n */\n function DraftEditor(props) {\n var _this;\n\n _this = _React$Component2.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"_blockSelectEvents\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_clipboard\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_handler\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_dragCount\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_internalDrag\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_editorKey\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_placeholderAccessibilityID\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_latestEditorState\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_latestCommittedEditorState\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_pendingStateFromBeforeInput\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onBeforeInput\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onBlur\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCharacterData\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCompositionEnd\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCompositionStart\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCopy\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCut\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragEnd\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragOver\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragStart\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDrop\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onInput\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onFocus\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyPress\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyUp\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onMouseDown\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onMouseUp\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onPaste\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onSelect\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"editor\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"editorContainer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"focus\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"blur\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"setMode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"exitCurrentMode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"restoreEditorDOM\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"setClipboard\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"getClipboard\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"getEditorKey\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"update\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_handleEditorContainerRef\", function (node) {\n _this.editorContainer = node; // Instead of having a direct ref on the child, we'll grab it here.\n // This is safe as long as the rendered structure is static (which it is).\n // This lets the child support ref={props.editorRef} without merging refs.\n\n _this.editor = node !== null ? node.firstChild : null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"focus\", function (scrollPosition) {\n var editorState = _this.props.editorState;\n var alreadyHasFocus = editorState.getSelection().getHasFocus();\n var editorNode = _this.editor;\n\n if (!editorNode) {\n // once in a while people call 'focus' in a setTimeout, and the node has\n // been deleted, so it can be null in that case.\n return;\n }\n\n var scrollParent = Style.getScrollParent(editorNode);\n\n var _ref = scrollPosition || getScrollPosition(scrollParent),\n x = _ref.x,\n y = _ref.y;\n\n !isHTMLElement(editorNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n editorNode.focus(); // Restore scroll position\n\n if (scrollParent === window) {\n window.scrollTo(x, y);\n } else {\n Scroll.setTop(scrollParent, y);\n } // On Chrome and Safari, calling focus on contenteditable focuses the\n // cursor at the first character. This is something you don't expect when\n // you're clicking on an input element but not directly on a character.\n // Put the cursor back where it was before the blur.\n\n\n if (!alreadyHasFocus) {\n _this.update(EditorState.forceSelection(editorState, editorState.getSelection()));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"blur\", function () {\n var editorNode = _this.editor;\n\n if (!editorNode) {\n return;\n }\n\n !isHTMLElement(editorNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n editorNode.blur();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setMode\", function (mode) {\n var _this$props = _this.props,\n onPaste = _this$props.onPaste,\n onCut = _this$props.onCut,\n onCopy = _this$props.onCopy;\n\n var editHandler = _objectSpread({}, handlerMap.edit);\n\n if (onPaste) {\n /* $FlowFixMe[incompatible-type] (>=0.117.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.117 was deployed. To see the\n * error delete this comment and run Flow. */\n editHandler.onPaste = onPaste;\n }\n\n if (onCut) {\n editHandler.onCut = onCut;\n }\n\n if (onCopy) {\n editHandler.onCopy = onCopy;\n }\n\n var handler = _objectSpread({}, handlerMap, {\n edit: editHandler\n });\n\n _this._handler = handler[mode];\n });\n\n _defineProperty(_assertThisInitialized(_this), \"exitCurrentMode\", function () {\n _this.setMode('edit');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"restoreEditorDOM\", function (scrollPosition) {\n _this.setState({\n contentsKey: _this.state.contentsKey + 1\n }, function () {\n _this.focus(scrollPosition);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setClipboard\", function (clipboard) {\n _this._clipboard = clipboard;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getClipboard\", function () {\n return _this._clipboard;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"update\", function (editorState) {\n _this._latestEditorState = editorState;\n\n _this.props.onChange(editorState);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", function () {\n _this._dragCount++;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", function () {\n _this._dragCount--;\n\n if (_this._dragCount === 0) {\n _this.exitCurrentMode();\n }\n });\n\n _this._blockSelectEvents = false;\n _this._clipboard = null;\n _this._handler = null;\n _this._dragCount = 0;\n _this._editorKey = props.editorKey || generateRandomKey();\n _this._placeholderAccessibilityID = 'placeholder-' + _this._editorKey;\n _this._latestEditorState = props.editorState;\n _this._latestCommittedEditorState = props.editorState;\n _this._onBeforeInput = _this._buildHandler('onBeforeInput');\n _this._onBlur = _this._buildHandler('onBlur');\n _this._onCharacterData = _this._buildHandler('onCharacterData');\n _this._onCompositionEnd = _this._buildHandler('onCompositionEnd');\n _this._onCompositionStart = _this._buildHandler('onCompositionStart');\n _this._onCopy = _this._buildHandler('onCopy');\n _this._onCut = _this._buildHandler('onCut');\n _this._onDragEnd = _this._buildHandler('onDragEnd');\n _this._onDragOver = _this._buildHandler('onDragOver');\n _this._onDragStart = _this._buildHandler('onDragStart');\n _this._onDrop = _this._buildHandler('onDrop');\n _this._onInput = _this._buildHandler('onInput');\n _this._onFocus = _this._buildHandler('onFocus');\n _this._onKeyDown = _this._buildHandler('onKeyDown');\n _this._onKeyPress = _this._buildHandler('onKeyPress');\n _this._onKeyUp = _this._buildHandler('onKeyUp');\n _this._onMouseDown = _this._buildHandler('onMouseDown');\n _this._onMouseUp = _this._buildHandler('onMouseUp');\n _this._onPaste = _this._buildHandler('onPaste');\n _this._onSelect = _this._buildHandler('onSelect');\n\n _this.getEditorKey = function () {\n return _this._editorKey;\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n ['onDownArrow', 'onEscape', 'onLeftArrow', 'onRightArrow', 'onTab', 'onUpArrow'].forEach(function (propName) {\n if (props.hasOwnProperty(propName)) {\n // eslint-disable-next-line no-console\n console.warn(\"Supplying an `\".concat(propName, \"` prop to `DraftEditor` has \") + 'been deprecated. If your handler needs access to the keyboard ' + 'event, supply a custom `keyBindingFn` prop that falls back to ' + 'the default one (eg. https://is.gd/wHKQ3W).');\n }\n });\n } // See `restoreEditorDOM()`.\n\n\n _this.state = {\n contentsKey: 0\n };\n return _this;\n }\n /**\n * Build a method that will pass the event to the specified handler method.\n * This allows us to look up the correct handler function for the current\n * editor mode, if any has been specified.\n */\n\n\n var _proto2 = DraftEditor.prototype;\n\n _proto2._buildHandler = function _buildHandler(eventName) {\n var _this2 = this;\n\n // Wrap event handlers in `flushControlled`. In sync mode, this is\n // effectively a no-op. In async mode, this ensures all updates scheduled\n // inside the handler are flushed before React yields to the browser.\n return function (e) {\n if (!_this2.props.readOnly) {\n var method = _this2._handler && _this2._handler[eventName];\n\n if (method) {\n if (flushControlled) {\n flushControlled(function () {\n return method(_this2, e);\n });\n } else {\n method(_this2, e);\n }\n }\n }\n };\n };\n\n _proto2._showPlaceholder = function _showPlaceholder() {\n return !!this.props.placeholder && !this.props.editorState.isInCompositionMode() && !this.props.editorState.getCurrentContent().hasText();\n };\n\n _proto2._renderPlaceholder = function _renderPlaceholder() {\n if (this._showPlaceholder()) {\n var placeHolderProps = {\n text: nullthrows(this.props.placeholder),\n editorState: this.props.editorState,\n textAlignment: this.props.textAlignment,\n accessibilityID: this._placeholderAccessibilityID\n };\n /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.112 was deployed. To see the\n * error delete this comment and run Flow. */\n\n return React.createElement(DraftEditorPlaceholder, placeHolderProps);\n }\n\n return null;\n }\n /**\n * returns ariaDescribedBy prop with '{{editor_id_placeholder}}' replaced with\n * the DOM id of the placeholder (if it exists)\n * @returns aria-describedby attribute value\n */\n ;\n\n _proto2._renderARIADescribedBy = function _renderARIADescribedBy() {\n var describedBy = this.props.ariaDescribedBy || '';\n var placeholderID = this._showPlaceholder() ? this._placeholderAccessibilityID : '';\n return describedBy.replace('{{editor_id_placeholder}}', placeholderID) || undefined;\n };\n\n _proto2.render = function render() {\n var _this$props2 = this.props,\n blockRenderMap = _this$props2.blockRenderMap,\n blockRendererFn = _this$props2.blockRendererFn,\n blockStyleFn = _this$props2.blockStyleFn,\n customStyleFn = _this$props2.customStyleFn,\n customStyleMap = _this$props2.customStyleMap,\n editorState = _this$props2.editorState,\n preventScroll = _this$props2.preventScroll,\n readOnly = _this$props2.readOnly,\n textAlignment = _this$props2.textAlignment,\n textDirectionality = _this$props2.textDirectionality;\n var rootClass = cx({\n 'DraftEditor/root': true,\n 'DraftEditor/alignLeft': textAlignment === 'left',\n 'DraftEditor/alignRight': textAlignment === 'right',\n 'DraftEditor/alignCenter': textAlignment === 'center'\n });\n var contentStyle = {\n outline: 'none',\n // fix parent-draggable Safari bug. #1326\n userSelect: 'text',\n WebkitUserSelect: 'text',\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word'\n }; // The aria-expanded and aria-haspopup properties should only be rendered\n // for a combobox.\n\n /* $FlowFixMe[prop-missing] (>=0.68.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the error\n * delete this comment and run Flow. */\n\n var ariaRole = this.props.role || 'textbox';\n var ariaExpanded = ariaRole === 'combobox' ? !!this.props.ariaExpanded : null;\n var editorContentsProps = {\n blockRenderMap: blockRenderMap,\n blockRendererFn: blockRendererFn,\n blockStyleFn: blockStyleFn,\n customStyleMap: _objectSpread({}, DefaultDraftInlineStyle, customStyleMap),\n customStyleFn: customStyleFn,\n editorKey: this._editorKey,\n editorState: editorState,\n preventScroll: preventScroll,\n textDirectionality: textDirectionality\n };\n return React.createElement(\"div\", {\n className: rootClass\n }, this._renderPlaceholder(), React.createElement(\"div\", {\n className: cx('DraftEditor/editorContainer'),\n ref: this._handleEditorContainerRef\n }, React.createElement(\"div\", {\n \"aria-activedescendant\": readOnly ? null : this.props.ariaActiveDescendantID,\n \"aria-autocomplete\": readOnly ? null : this.props.ariaAutoComplete,\n \"aria-controls\": readOnly ? null : this.props.ariaControls,\n \"aria-describedby\": this._renderARIADescribedBy(),\n \"aria-expanded\": readOnly ? null : ariaExpanded,\n \"aria-label\": this.props.ariaLabel,\n \"aria-labelledby\": this.props.ariaLabelledBy,\n \"aria-multiline\": this.props.ariaMultiline,\n \"aria-owns\": readOnly ? null : this.props.ariaOwneeID,\n autoCapitalize: this.props.autoCapitalize,\n autoComplete: this.props.autoComplete,\n autoCorrect: this.props.autoCorrect,\n className: cx({\n // Chrome's built-in translation feature mutates the DOM in ways\n // that Draft doesn't expect (ex: adding <font> tags inside\n // DraftEditorLeaf spans) and causes problems. We add notranslate\n // here which makes its autotranslation skip over this subtree.\n notranslate: !readOnly,\n 'public/DraftEditor/content': true\n }),\n contentEditable: !readOnly,\n \"data-testid\": this.props.webDriverTestID,\n onBeforeInput: this._onBeforeInput,\n onBlur: this._onBlur,\n onCompositionEnd: this._onCompositionEnd,\n onCompositionStart: this._onCompositionStart,\n onCopy: this._onCopy,\n onCut: this._onCut,\n onDragEnd: this._onDragEnd,\n onDragEnter: this.onDragEnter,\n onDragLeave: this.onDragLeave,\n onDragOver: this._onDragOver,\n onDragStart: this._onDragStart,\n onDrop: this._onDrop,\n onFocus: this._onFocus,\n onInput: this._onInput,\n onKeyDown: this._onKeyDown,\n onKeyPress: this._onKeyPress,\n onKeyUp: this._onKeyUp,\n onMouseUp: this._onMouseUp,\n onPaste: this._onPaste,\n onSelect: this._onSelect,\n ref: this.props.editorRef,\n role: readOnly ? null : ariaRole,\n spellCheck: allowSpellCheck && this.props.spellCheck,\n style: contentStyle,\n suppressContentEditableWarning: true,\n tabIndex: this.props.tabIndex\n }, React.createElement(UpdateDraftEditorFlags, {\n editor: this,\n editorState: editorState\n }), React.createElement(DraftEditorContents, _extends({}, editorContentsProps, {\n key: 'contents' + this.state.contentsKey\n })))));\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n this._blockSelectEvents = false;\n\n if (!didInitODS && gkx('draft_ods_enabled')) {\n didInitODS = true;\n DraftEffects.initODS();\n }\n\n this.setMode('edit');\n /**\n * IE has a hardcoded \"feature\" that attempts to convert link text into\n * anchors in contentEditable DOM. This breaks the editor's expectations of\n * the DOM, and control is lost. Disable it to make IE behave.\n * See: http://blogs.msdn.com/b/ieinternals/archive/2010/09/15/\n * ie9-beta-minor-change-list.aspx\n */\n\n if (isIE) {\n // editor can be null after mounting\n // https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback\n if (!this.editor) {\n global.execCommand('AutoUrlDetect', false, false);\n } else {\n this.editor.ownerDocument.execCommand('AutoUrlDetect', false, false);\n }\n }\n };\n\n _proto2.componentDidUpdate = function componentDidUpdate() {\n this._blockSelectEvents = false;\n this._latestEditorState = this.props.editorState;\n this._latestCommittedEditorState = this.props.editorState;\n }\n /**\n * Used via `this.focus()`.\n *\n * Force focus back onto the editor node.\n *\n * We attempt to preserve scroll position when focusing. You can also pass\n * a specified scroll position (for cases like `cut` behavior where it should\n * be restored to a known position).\n */\n ;\n\n return DraftEditor;\n}(React.Component);\n\n_defineProperty(DraftEditor, \"defaultProps\", {\n ariaDescribedBy: '{{editor_id_placeholder}}',\n blockRenderMap: DefaultDraftBlockRenderMap,\n blockRendererFn: function blockRendererFn() {\n return null;\n },\n blockStyleFn: function blockStyleFn() {\n return '';\n },\n keyBindingFn: getDefaultKeyBinding,\n readOnly: false,\n spellCheck: false,\n stripPastedStyles: false\n});\n\nmodule.exports = DraftEditor;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DOMObserver = require(\"./DOMObserver\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar editOnSelect = require(\"./editOnSelect\");\n\nvar getContentEditableContainer = require(\"./getContentEditableContainer\");\n\nvar getDraftEditorSelection = require(\"./getDraftEditorSelection\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isIE = UserAgent.isBrowser('IE');\n/**\n * Millisecond delay to allow `compositionstart` to fire again upon\n * `compositionend`.\n *\n * This is used for Korean input to ensure that typing can continue without\n * the editor trying to render too quickly. More specifically, Safari 7.1+\n * triggers `compositionstart` a little slower than Chrome/FF, which\n * leads to composed characters being resolved and re-render occurring\n * sooner than we want.\n */\n\nvar RESOLVE_DELAY = 20;\n/**\n * A handful of variables used to track the current composition and its\n * resolution status. These exist at the module level because it is not\n * possible to have compositions occurring in multiple editors simultaneously,\n * and it simplifies state management with respect to the DraftEditor component.\n */\n\nvar resolved = false;\nvar stillComposing = false;\nvar domObserver = null;\n\nfunction startDOMObserver(editor) {\n if (!domObserver) {\n domObserver = new DOMObserver(getContentEditableContainer(editor));\n domObserver.start();\n }\n}\n\nvar DraftEditorCompositionHandler = {\n /**\n * A `compositionstart` event has fired while we're still in composition\n * mode. Continue the current composition session to prevent a re-render.\n */\n onCompositionStart: function onCompositionStart(editor) {\n stillComposing = true;\n startDOMObserver(editor);\n },\n\n /**\n * Attempt to end the current composition session.\n *\n * Defer handling because browser will still insert the chars into active\n * element after `compositionend`. If a `compositionstart` event fires\n * before `resolveComposition` executes, our composition session will\n * continue.\n *\n * The `resolved` flag is useful because certain IME interfaces fire the\n * `compositionend` event multiple times, thus queueing up multiple attempts\n * at handling the composition. Since handling the same composition event\n * twice could break the DOM, we only use the first event. Example: Arabic\n * Google Input Tools on Windows 8.1 fires `compositionend` three times.\n */\n onCompositionEnd: function onCompositionEnd(editor) {\n resolved = false;\n stillComposing = false;\n setTimeout(function () {\n if (!resolved) {\n DraftEditorCompositionHandler.resolveComposition(editor);\n }\n }, RESOLVE_DELAY);\n },\n onSelect: editOnSelect,\n\n /**\n * In Safari, keydown events may fire when committing compositions. If\n * the arrow keys are used to commit, prevent default so that the cursor\n * doesn't move, otherwise it will jump back noticeably on re-render.\n */\n onKeyDown: function onKeyDown(editor, e) {\n if (!stillComposing) {\n // If a keydown event is received after compositionend but before the\n // 20ms timer expires (ex: type option-E then backspace, or type A then\n // backspace in 2-Set Korean), we should immediately resolve the\n // composition and reinterpret the key press in edit mode.\n DraftEditorCompositionHandler.resolveComposition(editor);\n\n editor._onKeyDown(e);\n\n return;\n }\n\n if (e.which === Keys.RIGHT || e.which === Keys.LEFT) {\n e.preventDefault();\n }\n },\n\n /**\n * Keypress events may fire when committing compositions. In Firefox,\n * pressing RETURN commits the composition and inserts extra newline\n * characters that we do not want. `preventDefault` allows the composition\n * to be committed while preventing the extra characters.\n */\n onKeyPress: function onKeyPress(_editor, e) {\n if (e.which === Keys.RETURN) {\n e.preventDefault();\n }\n },\n\n /**\n * Attempt to insert composed characters into the document.\n *\n * If we are still in a composition session, do nothing. Otherwise, insert\n * the characters into the document and terminate the composition session.\n *\n * If no characters were composed -- for instance, the user\n * deleted all composed characters and committed nothing new --\n * force a re-render. We also re-render when the composition occurs\n * at the beginning of a leaf, to ensure that if the browser has\n * created a new text node for the composition, we will discard it.\n *\n * Resetting innerHTML will move focus to the beginning of the editor,\n * so we update to force it back to the correct place.\n */\n resolveComposition: function resolveComposition(editor) {\n if (stillComposing) {\n return;\n }\n\n var mutations = nullthrows(domObserver).stopAndFlushMutations();\n domObserver = null;\n resolved = true;\n var editorState = EditorState.set(editor._latestEditorState, {\n inCompositionMode: false\n });\n editor.exitCurrentMode();\n\n if (!mutations.size) {\n editor.update(editorState);\n return;\n } // TODO, check if Facebook still needs this flag or if it could be removed.\n // Since there can be multiple mutations providing a `composedChars` doesn't\n // apply well on this new model.\n // if (\n // gkx('draft_handlebeforeinput_composed_text') &&\n // editor.props.handleBeforeInput &&\n // isEventHandled(\n // editor.props.handleBeforeInput(\n // composedChars,\n // editorState,\n // event.timeStamp,\n // ),\n // )\n // ) {\n // return;\n // }\n\n\n var contentState = editorState.getCurrentContent();\n mutations.forEach(function (composedChars, offsetKey) {\n var _DraftOffsetKey$decod = DraftOffsetKey.decode(offsetKey),\n blockKey = _DraftOffsetKey$decod.blockKey,\n decoratorKey = _DraftOffsetKey$decod.decoratorKey,\n leafKey = _DraftOffsetKey$decod.leafKey;\n\n var _editorState$getBlock = editorState.getBlockTree(blockKey).getIn([decoratorKey, 'leaves', leafKey]),\n start = _editorState$getBlock.start,\n end = _editorState$getBlock.end;\n\n var replacementRange = editorState.getSelection().merge({\n anchorKey: blockKey,\n focusKey: blockKey,\n anchorOffset: start,\n focusOffset: end,\n isBackward: false\n });\n var entityKey = getEntityKeyForSelection(contentState, replacementRange);\n var currentStyle = contentState.getBlockForKey(blockKey).getInlineStyleAt(start);\n contentState = DraftModifier.replaceText(contentState, replacementRange, composedChars, currentStyle, entityKey); // We need to update the editorState so the leaf node ranges are properly\n // updated and multiple mutations are correctly applied.\n\n editorState = EditorState.set(editorState, {\n currentContent: contentState\n });\n }); // When we apply the text changes to the ContentState, the selection always\n // goes to the end of the field, but it should just stay where it is\n // after compositionEnd.\n\n var documentSelection = getDraftEditorSelection(editorState, getContentEditableContainer(editor));\n var compositionEndSelectionState = documentSelection.selectionState;\n editor.restoreEditorDOM(); // See:\n // - https://github.com/facebook/draft-js/issues/2093\n // - https://github.com/facebook/draft-js/pull/2094\n // Apply this fix only in IE for now. We can test it in\n // other browsers in the future to ensure no regressions\n\n var editorStateWithUpdatedSelection = isIE ? EditorState.forceSelection(editorState, compositionEndSelectionState) : EditorState.acceptSelection(editorState, compositionEndSelectionState);\n editor.update(EditorState.push(editorStateWithUpdatedSelection, contentState, 'insert-characters'));\n }\n};\nmodule.exports = DraftEditorCompositionHandler;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getWindowForNode = require(\"./getWindowForNode\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar Map = Immutable.Map;\n// Heavily based on Prosemirror's DOMObserver https://github.com/ProseMirror/prosemirror-view/blob/master/src/domobserver.js\nvar DOM_OBSERVER_OPTIONS = {\n subtree: true,\n characterData: true,\n childList: true,\n characterDataOldValue: false,\n attributes: false\n}; // IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\n\nvar USE_CHAR_DATA = UserAgent.isBrowser('IE <= 11');\n\nvar DOMObserver = /*#__PURE__*/function () {\n function DOMObserver(container) {\n var _this = this;\n\n _defineProperty(this, \"observer\", void 0);\n\n _defineProperty(this, \"container\", void 0);\n\n _defineProperty(this, \"mutations\", void 0);\n\n _defineProperty(this, \"onCharData\", void 0);\n\n this.container = container;\n this.mutations = Map();\n var containerWindow = getWindowForNode(container);\n\n if (containerWindow.MutationObserver && !USE_CHAR_DATA) {\n this.observer = new containerWindow.MutationObserver(function (mutations) {\n return _this.registerMutations(mutations);\n });\n } else {\n this.onCharData = function (e) {\n !(e.target instanceof Node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected target to be an instance of Node') : invariant(false) : void 0;\n\n _this.registerMutation({\n type: 'characterData',\n target: e.target\n });\n };\n }\n }\n\n var _proto = DOMObserver.prototype;\n\n _proto.start = function start() {\n if (this.observer) {\n this.observer.observe(this.container, DOM_OBSERVER_OPTIONS);\n } else {\n /* $FlowFixMe[incompatible-call] (>=0.68.0 site=www,mobile) This event\n * type is not defined by Flow's standard library */\n this.container.addEventListener('DOMCharacterDataModified', this.onCharData);\n }\n };\n\n _proto.stopAndFlushMutations = function stopAndFlushMutations() {\n var observer = this.observer;\n\n if (observer) {\n this.registerMutations(observer.takeRecords());\n observer.disconnect();\n } else {\n /* $FlowFixMe[incompatible-call] (>=0.68.0 site=www,mobile) This event\n * type is not defined by Flow's standard library */\n this.container.removeEventListener('DOMCharacterDataModified', this.onCharData);\n }\n\n var mutations = this.mutations;\n this.mutations = Map();\n return mutations;\n };\n\n _proto.registerMutations = function registerMutations(mutations) {\n for (var i = 0; i < mutations.length; i++) {\n this.registerMutation(mutations[i]);\n }\n };\n\n _proto.getMutationTextContent = function getMutationTextContent(mutation) {\n var type = mutation.type,\n target = mutation.target,\n removedNodes = mutation.removedNodes;\n\n if (type === 'characterData') {\n // When `textContent` is '', there is a race condition that makes\n // getting the offsetKey from the target not possible.\n // These events are also followed by a `childList`, which is the one\n // we are able to retrieve the offsetKey and apply the '' text.\n if (target.textContent !== '') {\n // IE 11 considers the enter keypress that concludes the composition\n // as an input char. This strips that newline character so the draft\n // state does not receive spurious newlines.\n if (USE_CHAR_DATA) {\n return target.textContent.replace('\\n', '');\n }\n\n return target.textContent;\n }\n } else if (type === 'childList') {\n if (removedNodes && removedNodes.length) {\n // `characterData` events won't happen or are ignored when\n // removing the last character of a leaf node, what happens\n // instead is a `childList` event with a `removedNodes` array.\n // For this case the textContent should be '' and\n // `DraftModifier.replaceText` will make sure the content is\n // updated properly.\n return '';\n } else if (target.textContent !== '') {\n // Typing Chinese in an empty block in MS Edge results in a\n // `childList` event with non-empty textContent.\n // See https://github.com/facebook/draft-js/issues/2082\n return target.textContent;\n }\n }\n\n return null;\n };\n\n _proto.registerMutation = function registerMutation(mutation) {\n var textContent = this.getMutationTextContent(mutation);\n\n if (textContent != null) {\n var offsetKey = nullthrows(findAncestorOffsetKey(mutation.target));\n this.mutations = this.mutations.set(offsetKey, textContent);\n }\n };\n\n return DOMObserver;\n}();\n\nmodule.exports = DOMObserver;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Usage note:\n * This module makes a best effort to export the same data we would internally.\n * At Facebook we use a server-generated module that does the parsing and\n * exports the data for the client to use. We can't rely on a server-side\n * implementation in open source so instead we make use of an open source\n * library to do the heavy lifting and then make some adjustments as necessary.\n * It's likely there will be some differences. Some we can smooth over.\n * Others are going to be harder.\n */\n'use strict';\n\nvar UAParser = require(\"ua-parser-js\");\n\nvar UNKNOWN = 'Unknown';\nvar PLATFORM_MAP = {\n 'Mac OS': 'Mac OS X'\n};\n/**\n * Convert from UAParser platform name to what we expect.\n */\n\nfunction convertPlatformName(name) {\n return PLATFORM_MAP[name] || name;\n}\n/**\n * Get the version number in parts. This is very naive. We actually get major\n * version as a part of UAParser already, which is generally good enough, but\n * let's get the minor just in case.\n */\n\n\nfunction getBrowserVersion(version) {\n if (!version) {\n return {\n major: '',\n minor: ''\n };\n }\n\n var parts = version.split('.');\n return {\n major: parts[0],\n minor: parts[1]\n };\n}\n/**\n * Get the UA data fom UAParser and then convert it to the format we're\n * expecting for our APIS.\n */\n\n\nvar parser = new UAParser();\nvar results = parser.getResult(); // Do some conversion first.\n\nvar browserVersionData = getBrowserVersion(results.browser.version);\nvar uaData = {\n browserArchitecture: results.cpu.architecture || UNKNOWN,\n browserFullVersion: results.browser.version || UNKNOWN,\n browserMinorVersion: browserVersionData.minor || UNKNOWN,\n browserName: results.browser.name || UNKNOWN,\n browserVersion: results.browser.major || UNKNOWN,\n deviceName: results.device.model || UNKNOWN,\n engineName: results.engine.name || UNKNOWN,\n engineVersion: results.engine.version || UNKNOWN,\n platformArchitecture: results.cpu.architecture || UNKNOWN,\n platformName: convertPlatformName(results.os.name) || UNKNOWN,\n platformVersion: results.os.version || UNKNOWN,\n platformFullVersion: results.os.version || UNKNOWN\n};\nmodule.exports = uaData;","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v0.7.31\n Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.31',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 255;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i<arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n lowerize = function (str) {\n return str.toLowerCase();\n },\n majorize = function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split('.')[0] : undefined;\n },\n trim = function (str, len) {\n if (typeof(str) === STR_TYPE) {\n str = str.replace(/^\\s\\s*/, EMPTY).replace(/\\s\\s*$/, EMPTY);\n return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /\\bqbcore\\/([\\w\\.]+)/i // WeChat Desktop for Windows Built-in Browser\n ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /yabrowser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 '+BROWSER]], [\n /(oculus|samsung|sailfish)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish Browser\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/Baidu App/2345 Browser\n ], [NAME, VERSION], [\n /(metasr)[\\/ ]?([\\w\\.]+)/i, // SouGouBrowser\n /(lbbrowser)/i // LieBao Browser\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w\\.]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, VERSION]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n // Ordered by popularity\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[pt]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /\\((ip(?:hone|od)[\\w ]*);/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}-[atu]?[ln][01259x][012359][an]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+)(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ ([c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi)( bui|\\))/i, // Kindle Fire without Silk\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w ]*; *(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( 2)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows) nt 6\\.2; (arm)/i, // Windows RT\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i, // Windows Phone\n /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+ ([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser.major = majorize(_browser.version);\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar componentRegex = /\\./;\nvar orRegex = /\\|\\|/;\nvar rangeRegex = /\\s+\\-\\s+/;\nvar modifierRegex = /^(<=|<|=|>=|~>|~|>|)?\\s*(.+)/;\nvar numericRegex = /^(\\d*)(.*)/;\n/**\n * Splits input `range` on \"||\" and returns true if any subrange matches\n * `version`.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\nfunction checkOrExpression(range, version) {\n var expressions = range.split(orRegex);\n\n if (expressions.length > 1) {\n return expressions.some(function (range) {\n return VersionRange.contains(range, version);\n });\n } else {\n range = expressions[0].trim();\n return checkRangeExpression(range, version);\n }\n}\n/**\n * Splits input `range` on \" - \" (the surrounding whitespace is required) and\n * returns true if version falls between the two operands.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkRangeExpression(range, version) {\n var expressions = range.split(rangeRegex);\n !(expressions.length > 0 && expressions.length <= 2) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'the \"-\" operator expects exactly 2 operands') : invariant(false) : void 0;\n\n if (expressions.length === 1) {\n return checkSimpleExpression(expressions[0], version);\n } else {\n var startVersion = expressions[0],\n endVersion = expressions[1];\n !(isSimpleVersion(startVersion) && isSimpleVersion(endVersion)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'operands to the \"-\" operator must be simple (no modifiers)') : invariant(false) : void 0;\n return checkSimpleExpression('>=' + startVersion, version) && checkSimpleExpression('<=' + endVersion, version);\n }\n}\n/**\n * Checks if `range` matches `version`. `range` should be a \"simple\" range (ie.\n * not a compound range using the \" - \" or \"||\" operators).\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkSimpleExpression(range, version) {\n range = range.trim();\n\n if (range === '') {\n return true;\n }\n\n var versionComponents = version.split(componentRegex);\n\n var _getModifierAndCompon = getModifierAndComponents(range),\n modifier = _getModifierAndCompon.modifier,\n rangeComponents = _getModifierAndCompon.rangeComponents;\n\n switch (modifier) {\n case '<':\n return checkLessThan(versionComponents, rangeComponents);\n\n case '<=':\n return checkLessThanOrEqual(versionComponents, rangeComponents);\n\n case '>=':\n return checkGreaterThanOrEqual(versionComponents, rangeComponents);\n\n case '>':\n return checkGreaterThan(versionComponents, rangeComponents);\n\n case '~':\n case '~>':\n return checkApproximateVersion(versionComponents, rangeComponents);\n\n default:\n return checkEqual(versionComponents, rangeComponents);\n }\n}\n/**\n * Checks whether `a` is less than `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThan(a, b) {\n return compareComponents(a, b) === -1;\n}\n/**\n * Checks whether `a` is less than or equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThanOrEqual(a, b) {\n var result = compareComponents(a, b);\n return result === -1 || result === 0;\n}\n/**\n * Checks whether `a` is equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkEqual(a, b) {\n return compareComponents(a, b) === 0;\n}\n/**\n * Checks whether `a` is greater than or equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThanOrEqual(a, b) {\n var result = compareComponents(a, b);\n return result === 1 || result === 0;\n}\n/**\n * Checks whether `a` is greater than `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThan(a, b) {\n return compareComponents(a, b) === 1;\n}\n/**\n * Checks whether `a` is \"reasonably close\" to `b` (as described in\n * https://www.npmjs.org/doc/misc/semver.html). For example, if `b` is \"1.3.1\"\n * then \"reasonably close\" is defined as \">= 1.3.1 and < 1.4\".\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkApproximateVersion(a, b) {\n var lowerBound = b.slice();\n var upperBound = b.slice();\n\n if (upperBound.length > 1) {\n upperBound.pop();\n }\n\n var lastIndex = upperBound.length - 1;\n var numeric = parseInt(upperBound[lastIndex], 10);\n\n if (isNumber(numeric)) {\n upperBound[lastIndex] = numeric + 1 + '';\n }\n\n return checkGreaterThanOrEqual(a, lowerBound) && checkLessThan(a, upperBound);\n}\n/**\n * Extracts the optional modifier (<, <=, =, >=, >, ~, ~>) and version\n * components from `range`.\n *\n * For example, given `range` \">= 1.2.3\" returns an object with a `modifier` of\n * `\">=\"` and `components` of `[1, 2, 3]`.\n *\n * @param {string} range\n * @returns {object}\n */\n\n\nfunction getModifierAndComponents(range) {\n var rangeComponents = range.split(componentRegex);\n var matches = rangeComponents[0].match(modifierRegex);\n !matches ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'expected regex to match but it did not') : invariant(false) : void 0;\n return {\n modifier: matches[1],\n rangeComponents: [matches[2]].concat(rangeComponents.slice(1))\n };\n}\n/**\n * Determines if `number` is a number.\n *\n * @param {mixed} number\n * @returns {boolean}\n */\n\n\nfunction isNumber(number) {\n return !isNaN(number) && isFinite(number);\n}\n/**\n * Tests whether `range` is a \"simple\" version number without any modifiers\n * (\">\", \"~\" etc).\n *\n * @param {string} range\n * @returns {boolean}\n */\n\n\nfunction isSimpleVersion(range) {\n return !getModifierAndComponents(range).modifier;\n}\n/**\n * Zero-pads array `array` until it is at least `length` long.\n *\n * @param {array} array\n * @param {number} length\n */\n\n\nfunction zeroPad(array, length) {\n for (var i = array.length; i < length; i++) {\n array[i] = '0';\n }\n}\n/**\n * Normalizes `a` and `b` in preparation for comparison by doing the following:\n *\n * - zero-pads `a` and `b`\n * - marks any \"x\", \"X\" or \"*\" component in `b` as equivalent by zero-ing it out\n * in both `a` and `b`\n * - marks any final \"*\" component in `b` as a greedy wildcard by zero-ing it\n * and all of its successors in `a`\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {array<array<string>>}\n */\n\n\nfunction normalizeVersions(a, b) {\n a = a.slice();\n b = b.slice();\n zeroPad(a, b.length); // mark \"x\" and \"*\" components as equal\n\n for (var i = 0; i < b.length; i++) {\n var matches = b[i].match(/^[x*]$/i);\n\n if (matches) {\n b[i] = a[i] = '0'; // final \"*\" greedily zeros all remaining components\n\n if (matches[0] === '*' && i === b.length - 1) {\n for (var j = i; j < a.length; j++) {\n a[j] = '0';\n }\n }\n }\n }\n\n zeroPad(b, a.length);\n return [a, b];\n}\n/**\n * Returns the numerical -- not the lexicographical -- ordering of `a` and `b`.\n *\n * For example, `10-alpha` is greater than `2-beta`.\n *\n * @param {string} a\n * @param {string} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareNumeric(a, b) {\n var aPrefix = a.match(numericRegex)[1];\n var bPrefix = b.match(numericRegex)[1];\n var aNumeric = parseInt(aPrefix, 10);\n var bNumeric = parseInt(bPrefix, 10);\n\n if (isNumber(aNumeric) && isNumber(bNumeric) && aNumeric !== bNumeric) {\n return compare(aNumeric, bNumeric);\n } else {\n return compare(a, b);\n }\n}\n/**\n * Returns the ordering of `a` and `b`.\n *\n * @param {string|number} a\n * @param {string|number} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compare(a, b) {\n !(typeof a === typeof b) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '\"a\" and \"b\" must be of the same type') : invariant(false) : void 0;\n\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else {\n return 0;\n }\n}\n/**\n * Compares arrays of version components.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareComponents(a, b) {\n var _normalizeVersions = normalizeVersions(a, b),\n aNormalized = _normalizeVersions[0],\n bNormalized = _normalizeVersions[1];\n\n for (var i = 0; i < bNormalized.length; i++) {\n var result = compareNumeric(aNormalized[i], bNormalized[i]);\n\n if (result) {\n return result;\n }\n }\n\n return 0;\n}\n\nvar VersionRange = {\n /**\n * Checks whether `version` satisfies the `range` specification.\n *\n * We support a subset of the expressions defined in\n * https://www.npmjs.org/doc/misc/semver.html:\n *\n * version Must match version exactly\n * =version Same as just version\n * >version Must be greater than version\n * >=version Must be greater than or equal to version\n * <version Must be less than version\n * <=version Must be less than or equal to version\n * ~version Must be at least version, but less than the next significant\n * revision above version:\n * \"~1.2.3\" is equivalent to \">= 1.2.3 and < 1.3\"\n * ~>version Equivalent to ~version\n * 1.2.x Must match \"1.2.x\", where \"x\" is a wildcard that matches\n * anything\n * 1.2.* Similar to \"1.2.x\", but \"*\" in the trailing position is a\n * \"greedy\" wildcard, so will match any number of additional\n * components:\n * \"1.2.*\" will match \"1.2.1\", \"1.2.1.1\", \"1.2.1.1.1\" etc\n * * Any version\n * \"\" (Empty string) Same as *\n * v1 - v2 Equivalent to \">= v1 and <= v2\"\n * r1 || r2 Passes if either r1 or r2 are satisfied\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n contains: function contains(range, version) {\n return checkOrExpression(range.trim(), version.trim());\n }\n};\nmodule.exports = VersionRange;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Executes the provided `callback` once for each enumerable own property in the\n * object and constructs a new object from the results. The `callback` is\n * invoked with three arguments:\n *\n * - the property value\n * - the property name\n * - the object being traversed\n *\n * Properties that are added after the call to `mapObject` will not be visited\n * by `callback`. If the values of existing properties are changed, the value\n * passed to `callback` will be the value at the time `mapObject` visits them.\n * Properties that are deleted before being visited are not visited.\n *\n * @grep function objectMap()\n * @grep function objMap()\n *\n * @param {?object} object\n * @param {function} callback\n * @param {*} context\n * @return {?object}\n */\n\nfunction mapObject(object, callback, context) {\n if (!object) {\n return null;\n }\n\n var result = {};\n\n for (var name in object) {\n if (hasOwnProperty.call(object, name)) {\n result[name] = callback.call(context, object[name], name, object);\n }\n }\n\n return result;\n}\n\nmodule.exports = mapObject;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nvar gkx = require(\"./gkx\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nmodule.exports = experimentalTreeDataSupport ? require(\"./DraftEditorContentsExperimental.react\") : require(\"./DraftEditorContents-core.react\");","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of DraftEditorContents.react.js for tree nodes\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorBlockNode = require(\"./DraftEditorBlockNode.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * `DraftEditorContents` is the container component for all block components\n * rendered for a `DraftEditor`. It is optimized to aggressively avoid\n * re-rendering blocks whenever possible.\n *\n * This component is separate from `DraftEditor` because certain props\n * (for instance, ARIA props) must be allowed to update without affecting\n * the contents of the editor.\n */\nvar DraftEditorContentsExperimental = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorContentsExperimental, _React$Component);\n\n function DraftEditorContentsExperimental() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorContentsExperimental.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var prevEditorState = this.props.editorState;\n var nextEditorState = nextProps.editorState;\n var prevDirectionMap = prevEditorState.getDirectionMap();\n var nextDirectionMap = nextEditorState.getDirectionMap(); // Text direction has changed for one or more blocks. We must re-render.\n\n if (prevDirectionMap !== nextDirectionMap) {\n return true;\n }\n\n var didHaveFocus = prevEditorState.getSelection().getHasFocus();\n var nowHasFocus = nextEditorState.getSelection().getHasFocus();\n\n if (didHaveFocus !== nowHasFocus) {\n return true;\n }\n\n var nextNativeContent = nextEditorState.getNativelyRenderedContent();\n var wasComposing = prevEditorState.isInCompositionMode();\n var nowComposing = nextEditorState.isInCompositionMode(); // If the state is unchanged or we're currently rendering a natively\n // rendered state, there's nothing new to be done.\n\n if (prevEditorState === nextEditorState || nextNativeContent !== null && nextEditorState.getCurrentContent() === nextNativeContent || wasComposing && nowComposing) {\n return false;\n }\n\n var prevContent = prevEditorState.getCurrentContent();\n var nextContent = nextEditorState.getCurrentContent();\n var prevDecorator = prevEditorState.getDecorator();\n var nextDecorator = nextEditorState.getDecorator();\n return wasComposing !== nowComposing || prevContent !== nextContent || prevDecorator !== nextDecorator || nextEditorState.mustForceSelection();\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n blockRenderMap = _this$props.blockRenderMap,\n blockRendererFn = _this$props.blockRendererFn,\n blockStyleFn = _this$props.blockStyleFn,\n customStyleMap = _this$props.customStyleMap,\n customStyleFn = _this$props.customStyleFn,\n editorState = _this$props.editorState,\n editorKey = _this$props.editorKey,\n textDirectionality = _this$props.textDirectionality;\n var content = editorState.getCurrentContent();\n var selection = editorState.getSelection();\n var forceSelection = editorState.mustForceSelection();\n var decorator = editorState.getDecorator();\n var directionMap = nullthrows(editorState.getDirectionMap());\n var blocksAsArray = content.getBlocksAsArray();\n var rootBlock = blocksAsArray[0];\n var processedBlocks = [];\n var nodeBlock = rootBlock;\n\n while (nodeBlock) {\n var blockKey = nodeBlock.getKey();\n var blockProps = {\n blockRenderMap: blockRenderMap,\n blockRendererFn: blockRendererFn,\n blockStyleFn: blockStyleFn,\n contentState: content,\n customStyleFn: customStyleFn,\n customStyleMap: customStyleMap,\n decorator: decorator,\n editorKey: editorKey,\n editorState: editorState,\n forceSelection: forceSelection,\n selection: selection,\n block: nodeBlock,\n direction: textDirectionality ? textDirectionality : directionMap.get(blockKey),\n tree: editorState.getBlockTree(blockKey)\n };\n var configForType = blockRenderMap.get(nodeBlock.getType()) || blockRenderMap.get('unstyled');\n var wrapperTemplate = configForType.wrapper;\n processedBlocks.push({\n /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This\n * comment suppresses an error found when Flow v0.112 was deployed. To\n * see the error delete this comment and run Flow. */\n block: React.createElement(DraftEditorBlockNode, _extends({\n key: blockKey\n }, blockProps)),\n wrapperTemplate: wrapperTemplate,\n key: blockKey,\n offsetKey: DraftOffsetKey.encode(blockKey, 0, 0)\n });\n var nextBlockKey = nodeBlock.getNextSiblingKey();\n nodeBlock = nextBlockKey ? content.getBlockForKey(nextBlockKey) : null;\n } // Group contiguous runs of blocks that have the same wrapperTemplate\n\n\n var outputBlocks = [];\n\n for (var ii = 0; ii < processedBlocks.length;) {\n var info = processedBlocks[ii];\n\n if (info.wrapperTemplate) {\n var blocks = [];\n\n do {\n blocks.push(processedBlocks[ii].block);\n ii++;\n } while (ii < processedBlocks.length && processedBlocks[ii].wrapperTemplate === info.wrapperTemplate);\n\n var wrapperElement = React.cloneElement(info.wrapperTemplate, {\n key: info.key + '-wrap',\n 'data-offset-key': info.offsetKey\n }, blocks);\n outputBlocks.push(wrapperElement);\n } else {\n outputBlocks.push(info.block);\n ii++;\n }\n }\n\n return React.createElement(\"div\", {\n \"data-contents\": \"true\"\n }, outputBlocks);\n };\n\n return DraftEditorContentsExperimental;\n}(React.Component);\n\nmodule.exports = DraftEditorContentsExperimental;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of DraftEditorBlock.react.js and DraftEditorContents.react.js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorNode = require(\"./DraftEditorNode.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar getElementPosition = require(\"fbjs/lib/getElementPosition\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar getViewportDimensions = require(\"fbjs/lib/getViewportDimensions\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar SCROLL_BUFFER = 10;\nvar List = Immutable.List; // we should harden up the bellow flow types to make them more strict\n\n/**\n * Return whether a block overlaps with either edge of the `SelectionState`.\n */\nvar isBlockOnSelectionEdge = function isBlockOnSelectionEdge(selection, key) {\n return selection.getAnchorKey() === key || selection.getFocusKey() === key;\n};\n/**\n * We will use this helper to identify blocks that need to be wrapped but have siblings that\n * also share the same wrapper element, this way we can do the wrapping once the last sibling\n * is added.\n */\n\n\nvar shouldNotAddWrapperElement = function shouldNotAddWrapperElement(block, contentState) {\n var nextSiblingKey = block.getNextSiblingKey();\n return nextSiblingKey ? contentState.getBlockForKey(nextSiblingKey).getType() === block.getType() : false;\n};\n\nvar applyWrapperElementToSiblings = function applyWrapperElementToSiblings(wrapperTemplate, Element, nodes) {\n var wrappedSiblings = []; // we check back until we find a sibling that does not have same wrapper\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = nodes.reverse()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var sibling = _step.value;\n\n if (sibling.type !== Element) {\n break;\n }\n\n wrappedSiblings.push(sibling);\n } // we now should remove from acc the wrappedSiblings and add them back under same wrap\n\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n nodes.splice(nodes.indexOf(wrappedSiblings[0]), wrappedSiblings.length + 1);\n var childrenIs = wrappedSiblings.reverse();\n var key = childrenIs[0].key;\n nodes.push(React.cloneElement(wrapperTemplate, {\n key: \"\".concat(key, \"-wrap\"),\n 'data-offset-key': DraftOffsetKey.encode(key, 0, 0)\n }, childrenIs));\n return nodes;\n};\n\nvar getDraftRenderConfig = function getDraftRenderConfig(block, blockRenderMap) {\n var configForType = blockRenderMap.get(block.getType()) || blockRenderMap.get('unstyled');\n var wrapperTemplate = configForType.wrapper;\n var Element = configForType.element || blockRenderMap.get('unstyled').element;\n return {\n Element: Element,\n wrapperTemplate: wrapperTemplate\n };\n};\n\nvar getCustomRenderConfig = function getCustomRenderConfig(block, blockRendererFn) {\n var customRenderer = blockRendererFn(block);\n\n if (!customRenderer) {\n return {};\n }\n\n var CustomComponent = customRenderer.component,\n customProps = customRenderer.props,\n customEditable = customRenderer.editable;\n return {\n CustomComponent: CustomComponent,\n customProps: customProps,\n customEditable: customEditable\n };\n};\n\nvar getElementPropsConfig = function getElementPropsConfig(block, editorKey, offsetKey, blockStyleFn, customConfig, ref) {\n var elementProps = {\n 'data-block': true,\n 'data-editor': editorKey,\n 'data-offset-key': offsetKey,\n key: block.getKey(),\n ref: ref\n };\n var customClass = blockStyleFn(block);\n\n if (customClass) {\n elementProps.className = customClass;\n }\n\n if (customConfig.customEditable !== undefined) {\n elementProps = _objectSpread({}, elementProps, {\n contentEditable: customConfig.customEditable,\n suppressContentEditableWarning: true\n });\n }\n\n return elementProps;\n};\n\nvar DraftEditorBlockNode = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorBlockNode, _React$Component);\n\n function DraftEditorBlockNode() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"wrapperRef\", React.createRef());\n\n return _this;\n }\n\n var _proto = DraftEditorBlockNode.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var _this$props = this.props,\n block = _this$props.block,\n direction = _this$props.direction,\n tree = _this$props.tree;\n var isContainerNode = !block.getChildKeys().isEmpty();\n var blockHasChanged = block !== nextProps.block || tree !== nextProps.tree || direction !== nextProps.direction || isBlockOnSelectionEdge(nextProps.selection, nextProps.block.getKey()) && nextProps.forceSelection; // if we have children at this stage we always re-render container nodes\n // else if its a root node we avoid re-rendering by checking for block updates\n\n return isContainerNode || blockHasChanged;\n }\n /**\n * When a block is mounted and overlaps the selection state, we need to make\n * sure that the cursor is visible to match native behavior. This may not\n * be the case if the user has pressed `RETURN` or pasted some content, since\n * programatically creating these new blocks and setting the DOM selection\n * will miss out on the browser natively scrolling to that position.\n *\n * To replicate native behavior, if the block overlaps the selection state\n * on mount, force the scroll position. Check the scroll state of the scroll\n * parent, and adjust it to align the entire block to the bottom of the\n * scroll parent.\n */\n ;\n\n _proto.componentDidMount = function componentDidMount() {\n var selection = this.props.selection;\n var endKey = selection.getEndKey();\n\n if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n return;\n }\n\n var blockNode = this.wrapperRef.current;\n\n if (!blockNode) {\n // This Block Node was rendered without a wrapper element.\n return;\n }\n\n var scrollParent = Style.getScrollParent(blockNode);\n var scrollPosition = getScrollPosition(scrollParent);\n var scrollDelta;\n\n if (scrollParent === window) {\n var nodePosition = getElementPosition(blockNode);\n var nodeBottom = nodePosition.y + nodePosition.height;\n var viewportHeight = getViewportDimensions().height;\n scrollDelta = nodeBottom - viewportHeight;\n\n if (scrollDelta > 0) {\n window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n }\n } else {\n !isHTMLElement(blockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'blockNode is not an HTMLElement') : invariant(false) : void 0;\n var htmlBlockNode = blockNode;\n var blockBottom = htmlBlockNode.offsetHeight + htmlBlockNode.offsetTop;\n var scrollBottom = scrollParent.offsetHeight + scrollPosition.y;\n scrollDelta = blockBottom - scrollBottom;\n\n if (scrollDelta > 0) {\n Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n }\n }\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n block = _this$props2.block,\n blockRenderMap = _this$props2.blockRenderMap,\n blockRendererFn = _this$props2.blockRendererFn,\n blockStyleFn = _this$props2.blockStyleFn,\n contentState = _this$props2.contentState,\n decorator = _this$props2.decorator,\n editorKey = _this$props2.editorKey,\n editorState = _this$props2.editorState,\n customStyleFn = _this$props2.customStyleFn,\n customStyleMap = _this$props2.customStyleMap,\n direction = _this$props2.direction,\n forceSelection = _this$props2.forceSelection,\n selection = _this$props2.selection,\n tree = _this$props2.tree;\n var children = null;\n\n if (block.children.size) {\n children = block.children.reduce(function (acc, key) {\n var offsetKey = DraftOffsetKey.encode(key, 0, 0);\n var child = contentState.getBlockForKey(key);\n var customConfig = getCustomRenderConfig(child, blockRendererFn);\n var Component = customConfig.CustomComponent || DraftEditorBlockNode;\n\n var _getDraftRenderConfig = getDraftRenderConfig(child, blockRenderMap),\n Element = _getDraftRenderConfig.Element,\n wrapperTemplate = _getDraftRenderConfig.wrapperTemplate;\n\n var elementProps = getElementPropsConfig(child, editorKey, offsetKey, blockStyleFn, customConfig, null);\n\n var childProps = _objectSpread({}, _this2.props, {\n tree: editorState.getBlockTree(key),\n blockProps: customConfig.customProps,\n offsetKey: offsetKey,\n block: child\n });\n\n acc.push(React.createElement(Element, elementProps, React.createElement(Component, childProps)));\n\n if (!wrapperTemplate || shouldNotAddWrapperElement(child, contentState)) {\n return acc;\n } // if we are here it means we are the last block\n // that has a wrapperTemplate so we should wrap itself\n // and all other previous siblings that share the same wrapper\n\n\n applyWrapperElementToSiblings(wrapperTemplate, Element, acc);\n return acc;\n }, []);\n }\n\n var blockKey = block.getKey();\n var offsetKey = DraftOffsetKey.encode(blockKey, 0, 0);\n var customConfig = getCustomRenderConfig(block, blockRendererFn);\n var Component = customConfig.CustomComponent;\n var blockNode = Component != null ? React.createElement(Component, _extends({}, this.props, {\n tree: editorState.getBlockTree(blockKey),\n blockProps: customConfig.customProps,\n offsetKey: offsetKey,\n block: block\n })) : React.createElement(DraftEditorNode, {\n block: block,\n children: children,\n contentState: contentState,\n customStyleFn: customStyleFn,\n customStyleMap: customStyleMap,\n decorator: decorator,\n direction: direction,\n forceSelection: forceSelection,\n hasSelection: isBlockOnSelectionEdge(selection, blockKey),\n selection: selection,\n tree: tree\n });\n\n if (block.getParentKey()) {\n return blockNode;\n }\n\n var _getDraftRenderConfig2 = getDraftRenderConfig(block, blockRenderMap),\n Element = _getDraftRenderConfig2.Element;\n\n var elementProps = getElementPropsConfig(block, editorKey, offsetKey, blockStyleFn, customConfig, this.wrapperRef); // root block nodes needs to be wrapped\n\n return React.createElement(Element, elementProps, blockNode);\n };\n\n return DraftEditorBlockNode;\n}(React.Component);\n\nmodule.exports = DraftEditorBlockNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorDecoratedLeaves = require(\"./DraftEditorDecoratedLeaves.react\");\n\nvar DraftEditorLeaf = require(\"./DraftEditorLeaf.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar List = Immutable.List;\n\nvar DraftEditorNode = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorNode, _React$Component);\n\n function DraftEditorNode() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorNode.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n block = _this$props.block,\n contentState = _this$props.contentState,\n customStyleFn = _this$props.customStyleFn,\n customStyleMap = _this$props.customStyleMap,\n decorator = _this$props.decorator,\n direction = _this$props.direction,\n forceSelection = _this$props.forceSelection,\n hasSelection = _this$props.hasSelection,\n selection = _this$props.selection,\n tree = _this$props.tree;\n var blockKey = block.getKey();\n var text = block.getText();\n var lastLeafSet = tree.size - 1;\n var children = this.props.children || tree.map(function (leafSet, ii) {\n var decoratorKey = leafSet.get('decoratorKey');\n var leavesForLeafSet = leafSet.get('leaves');\n var lastLeaf = leavesForLeafSet.size - 1;\n var Leaves = leavesForLeafSet.map(function (leaf, jj) {\n var offsetKey = DraftOffsetKey.encode(blockKey, ii, jj);\n var start = leaf.get('start');\n var end = leaf.get('end');\n return React.createElement(DraftEditorLeaf, {\n key: offsetKey,\n offsetKey: offsetKey,\n block: block,\n start: start,\n selection: hasSelection ? selection : null,\n forceSelection: forceSelection,\n text: text.slice(start, end),\n styleSet: block.getInlineStyleAt(start),\n customStyleMap: customStyleMap,\n customStyleFn: customStyleFn,\n isLast: decoratorKey === lastLeafSet && jj === lastLeaf\n });\n }).toArray();\n\n if (!decoratorKey || !decorator) {\n return Leaves;\n }\n\n return React.createElement(DraftEditorDecoratedLeaves, {\n block: block,\n children: Leaves,\n contentState: contentState,\n decorator: decorator,\n decoratorKey: decoratorKey,\n direction: direction,\n leafSet: leafSet,\n text: text,\n key: ii\n });\n }).toArray();\n return React.createElement(\"div\", {\n \"data-offset-key\": DraftOffsetKey.encode(blockKey, 0, 0),\n className: cx({\n 'public/DraftStyleDefault/block': true,\n 'public/DraftStyleDefault/ltr': direction === 'LTR',\n 'public/DraftStyleDefault/rtl': direction === 'RTL'\n })\n }, children);\n };\n\n return DraftEditorNode;\n}(React.Component);\n\nmodule.exports = DraftEditorNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar UnicodeBidi = require(\"fbjs/lib/UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"fbjs/lib/UnicodeBidiDirection\");\n\nvar DraftEditorDecoratedLeaves = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorDecoratedLeaves, _React$Component);\n\n function DraftEditorDecoratedLeaves() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorDecoratedLeaves.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n block = _this$props.block,\n children = _this$props.children,\n contentState = _this$props.contentState,\n decorator = _this$props.decorator,\n decoratorKey = _this$props.decoratorKey,\n direction = _this$props.direction,\n leafSet = _this$props.leafSet,\n text = _this$props.text;\n var blockKey = block.getKey();\n var leavesForLeafSet = leafSet.get('leaves');\n var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n var decoratorProps = decorator.getPropsForKey(decoratorKey);\n var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, parseInt(decoratorKey, 10), 0);\n var decoratedText = text.slice(leavesForLeafSet.first().get('start'), leavesForLeafSet.last().get('end')); // Resetting dir to the same value on a child node makes Chrome/Firefox\n // confused on cursor movement. See http://jsfiddle.net/d157kLck/3/\n\n var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), direction);\n return React.createElement(DecoratorComponent, _extends({}, decoratorProps, {\n contentState: contentState,\n decoratedText: decoratedText,\n dir: dir,\n key: decoratorOffsetKey,\n entityKey: block.getEntityAt(leafSet.get('start')),\n offsetKey: decoratorOffsetKey\n }), children);\n };\n\n return DraftEditorDecoratedLeaves;\n}(React.Component);\n\nmodule.exports = DraftEditorDecoratedLeaves;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar React = require(\"react\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\"); // In IE, spans with <br> tags render as two newlines. By rendering a span\n// with only a newline character, we can be sure to render a single line.\n\n\nvar useNewlineChar = UserAgent.isBrowser('IE <= 11');\n/**\n * Check whether the node should be considered a newline.\n */\n\nfunction isNewline(node) {\n return useNewlineChar ? node.textContent === '\\n' : node.tagName === 'BR';\n}\n/**\n * Placeholder elements for empty text content.\n *\n * What is this `data-text` attribute, anyway? It turns out that we need to\n * put an attribute on the lowest-level text node in order to preserve correct\n * spellcheck handling. If the <span> is naked, Chrome and Safari may do\n * bizarre things to do the DOM -- split text nodes, create extra spans, etc.\n * If the <span> has an attribute, this appears not to happen.\n * See http://jsfiddle.net/9khdavod/ for the failure case, and\n * http://jsfiddle.net/7pg143f7/ for the fixed case.\n */\n\n\nvar NEWLINE_A = function NEWLINE_A(ref) {\n return useNewlineChar ? React.createElement(\"span\", {\n key: \"A\",\n \"data-text\": \"true\",\n ref: ref\n }, '\\n') : React.createElement(\"br\", {\n key: \"A\",\n \"data-text\": \"true\",\n ref: ref\n });\n};\n\nvar NEWLINE_B = function NEWLINE_B(ref) {\n return useNewlineChar ? React.createElement(\"span\", {\n key: \"B\",\n \"data-text\": \"true\",\n ref: ref\n }, '\\n') : React.createElement(\"br\", {\n key: \"B\",\n \"data-text\": \"true\",\n ref: ref\n });\n};\n\n/**\n * The lowest-level component in a `DraftEditor`, the text node component\n * replaces the default React text node implementation. This allows us to\n * perform custom handling of newline behavior and avoid re-rendering text\n * nodes with DOM state that already matches the expectations of our immutable\n * editor state.\n */\nvar DraftEditorTextNode = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorTextNode, _React$Component);\n\n function DraftEditorTextNode(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // By flipping this flag, we also keep flipping keys which forces\n // React to remount this node every time it rerenders.\n\n _defineProperty(_assertThisInitialized(_this), \"_forceFlag\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_node\", void 0);\n\n _this._forceFlag = false;\n return _this;\n }\n\n var _proto = DraftEditorTextNode.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var node = this._node;\n var shouldBeNewline = nextProps.children === '';\n !isElement(node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'node is not an Element') : invariant(false) : void 0;\n var elementNode = node;\n\n if (shouldBeNewline) {\n return !isNewline(elementNode);\n }\n\n return elementNode.textContent !== nextProps.children;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._forceFlag = !this._forceFlag;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this._forceFlag = !this._forceFlag;\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n if (this.props.children === '') {\n return this._forceFlag ? NEWLINE_A(function (ref) {\n return _this2._node = ref;\n }) : NEWLINE_B(function (ref) {\n return _this2._node = ref;\n });\n }\n\n return React.createElement(\"span\", {\n key: this._forceFlag ? 'A' : 'B',\n \"data-text\": \"true\",\n ref: function ref(_ref) {\n return _this2._node = _ref;\n }\n }, this.props.children);\n };\n\n return DraftEditorTextNode;\n}(React.Component);\n\nmodule.exports = DraftEditorTextNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftEffects = require(\"./DraftEffects\");\n\nvar DraftJsDebugLogging = require(\"./DraftJsDebugLogging\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar containsNode = require(\"fbjs/lib/containsNode\");\n\nvar getActiveElement = require(\"fbjs/lib/getActiveElement\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\");\n\nvar isIE = UserAgent.isBrowser('IE');\n\nfunction getAnonymizedDOM(node, getNodeLabels) {\n if (!node) {\n return '[empty]';\n }\n\n var anonymized = anonymizeTextWithin(node, getNodeLabels);\n\n if (anonymized.nodeType === Node.TEXT_NODE) {\n return anonymized.textContent;\n }\n\n !isElement(anonymized) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Node must be an Element if it is not a text node.') : invariant(false) : void 0;\n var castedElement = anonymized;\n return castedElement.outerHTML;\n}\n\nfunction anonymizeTextWithin(node, getNodeLabels) {\n var labels = getNodeLabels !== undefined ? getNodeLabels(node) : [];\n\n if (node.nodeType === Node.TEXT_NODE) {\n var length = node.textContent.length;\n return getCorrectDocumentFromNode(node).createTextNode('[text ' + length + (labels.length ? ' | ' + labels.join(', ') : '') + ']');\n }\n\n var clone = node.cloneNode();\n\n if (clone.nodeType === 1 && labels.length) {\n clone.setAttribute('data-labels', labels.join(', '));\n }\n\n var childNodes = node.childNodes;\n\n for (var ii = 0; ii < childNodes.length; ii++) {\n clone.appendChild(anonymizeTextWithin(childNodes[ii], getNodeLabels));\n }\n\n return clone;\n}\n\nfunction getAnonymizedEditorDOM(node, getNodeLabels) {\n // grabbing the DOM content of the Draft editor\n var currentNode = node; // this should only be used after checking with isElement\n\n var castedNode = currentNode;\n\n while (currentNode) {\n if (isElement(currentNode) && castedNode.hasAttribute('contenteditable')) {\n // found the Draft editor container\n return getAnonymizedDOM(currentNode, getNodeLabels);\n } else {\n currentNode = currentNode.parentNode;\n castedNode = currentNode;\n }\n }\n\n return 'Could not find contentEditable parent of node';\n}\n\nfunction getNodeLength(node) {\n return node.nodeValue === null ? node.childNodes.length : node.nodeValue.length;\n}\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n */\n\n\nfunction setDraftEditorSelection(selectionState, node, blockKey, nodeStart, nodeEnd) {\n // It's possible that the editor has been removed from the DOM but\n // our selection code doesn't know it yet. Forcing selection in\n // this case may lead to errors, so just bail now.\n var documentObject = getCorrectDocumentFromNode(node);\n\n if (!containsNode(documentObject.documentElement, node)) {\n return;\n }\n\n var selection = documentObject.defaultView.getSelection();\n var anchorKey = selectionState.getAnchorKey();\n var anchorOffset = selectionState.getAnchorOffset();\n var focusKey = selectionState.getFocusKey();\n var focusOffset = selectionState.getFocusOffset();\n var isBackward = selectionState.getIsBackward(); // IE doesn't support backward selection. Swap key/offset pairs.\n\n if (!selection.extend && isBackward) {\n var tempKey = anchorKey;\n var tempOffset = anchorOffset;\n anchorKey = focusKey;\n anchorOffset = focusOffset;\n focusKey = tempKey;\n focusOffset = tempOffset;\n isBackward = false;\n }\n\n var hasAnchor = anchorKey === blockKey && nodeStart <= anchorOffset && nodeEnd >= anchorOffset;\n var hasFocus = focusKey === blockKey && nodeStart <= focusOffset && nodeEnd >= focusOffset; // If the selection is entirely bound within this node, set the selection\n // and be done.\n\n if (hasAnchor && hasFocus) {\n selection.removeAllRanges();\n addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n addFocusToSelection(selection, node, focusOffset - nodeStart, selectionState);\n return;\n }\n\n if (!isBackward) {\n // If the anchor is within this node, set the range start.\n if (hasAnchor) {\n selection.removeAllRanges();\n addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n } // If the focus is within this node, we can assume that we have\n // already set the appropriate start range on the selection, and\n // can simply extend the selection.\n\n\n if (hasFocus) {\n addFocusToSelection(selection, node, focusOffset - nodeStart, selectionState);\n }\n } else {\n // If this node has the focus, set the selection range to be a\n // collapsed range beginning here. Later, when we encounter the anchor,\n // we'll use this information to extend the selection.\n if (hasFocus) {\n selection.removeAllRanges();\n addPointToSelection(selection, node, focusOffset - nodeStart, selectionState);\n } // If this node has the anchor, we may assume that the correct\n // focus information is already stored on the selection object.\n // We keep track of it, reset the selection range, and extend it\n // back to the focus point.\n\n\n if (hasAnchor) {\n var storedFocusNode = selection.focusNode;\n var storedFocusOffset = selection.focusOffset;\n selection.removeAllRanges();\n addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n addFocusToSelection(selection, storedFocusNode, storedFocusOffset, selectionState);\n }\n }\n}\n/**\n * Extend selection towards focus point.\n */\n\n\nfunction addFocusToSelection(selection, node, offset, selectionState) {\n var activeElement = getActiveElement();\n var extend = selection.extend; // containsNode returns false if node is null.\n // Let's refine the type of this value out here so flow knows.\n\n if (extend && node != null && containsNode(activeElement, node)) {\n // If `extend` is called while another element has focus, an error is\n // thrown. We therefore disable `extend` if the active element is somewhere\n // other than the node we are selecting. This should only occur in Firefox,\n // since it is the only browser to support multiple selections.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=921444.\n // logging to catch bug that is being reported in t16250795\n if (offset > getNodeLength(node)) {\n // the call to 'selection.extend' is about to throw\n DraftJsDebugLogging.logSelectionStateFailure({\n anonymizedDom: getAnonymizedEditorDOM(node),\n extraParams: JSON.stringify({\n offset: offset\n }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n } // logging to catch bug that is being reported in t18110632\n\n\n var nodeWasFocus = node === selection.focusNode;\n\n try {\n // Fixes some reports of \"InvalidStateError: Failed to execute 'extend' on\n // 'Selection': This Selection object doesn't have any Ranges.\"\n // Note: selection.extend does not exist in IE.\n if (selection.rangeCount > 0 && selection.extend) {\n selection.extend(node, offset);\n }\n } catch (e) {\n DraftJsDebugLogging.logSelectionStateFailure({\n anonymizedDom: getAnonymizedEditorDOM(node, function (n) {\n var labels = [];\n\n if (n === activeElement) {\n labels.push('active element');\n }\n\n if (n === selection.anchorNode) {\n labels.push('selection anchor node');\n }\n\n if (n === selection.focusNode) {\n labels.push('selection focus node');\n }\n\n return labels;\n }),\n extraParams: JSON.stringify({\n activeElementName: activeElement ? activeElement.nodeName : null,\n nodeIsFocus: node === selection.focusNode,\n nodeWasFocus: nodeWasFocus,\n selectionRangeCount: selection.rangeCount,\n selectionAnchorNodeName: selection.anchorNode ? selection.anchorNode.nodeName : null,\n selectionAnchorOffset: selection.anchorOffset,\n selectionFocusNodeName: selection.focusNode ? selection.focusNode.nodeName : null,\n selectionFocusOffset: selection.focusOffset,\n message: e ? '' + e : null,\n offset: offset\n }, null, 2),\n selectionState: JSON.stringify(selectionState.toJS(), null, 2)\n }); // allow the error to be thrown -\n // better than continuing in a broken state\n\n throw e;\n }\n } else {\n // IE doesn't support extend. This will mean no backward selection.\n // Extract the existing selection range and add focus to it.\n // Additionally, clone the selection range. IE11 throws an\n // InvalidStateError when attempting to access selection properties\n // after the range is detached.\n if (node && selection.rangeCount > 0) {\n var range = selection.getRangeAt(0);\n range.setEnd(node, offset);\n selection.addRange(range.cloneRange());\n }\n }\n}\n\nfunction addPointToSelection(selection, node, offset, selectionState) {\n var range = getCorrectDocumentFromNode(node).createRange(); // logging to catch bug that is being reported in t16250795\n\n if (offset > getNodeLength(node)) {\n // in this case we know that the call to 'range.setStart' is about to throw\n DraftJsDebugLogging.logSelectionStateFailure({\n anonymizedDom: getAnonymizedEditorDOM(node),\n extraParams: JSON.stringify({\n offset: offset\n }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n DraftEffects.handleExtensionCausedError();\n }\n\n range.setStart(node, offset); // IE sometimes throws Unspecified Error when trying to addRange\n\n if (isIE) {\n try {\n selection.addRange(range);\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable-next-line no-console */\n console.warn('Call to selection.addRange() threw exception: ', e);\n }\n }\n } else {\n selection.addRange(range);\n }\n}\n\nmodule.exports = {\n setDraftEditorSelection: setDraftEditorSelection,\n addFocusToSelection: addFocusToSelection\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar isNode = require(\"./isNode\");\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\n\n\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar camelize = require(\"./camelize\");\n\nvar hyphenate = require(\"./hyphenate\");\n\nfunction asString(value)\n/*?string*/\n{\n return value == null ? value : String(value);\n}\n\nfunction getStyleProperty(\n/*DOMNode*/\nnode,\n/*string*/\nname)\n/*?string*/\n{\n var computedStyle; // W3C Standard\n\n if (window.getComputedStyle) {\n // In certain cases such as within an iframe in FF3, this returns null.\n computedStyle = window.getComputedStyle(node, null);\n\n if (computedStyle) {\n return asString(computedStyle.getPropertyValue(hyphenate(name)));\n }\n } // Safari\n\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(node, null); // A Safari bug causes this to return null for `display: none` elements.\n\n if (computedStyle) {\n return asString(computedStyle.getPropertyValue(hyphenate(name)));\n }\n\n if (name === 'display') {\n return 'none';\n }\n } // Internet Explorer\n\n\n if (node.currentStyle) {\n if (name === 'float') {\n return asString(node.currentStyle.cssFloat || node.currentStyle.styleFloat);\n }\n\n return asString(node.currentStyle[camelize(name)]);\n }\n\n return asString(node.style && node.style[camelize(name)]);\n}\n\nmodule.exports = getStyleProperty;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _hyphenPattern = /-(.)/g;\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _uppercasePattern = /([A-Z])/g;\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar containsNode = require(\"./containsNode\");\n/**\n * Gets an element's bounding rect in pixels relative to the viewport.\n *\n * @param {DOMElement} elem\n * @return {object}\n */\n\n\nfunction getElementRect(elem) {\n var docElem = elem.ownerDocument.documentElement; // FF 2, Safari 3 and Opera 9.5- do not support getBoundingClientRect().\n // IE9- will throw if the element is not in the document.\n\n if (!('getBoundingClientRect' in elem) || !containsNode(docElem, elem)) {\n return {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n } // Subtracts clientTop/Left because IE8- added a 2px border to the\n // <html> element (see http://fburl.com/1493213). IE 7 in\n // Quicksmode does not report clientLeft/clientTop so there\n // will be an unaccounted offset of 2px when in quirksmode\n\n\n var rect = elem.getBoundingClientRect();\n return {\n left: Math.round(rect.left) - docElem.clientLeft,\n right: Math.round(rect.right) - docElem.clientLeft,\n top: Math.round(rect.top) - docElem.clientTop,\n bottom: Math.round(rect.bottom) - docElem.clientTop\n };\n}\n\nmodule.exports = getElementRect;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar isWebkit = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('AppleWebKit') > -1;\n/**\n * Gets the element with the document scroll properties such as `scrollLeft` and\n * `scrollHeight`. This may differ across different browsers.\n *\n * NOTE: The return value can be null if the DOM is not yet ready.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\n\nfunction getDocumentScrollElement(doc) {\n doc = doc || document;\n\n if (doc.scrollingElement) {\n return doc.scrollingElement;\n }\n\n return !isWebkit && doc.compatMode === 'CSS1Compat' ? doc.documentElement : doc.body;\n}\n\nmodule.exports = getDocumentScrollElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorBlock = require(\"./DraftEditorBlock.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar joinClasses = require(\"fbjs/lib/joinClasses\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * Provide default styling for list items. This way, lists will be styled with\n * proper counters and indentation even if the caller does not specify\n * their own styling at all. If more than five levels of nesting are needed,\n * the necessary CSS classes can be provided via `blockStyleFn` configuration.\n */\nvar getListItemClasses = function getListItemClasses(type, depth, shouldResetCount, direction) {\n return cx({\n 'public/DraftStyleDefault/unorderedListItem': type === 'unordered-list-item',\n 'public/DraftStyleDefault/orderedListItem': type === 'ordered-list-item',\n 'public/DraftStyleDefault/reset': shouldResetCount,\n 'public/DraftStyleDefault/depth0': depth === 0,\n 'public/DraftStyleDefault/depth1': depth === 1,\n 'public/DraftStyleDefault/depth2': depth === 2,\n 'public/DraftStyleDefault/depth3': depth === 3,\n 'public/DraftStyleDefault/depth4': depth >= 4,\n 'public/DraftStyleDefault/listLTR': direction === 'LTR',\n 'public/DraftStyleDefault/listRTL': direction === 'RTL'\n });\n};\n/**\n * `DraftEditorContents` is the container component for all block components\n * rendered for a `DraftEditor`. It is optimized to aggressively avoid\n * re-rendering blocks whenever possible.\n *\n * This component is separate from `DraftEditor` because certain props\n * (for instance, ARIA props) must be allowed to update without affecting\n * the contents of the editor.\n */\n\n\nvar DraftEditorContents = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorContents, _React$Component);\n\n function DraftEditorContents() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorContents.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var prevEditorState = this.props.editorState;\n var nextEditorState = nextProps.editorState;\n var prevDirectionMap = prevEditorState.getDirectionMap();\n var nextDirectionMap = nextEditorState.getDirectionMap(); // Text direction has changed for one or more blocks. We must re-render.\n\n if (prevDirectionMap !== nextDirectionMap) {\n return true;\n }\n\n var didHaveFocus = prevEditorState.getSelection().getHasFocus();\n var nowHasFocus = nextEditorState.getSelection().getHasFocus();\n\n if (didHaveFocus !== nowHasFocus) {\n return true;\n }\n\n var nextNativeContent = nextEditorState.getNativelyRenderedContent();\n var wasComposing = prevEditorState.isInCompositionMode();\n var nowComposing = nextEditorState.isInCompositionMode(); // If the state is unchanged or we're currently rendering a natively\n // rendered state, there's nothing new to be done.\n\n if (prevEditorState === nextEditorState || nextNativeContent !== null && nextEditorState.getCurrentContent() === nextNativeContent || wasComposing && nowComposing) {\n return false;\n }\n\n var prevContent = prevEditorState.getCurrentContent();\n var nextContent = nextEditorState.getCurrentContent();\n var prevDecorator = prevEditorState.getDecorator();\n var nextDecorator = nextEditorState.getDecorator();\n return wasComposing !== nowComposing || prevContent !== nextContent || prevDecorator !== nextDecorator || nextEditorState.mustForceSelection();\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n blockRenderMap = _this$props.blockRenderMap,\n blockRendererFn = _this$props.blockRendererFn,\n blockStyleFn = _this$props.blockStyleFn,\n customStyleMap = _this$props.customStyleMap,\n customStyleFn = _this$props.customStyleFn,\n editorState = _this$props.editorState,\n editorKey = _this$props.editorKey,\n preventScroll = _this$props.preventScroll,\n textDirectionality = _this$props.textDirectionality;\n var content = editorState.getCurrentContent();\n var selection = editorState.getSelection();\n var forceSelection = editorState.mustForceSelection();\n var decorator = editorState.getDecorator();\n var directionMap = nullthrows(editorState.getDirectionMap());\n var blocksAsArray = content.getBlocksAsArray();\n var processedBlocks = [];\n var currentDepth = null;\n var lastWrapperTemplate = null;\n\n for (var ii = 0; ii < blocksAsArray.length; ii++) {\n var _block = blocksAsArray[ii];\n\n var key = _block.getKey();\n\n var blockType = _block.getType();\n\n var customRenderer = blockRendererFn(_block);\n var CustomComponent = void 0,\n customProps = void 0,\n customEditable = void 0;\n\n if (customRenderer) {\n CustomComponent = customRenderer.component;\n customProps = customRenderer.props;\n customEditable = customRenderer.editable;\n }\n\n var direction = textDirectionality ? textDirectionality : directionMap.get(key);\n var offsetKey = DraftOffsetKey.encode(key, 0, 0);\n var componentProps = {\n contentState: content,\n block: _block,\n blockProps: customProps,\n blockStyleFn: blockStyleFn,\n customStyleMap: customStyleMap,\n customStyleFn: customStyleFn,\n decorator: decorator,\n direction: direction,\n forceSelection: forceSelection,\n offsetKey: offsetKey,\n preventScroll: preventScroll,\n selection: selection,\n tree: editorState.getBlockTree(key)\n };\n var configForType = blockRenderMap.get(blockType) || blockRenderMap.get('unstyled');\n var wrapperTemplate = configForType.wrapper;\n var Element = configForType.element || blockRenderMap.get('unstyled').element;\n\n var depth = _block.getDepth();\n\n var _className = '';\n\n if (blockStyleFn) {\n _className = blockStyleFn(_block);\n } // List items are special snowflakes, since we handle nesting and\n // counters manually.\n\n\n if (Element === 'li') {\n var shouldResetCount = lastWrapperTemplate !== wrapperTemplate || currentDepth === null || depth > currentDepth;\n _className = joinClasses(_className, getListItemClasses(blockType, depth, shouldResetCount, direction));\n }\n\n var Component = CustomComponent || DraftEditorBlock;\n var childProps = {\n className: _className,\n 'data-block': true,\n 'data-editor': editorKey,\n 'data-offset-key': offsetKey,\n key: key\n };\n\n if (customEditable !== undefined) {\n childProps = _objectSpread({}, childProps, {\n contentEditable: customEditable,\n suppressContentEditableWarning: true\n });\n }\n\n var child = React.createElement(Element, childProps,\n /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This\n * comment suppresses an error found when Flow v0.112 was deployed. To\n * see the error delete this comment and run Flow. */\n React.createElement(Component, _extends({}, componentProps, {\n key: key\n })));\n processedBlocks.push({\n block: child,\n wrapperTemplate: wrapperTemplate,\n key: key,\n offsetKey: offsetKey\n });\n\n if (wrapperTemplate) {\n currentDepth = _block.getDepth();\n } else {\n currentDepth = null;\n }\n\n lastWrapperTemplate = wrapperTemplate;\n } // Group contiguous runs of blocks that have the same wrapperTemplate\n\n\n var outputBlocks = [];\n\n for (var _ii = 0; _ii < processedBlocks.length;) {\n var info = processedBlocks[_ii];\n\n if (info.wrapperTemplate) {\n var blocks = [];\n\n do {\n blocks.push(processedBlocks[_ii].block);\n _ii++;\n } while (_ii < processedBlocks.length && processedBlocks[_ii].wrapperTemplate === info.wrapperTemplate);\n\n var wrapperElement = React.cloneElement(info.wrapperTemplate, {\n key: info.key + '-wrap',\n 'data-offset-key': info.offsetKey\n }, blocks);\n outputBlocks.push(wrapperElement);\n } else {\n outputBlocks.push(info.block);\n _ii++;\n }\n }\n\n return React.createElement(\"div\", {\n \"data-contents\": \"true\"\n }, outputBlocks);\n };\n\n return DraftEditorContents;\n}(React.Component);\n\nmodule.exports = DraftEditorContents;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Combines multiple className strings into one.\n */\n\nfunction joinClasses(className) {\n var newClassName = className || '';\n var argLength = arguments.length;\n\n if (argLength > 1) {\n for (var index = 1; index < argLength; index++) {\n var nextClass = arguments[index];\n\n if (nextClass) {\n newClassName = (newClassName ? newClassName + ' ' : '') + nextClass;\n }\n }\n }\n\n return newClassName;\n}\n\nmodule.exports = joinClasses;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DataTransfer = require(\"fbjs/lib/DataTransfer\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getTextContentFromFiles = require(\"./getTextContentFromFiles\");\n\nvar getUpdatedSelectionState = require(\"./getUpdatedSelectionState\");\n\nvar getWindowForNode = require(\"./getWindowForNode\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n/**\n * Get a SelectionState for the supplied mouse event.\n */\n\n\nfunction getSelectionForEvent(event, editorState) {\n var node = null;\n var offset = null;\n var eventTargetDocument = getCorrectDocumentFromNode(event.currentTarget);\n /* $FlowFixMe[prop-missing] (>=0.68.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the error\n * delete this comment and run Flow. */\n\n if (typeof eventTargetDocument.caretRangeFromPoint === 'function') {\n /* $FlowFixMe[incompatible-use] (>=0.68.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the error\n * delete this comment and run Flow. */\n var dropRange = eventTargetDocument.caretRangeFromPoint(event.x, event.y);\n node = dropRange.startContainer;\n offset = dropRange.startOffset;\n } else if (event.rangeParent) {\n node = event.rangeParent;\n offset = event.rangeOffset;\n } else {\n return null;\n }\n\n node = nullthrows(node);\n offset = nullthrows(offset);\n var offsetKey = nullthrows(findAncestorOffsetKey(node));\n return getUpdatedSelectionState(editorState, offsetKey, offset, offsetKey, offset);\n}\n\nvar DraftEditorDragHandler = {\n /**\n * Drag originating from input terminated.\n */\n onDragEnd: function onDragEnd(editor) {\n editor.exitCurrentMode();\n endDrag(editor);\n },\n\n /**\n * Handle data being dropped.\n */\n onDrop: function onDrop(editor, e) {\n var data = new DataTransfer(e.nativeEvent.dataTransfer);\n var editorState = editor._latestEditorState;\n var dropSelection = getSelectionForEvent(e.nativeEvent, editorState);\n e.preventDefault();\n editor._dragCount = 0;\n editor.exitCurrentMode();\n\n if (dropSelection == null) {\n return;\n }\n\n var files = data.getFiles();\n\n if (files.length > 0) {\n if (editor.props.handleDroppedFiles && isEventHandled(editor.props.handleDroppedFiles(dropSelection, files))) {\n return;\n }\n /* $FlowFixMe[incompatible-call] This comment suppresses an error found\n * DataTransfer was typed. getFiles() returns an array of <Files extends\n * Blob>, not Blob */\n\n\n getTextContentFromFiles(files, function (fileText) {\n fileText && editor.update(insertTextAtSelection(editorState, dropSelection, fileText));\n });\n return;\n }\n\n var dragType = editor._internalDrag ? 'internal' : 'external';\n\n if (editor.props.handleDrop && isEventHandled(editor.props.handleDrop(dropSelection, data, dragType))) {// handled\n } else if (editor._internalDrag) {\n editor.update(moveText(editorState, dropSelection));\n } else {\n editor.update(insertTextAtSelection(editorState, dropSelection, data.getText()));\n }\n\n endDrag(editor);\n }\n};\n\nfunction endDrag(editor) {\n editor._internalDrag = false; // Fix issue #1383\n // Prior to React v16.5.0 onDrop breaks onSelect event:\n // https://github.com/facebook/react/issues/11379.\n // Dispatching a mouseup event on DOM node will make it go back to normal.\n\n var editorNode = editor.editorContainer;\n\n if (editorNode) {\n var mouseUpEvent = new MouseEvent('mouseup', {\n view: getWindowForNode(editorNode),\n bubbles: true,\n cancelable: true\n });\n editorNode.dispatchEvent(mouseUpEvent);\n }\n}\n\nfunction moveText(editorState, targetSelection) {\n var newContentState = DraftModifier.moveText(editorState.getCurrentContent(), editorState.getSelection(), targetSelection);\n return EditorState.push(editorState, newContentState, 'insert-fragment');\n}\n/**\n * Insert text at a specified selection.\n */\n\n\nfunction insertTextAtSelection(editorState, selection, text) {\n var newContentState = DraftModifier.insertText(editorState.getCurrentContent(), selection, text, editorState.getCurrentInlineStyle());\n return EditorState.push(editorState, newContentState, 'insert-fragment');\n}\n\nmodule.exports = DraftEditorDragHandler;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nvar PhotosMimeType = {\n isImage: function isImage(mimeString) {\n return getParts(mimeString)[0] === 'image';\n },\n isJpeg: function isJpeg(mimeString) {\n var parts = getParts(mimeString);\n return PhotosMimeType.isImage(mimeString) && ( // see http://fburl.com/10972194\n parts[1] === 'jpeg' || parts[1] === 'pjpeg');\n }\n};\n\nfunction getParts(mimeString) {\n return mimeString.split('/');\n}\n\nmodule.exports = PhotosMimeType;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar invariant = require(\"./invariant\");\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\n\n\nfunction toArray(obj) {\n var length = obj.length; // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n !(typeof length === 'number') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0; // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {// IE < 9 does not support Array#slice on collections objects\n }\n } // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n\n\n var ret = Array(length);\n\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n\n return ret;\n}\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\n\n\nfunction hasArrayNature(obj) {\n return (// not null/false\n !!obj && ( // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') && // quacks like an array\n 'length' in obj && // not window\n !('setInterval' in obj) && // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && ( // a real array\n Array.isArray(obj) || // arguments\n 'callee' in obj || // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\n\n\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar onBeforeInput = require(\"./editOnBeforeInput\");\n\nvar onBlur = require(\"./editOnBlur\");\n\nvar onCompositionStart = require(\"./editOnCompositionStart\");\n\nvar onCopy = require(\"./editOnCopy\");\n\nvar onCut = require(\"./editOnCut\");\n\nvar onDragOver = require(\"./editOnDragOver\");\n\nvar onDragStart = require(\"./editOnDragStart\");\n\nvar onFocus = require(\"./editOnFocus\");\n\nvar onInput = require(\"./editOnInput\");\n\nvar onKeyDown = require(\"./editOnKeyDown\");\n\nvar onPaste = require(\"./editOnPaste\");\n\nvar onSelect = require(\"./editOnSelect\");\n\nvar isChrome = UserAgent.isBrowser('Chrome');\nvar isFirefox = UserAgent.isBrowser('Firefox');\nvar selectionHandler = isChrome || isFirefox ? onSelect : function (e) {};\nvar DraftEditorEditHandler = {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onCompositionStart: onCompositionStart,\n onCopy: onCopy,\n onCut: onCut,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onFocus: onFocus,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect,\n // In certain cases, contenteditable on chrome does not fire the onSelect\n // event, causing problems with cursor positioning. Therefore, the selection\n // state update handler is added to more events to ensure that the selection\n // state is always synced with the actual cursor positions.\n onMouseUp: selectionHandler,\n onKeyUp: selectionHandler\n};\nmodule.exports = DraftEditorEditHandler;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar isSelectionAtLeafStart = require(\"./isSelectionAtLeafStart\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar setImmediate = require(\"fbjs/lib/setImmediate\"); // When nothing is focused, Firefox regards two characters, `'` and `/`, as\n// commands that should open and focus the \"quickfind\" search bar. This should\n// *never* happen while a contenteditable is focused, but as of v28, it\n// sometimes does, even when the keypress event target is the contenteditable.\n// This breaks the input. Special case these characters to ensure that when\n// they are typed, we prevent default on the event to make sure not to\n// trigger quickfind.\n\n\nvar FF_QUICKFIND_CHAR = \"'\";\nvar FF_QUICKFIND_LINK_CHAR = '/';\nvar isFirefox = UserAgent.isBrowser('Firefox');\n\nfunction mustPreventDefaultForCharacter(character) {\n return isFirefox && (character == FF_QUICKFIND_CHAR || character == FF_QUICKFIND_LINK_CHAR);\n}\n/**\n * Replace the current selection with the specified text string, with the\n * inline style and entity key applied to the newly inserted text.\n */\n\n\nfunction replaceText(editorState, text, inlineStyle, entityKey, forceSelection) {\n var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), text, inlineStyle, entityKey);\n return EditorState.push(editorState, contentState, 'insert-characters', forceSelection);\n}\n/**\n * When `onBeforeInput` executes, the browser is attempting to insert a\n * character into the editor. Apply this character data to the document,\n * allowing native insertion if possible.\n *\n * Native insertion is encouraged in order to limit re-rendering and to\n * preserve spellcheck highlighting, which disappears or flashes if re-render\n * occurs on the relevant text nodes.\n */\n\n\nfunction editOnBeforeInput(editor, e) {\n if (editor._pendingStateFromBeforeInput !== undefined) {\n editor.update(editor._pendingStateFromBeforeInput);\n editor._pendingStateFromBeforeInput = undefined;\n }\n\n var editorState = editor._latestEditorState;\n var chars = e.data; // In some cases (ex: IE ideographic space insertion) no character data\n // is provided. There's nothing to do when this happens.\n\n if (!chars) {\n return;\n } // Allow the top-level component to handle the insertion manually. This is\n // useful when triggering interesting behaviors for a character insertion,\n // Simple examples: replacing a raw text ':)' with a smile emoji or image\n // decorator, or setting a block to be a list item after typing '- ' at the\n // start of the block.\n\n\n if (editor.props.handleBeforeInput && isEventHandled(editor.props.handleBeforeInput(chars, editorState, e.timeStamp))) {\n e.preventDefault();\n return;\n } // If selection is collapsed, conditionally allow native behavior. This\n // reduces re-renders and preserves spellcheck highlighting. If the selection\n // is not collapsed, we will re-render.\n\n\n var selection = editorState.getSelection();\n var selectionStart = selection.getStartOffset();\n var anchorKey = selection.getAnchorKey();\n\n if (!selection.isCollapsed()) {\n e.preventDefault();\n editor.update(replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection()), true));\n return;\n }\n\n var newEditorState = replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection()), false); // Bunch of different cases follow where we need to prevent native insertion.\n\n var mustPreventNative = false;\n\n if (!mustPreventNative) {\n // Browsers tend to insert text in weird places in the DOM when typing at\n // the start of a leaf, so we'll handle it ourselves.\n mustPreventNative = isSelectionAtLeafStart(editor._latestCommittedEditorState);\n }\n\n if (!mustPreventNative) {\n // Let's say we have a decorator that highlights hashtags. In many cases\n // we need to prevent native behavior and rerender ourselves --\n // particularly, any case *except* where the inserted characters end up\n // anywhere except exactly where you put them.\n //\n // Using [] to denote a decorated leaf, some examples:\n //\n // 1. 'hi #' and append 'f'\n // desired rendering: 'hi [#f]'\n // native rendering would be: 'hi #f' (incorrect)\n //\n // 2. 'x [#foo]' and insert '#' before 'f'\n // desired rendering: 'x #[#foo]'\n // native rendering would be: 'x [##foo]' (incorrect)\n //\n // 3. '[#foobar]' and insert ' ' between 'foo' and 'bar'\n // desired rendering: '[#foo] bar'\n // native rendering would be: '[#foo bar]' (incorrect)\n //\n // 4. '[#foo]' and delete '#' [won't use this beforeinput codepath though]\n // desired rendering: 'foo'\n // native rendering would be: '[foo]' (incorrect)\n //\n // 5. '[#foo]' and append 'b'\n // desired rendering: '[#foob]'\n // native rendering would be: '[#foob]'\n // (native insertion here would be ok for decorators like simple spans,\n // but not more complex decorators. To be safe, we need to prevent it.)\n //\n // It is safe to allow native insertion if and only if the full list of\n // decorator ranges matches what we expect native insertion to give, and\n // the range lengths have not changed. We don't need to compare the content\n // because the only possible mutation to consider here is inserting plain\n // text and decorators can't affect text content.\n var oldBlockTree = editorState.getBlockTree(anchorKey);\n var newBlockTree = newEditorState.getBlockTree(anchorKey);\n mustPreventNative = oldBlockTree.size !== newBlockTree.size || oldBlockTree.zip(newBlockTree).some(function (_ref) {\n var oldLeafSet = _ref[0],\n newLeafSet = _ref[1];\n // selectionStart is guaranteed to be selectionEnd here\n var oldStart = oldLeafSet.get('start');\n var adjustedStart = oldStart + (oldStart >= selectionStart ? chars.length : 0);\n var oldEnd = oldLeafSet.get('end');\n var adjustedEnd = oldEnd + (oldEnd >= selectionStart ? chars.length : 0);\n var newStart = newLeafSet.get('start');\n var newEnd = newLeafSet.get('end');\n var newDecoratorKey = newLeafSet.get('decoratorKey');\n return (// Different decorators\n oldLeafSet.get('decoratorKey') !== newDecoratorKey || // Different number of inline styles\n oldLeafSet.get('leaves').size !== newLeafSet.get('leaves').size || // Different effective decorator position\n adjustedStart !== newStart || adjustedEnd !== newEnd || // Decorator already existed and its length changed\n newDecoratorKey != null && newEnd - newStart !== oldEnd - oldStart\n );\n });\n }\n\n if (!mustPreventNative) {\n mustPreventNative = mustPreventDefaultForCharacter(chars);\n }\n\n if (!mustPreventNative) {\n mustPreventNative = nullthrows(newEditorState.getDirectionMap()).get(anchorKey) !== nullthrows(editorState.getDirectionMap()).get(anchorKey);\n }\n\n if (mustPreventNative) {\n e.preventDefault();\n newEditorState = EditorState.set(newEditorState, {\n forceSelection: true\n });\n editor.update(newEditorState);\n return;\n } // We made it all the way! Let the browser do its thing and insert the char.\n\n\n newEditorState = EditorState.set(newEditorState, {\n nativelyRenderedContent: newEditorState.getCurrentContent()\n }); // The native event is allowed to occur. To allow user onChange handlers to\n // change the inserted text, we wait until the text is actually inserted\n // before we actually update our state. That way when we rerender, the text\n // we see in the DOM will already have been inserted properly.\n\n editor._pendingStateFromBeforeInput = newEditorState;\n setImmediate(function () {\n if (editor._pendingStateFromBeforeInput !== undefined) {\n editor.update(editor._pendingStateFromBeforeInput);\n editor._pendingStateFromBeforeInput = undefined;\n }\n });\n}\n\nmodule.exports = editOnBeforeInput;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction isSelectionAtLeafStart(editorState) {\n var selection = editorState.getSelection();\n var anchorKey = selection.getAnchorKey();\n var blockTree = editorState.getBlockTree(anchorKey);\n var offset = selection.getStartOffset();\n var isAtStart = false;\n blockTree.some(function (leafSet) {\n if (offset === leafSet.get('start')) {\n isAtStart = true;\n return true;\n }\n\n if (offset < leafSet.get('end')) {\n return leafSet.get('leaves').some(function (leaf) {\n var leafStart = leaf.get('start');\n\n if (offset === leafStart) {\n isAtStart = true;\n return true;\n }\n\n return false;\n });\n }\n\n return false;\n });\n return isAtStart;\n}\n\nmodule.exports = isSelectionAtLeafStart;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict'; // setimmediate adds setImmediate to the global. We want to make sure we export\n// the actual function.\n\nrequire(\"setimmediate\");\n\nmodule.exports = global.setImmediate;","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar containsNode = require(\"fbjs/lib/containsNode\");\n\nvar getActiveElement = require(\"fbjs/lib/getActiveElement\");\n\nfunction editOnBlur(editor, e) {\n // In a contentEditable element, when you select a range and then click\n // another active element, this does trigger a `blur` event but will not\n // remove the DOM selection from the contenteditable.\n // This is consistent across all browsers, but we prefer that the editor\n // behave like a textarea, where a `blur` event clears the DOM selection.\n // We therefore force the issue to be certain, checking whether the active\n // element is `body` to force it when blurring occurs within the window (as\n // opposed to clicking to another tab or window).\n var ownerDocument = e.currentTarget.ownerDocument;\n\n if ( // This ESLint rule conflicts with `sketchy-null-bool` flow check\n // eslint-disable-next-line no-extra-boolean-cast\n !Boolean(editor.props.preserveSelectionOnBlur) && getActiveElement(ownerDocument) === ownerDocument.body) {\n var _selection = ownerDocument.defaultView.getSelection();\n\n var editorNode = editor.editor;\n\n if (_selection.rangeCount === 1 && containsNode(editorNode, _selection.anchorNode) && containsNode(editorNode, _selection.focusNode)) {\n _selection.removeAllRanges();\n }\n }\n\n var editorState = editor._latestEditorState;\n var currentSelection = editorState.getSelection();\n\n if (!currentSelection.getHasFocus()) {\n return;\n }\n\n var selection = currentSelection.set('hasFocus', false);\n editor.props.onBlur && editor.props.onBlur(e);\n editor.update(EditorState.acceptSelection(editorState, selection));\n}\n\nmodule.exports = editOnBlur;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * The user has begun using an IME input system. Switching to `composite` mode\n * allows handling composition input and disables other edit behavior.\n */\n\n\nfunction editOnCompositionStart(editor, e) {\n editor.setMode('composite');\n editor.update(EditorState.set(editor._latestEditorState, {\n inCompositionMode: true\n })); // Allow composition handler to interpret the compositionstart event\n\n editor._onCompositionStart(e);\n}\n\nmodule.exports = editOnCompositionStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getFragmentFromSelection = require(\"./getFragmentFromSelection\");\n/**\n * If we have a selection, create a ContentState fragment and store\n * it in our internal clipboard. Subsequent paste events will use this\n * fragment if no external clipboard data is supplied.\n */\n\n\nfunction editOnCopy(editor, e) {\n var editorState = editor._latestEditorState;\n var selection = editorState.getSelection(); // No selection, so there's nothing to copy.\n\n if (selection.isCollapsed()) {\n e.preventDefault();\n return;\n }\n\n editor.setClipboard(getFragmentFromSelection(editor._latestEditorState));\n}\n\nmodule.exports = editOnCopy;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar getFragmentFromSelection = require(\"./getFragmentFromSelection\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar isNode = require(\"./isInstanceOfNode\");\n/**\n * On `cut` events, native behavior is allowed to occur so that the system\n * clipboard is set properly. This means that we need to take steps to recover\n * the editor DOM state after the `cut` has occurred in order to maintain\n * control of the component.\n *\n * In addition, we can keep a copy of the removed fragment, including all\n * styles and entities, for use as an internal paste.\n */\n\n\nfunction editOnCut(editor, e) {\n var editorState = editor._latestEditorState;\n var selection = editorState.getSelection();\n var element = e.target;\n var scrollPosition; // No selection, so there's nothing to cut.\n\n if (selection.isCollapsed()) {\n e.preventDefault();\n return;\n } // Track the current scroll position so that it can be forced back in place\n // after the editor regains control of the DOM.\n\n\n if (isNode(element)) {\n var node = element;\n scrollPosition = getScrollPosition(Style.getScrollParent(node));\n }\n\n var fragment = getFragmentFromSelection(editorState);\n editor.setClipboard(fragment); // Set `cut` mode to disable all event handling temporarily.\n\n editor.setMode('cut'); // Let native `cut` behavior occur, then recover control.\n\n setTimeout(function () {\n editor.restoreEditorDOM(scrollPosition);\n editor.exitCurrentMode();\n editor.update(removeFragment(editorState));\n }, 0);\n}\n\nfunction removeFragment(editorState) {\n var newContent = DraftModifier.removeRange(editorState.getCurrentContent(), editorState.getSelection(), 'forward');\n return EditorState.push(editorState, newContent, 'remove-range');\n}\n\nmodule.exports = editOnCut;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isInstanceOfNode(target) {\n // we changed the name because of having duplicate module provider (fbjs)\n if (!target || !('ownerDocument' in target)) {\n return false;\n }\n\n if ('ownerDocument' in target) {\n var node = target;\n\n if (!node.ownerDocument.defaultView) {\n return node instanceof Node;\n }\n\n if (node instanceof node.ownerDocument.defaultView.Node) {\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = isInstanceOfNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Drag behavior has begun from outside the editor element.\n */\nfunction editOnDragOver(editor, e) {\n editor.setMode('drag');\n e.preventDefault();\n}\n\nmodule.exports = editOnDragOver;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * A `dragstart` event has begun within the text editor component.\n */\nfunction editOnDragStart(editor) {\n editor._internalDrag = true;\n editor.setMode('drag');\n}\n\nmodule.exports = editOnDragStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nfunction editOnFocus(editor, e) {\n var editorState = editor._latestEditorState;\n var currentSelection = editorState.getSelection();\n\n if (currentSelection.getHasFocus()) {\n return;\n }\n\n var selection = currentSelection.set('hasFocus', true);\n editor.props.onFocus && editor.props.onFocus(e); // When the tab containing this text editor is hidden and the user does a\n // find-in-page in a _different_ tab, Chrome on Mac likes to forget what the\n // selection was right after sending this focus event and (if you let it)\n // moves the cursor back to the beginning of the editor, so we force the\n // selection here instead of simply accepting it in order to preserve the\n // old cursor position. See https://crbug.com/540004.\n // But it looks like this is fixed in Chrome 60.0.3081.0.\n // Other browsers also don't have this bug, so we prefer to acceptSelection\n // when possible, to ensure that unfocusing and refocusing a Draft editor\n // doesn't preserve the selection, matching how textareas work.\n\n if (UserAgent.isBrowser('Chrome < 60.0.3081.0')) {\n editor.update(EditorState.forceSelection(editorState, selection));\n } else {\n editor.update(EditorState.acceptSelection(editorState, selection));\n }\n}\n\nmodule.exports = editOnFocus;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar _require = require(\"./draftKeyUtils\"),\n notEmptyKey = _require.notEmptyKey;\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar keyCommandPlainBackspace = require(\"./keyCommandPlainBackspace\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isGecko = UserAgent.isEngine('Gecko');\nvar DOUBLE_NEWLINE = '\\n\\n';\n\nfunction onInputType(inputType, editorState) {\n switch (inputType) {\n case 'deleteContentBackward':\n return keyCommandPlainBackspace(editorState);\n }\n\n return editorState;\n}\n/**\n * This function serves two purposes\n *\n * 1. To update the editorState and call onChange method with the new\n * editorState. This editorState is calculated in editOnBeforeInput but the\n * onChange method is not called with the new state until this method does it.\n * It is done to handle a specific case where certain character inputs might\n * be replaced with something else. E.g. snippets ('rc' might be replaced\n * with boilerplate code for react component). More information on the\n * exact problem can be found here -\n * https://github.com/facebook/draft-js/commit/07892ba479bd4dfc6afd1e0ed179aaf51cd138b1\n *\n * 2. intended to handle spellcheck and autocorrect changes,\n * which occur in the DOM natively without any opportunity to observe or\n * interpret the changes before they occur.\n *\n * The `input` event fires in contentEditable elements reliably for non-IE\n * browsers, immediately after changes occur to the editor DOM. Since our other\n * handlers override or otherwise handle cover other varieties of text input,\n * the DOM state should match the model in all controlled input cases. Thus,\n * when an `input` change leads to a DOM/model mismatch, the change should be\n * due to a spellcheck change, and we can incorporate it into our model.\n */\n\n\nfunction editOnInput(editor, e) {\n if (editor._pendingStateFromBeforeInput !== undefined) {\n editor.update(editor._pendingStateFromBeforeInput);\n editor._pendingStateFromBeforeInput = undefined;\n } // at this point editor is not null for sure (after input)\n\n\n var castedEditorElement = editor.editor;\n var domSelection = castedEditorElement.ownerDocument.defaultView.getSelection();\n var anchorNode = domSelection.anchorNode,\n isCollapsed = domSelection.isCollapsed;\n var isNotTextOrElementNode = (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) !== Node.TEXT_NODE && (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) !== Node.ELEMENT_NODE;\n\n if (anchorNode == null || isNotTextOrElementNode) {\n // TODO: (t16149272) figure out context for this change\n return;\n }\n\n if (anchorNode.nodeType === Node.TEXT_NODE && (anchorNode.previousSibling !== null || anchorNode.nextSibling !== null)) {\n // When typing at the beginning of a visual line, Chrome splits the text\n // nodes into two. Why? No one knows. This commit is suspicious:\n // https://chromium.googlesource.com/chromium/src/+/a3b600981286b135632371477f902214c55a1724\n // To work around, we'll merge the sibling text nodes back into this one.\n var span = anchorNode.parentNode;\n\n if (span == null) {\n // Handle null-parent case.\n return;\n }\n\n anchorNode.nodeValue = span.textContent;\n\n for (var child = span.firstChild; child != null; child = child.nextSibling) {\n if (child !== anchorNode) {\n span.removeChild(child);\n }\n }\n }\n\n var domText = anchorNode.textContent;\n var editorState = editor._latestEditorState;\n var offsetKey = nullthrows(findAncestorOffsetKey(anchorNode));\n\n var _DraftOffsetKey$decod = DraftOffsetKey.decode(offsetKey),\n blockKey = _DraftOffsetKey$decod.blockKey,\n decoratorKey = _DraftOffsetKey$decod.decoratorKey,\n leafKey = _DraftOffsetKey$decod.leafKey;\n\n var _editorState$getBlock = editorState.getBlockTree(blockKey).getIn([decoratorKey, 'leaves', leafKey]),\n start = _editorState$getBlock.start,\n end = _editorState$getBlock.end;\n\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(blockKey);\n var modelText = block.getText().slice(start, end); // Special-case soft newlines here. If the DOM text ends in a soft newline,\n // we will have manually inserted an extra soft newline in DraftEditorLeaf.\n // We want to remove this extra newline for the purpose of our comparison\n // of DOM and model text.\n\n if (domText.endsWith(DOUBLE_NEWLINE)) {\n domText = domText.slice(0, -1);\n } // No change -- the DOM is up to date. Nothing to do here.\n\n\n if (domText === modelText) {\n // This can be buggy for some Android keyboards because they don't fire\n // standard onkeydown/pressed events and only fired editOnInput\n // so domText is already changed by the browser and ends up being equal\n // to modelText unexpectedly.\n // Newest versions of Android support the dom-inputevent-inputtype\n // and we can use the `inputType` to properly apply the state changes.\n\n /* $FlowFixMe[prop-missing] inputType is only defined on a draft of a\n * standard. https://w3c.github.io/input-events/#dom-inputevent-inputtype\n */\n var inputType = e.nativeEvent.inputType;\n\n if (inputType) {\n var newEditorState = onInputType(inputType, editorState);\n\n if (newEditorState !== editorState) {\n editor.restoreEditorDOM();\n editor.update(newEditorState);\n return;\n }\n }\n\n return;\n }\n\n var selection = editorState.getSelection(); // We'll replace the entire leaf with the text content of the target.\n\n var targetRange = selection.merge({\n anchorOffset: start,\n focusOffset: end,\n isBackward: false\n });\n var entityKey = block.getEntityAt(start);\n var entity = notEmptyKey(entityKey) ? content.getEntity(entityKey) : null;\n var entityType = entity != null ? entity.getMutability() : null;\n var preserveEntity = entityType === 'MUTABLE'; // Immutable or segmented entities cannot properly be handled by the\n // default browser undo, so we have to use a different change type to\n // force using our internal undo method instead of falling through to the\n // native browser undo.\n\n var changeType = preserveEntity ? 'spellcheck-change' : 'apply-entity';\n var newContent = DraftModifier.replaceText(content, targetRange, domText, block.getInlineStyleAt(start), preserveEntity ? block.getEntityAt(start) : null);\n var anchorOffset, focusOffset, startOffset, endOffset;\n\n if (isGecko) {\n // Firefox selection does not change while the context menu is open, so\n // we preserve the anchor and focus values of the DOM selection.\n anchorOffset = domSelection.anchorOffset;\n focusOffset = domSelection.focusOffset;\n startOffset = start + Math.min(anchorOffset, focusOffset);\n endOffset = startOffset + Math.abs(anchorOffset - focusOffset);\n anchorOffset = startOffset;\n focusOffset = endOffset;\n } else {\n // Browsers other than Firefox may adjust DOM selection while the context\n // menu is open, and Safari autocorrect is prone to providing an inaccurate\n // DOM selection. Don't trust it. Instead, use our existing SelectionState\n // and adjust it based on the number of characters changed during the\n // mutation.\n var charDelta = domText.length - modelText.length;\n startOffset = selection.getStartOffset();\n endOffset = selection.getEndOffset();\n anchorOffset = isCollapsed ? endOffset + charDelta : startOffset;\n focusOffset = endOffset + charDelta;\n } // Segmented entities are completely or partially removed when their\n // text content changes. For this case we do not want any text to be selected\n // after the change, so we are not merging the selection.\n\n\n var contentWithAdjustedDOMSelection = newContent.merge({\n selectionBefore: content.getSelectionAfter(),\n selectionAfter: selection.merge({\n anchorOffset: anchorOffset,\n focusOffset: focusOffset\n })\n });\n editor.update(EditorState.push(editorState, contentWithAdjustedDOMSelection, changeType));\n}\n\nmodule.exports = editOnInput;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar SecondaryClipboard = require(\"./SecondaryClipboard\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar keyCommandBackspaceToStartOfLine = require(\"./keyCommandBackspaceToStartOfLine\");\n\nvar keyCommandBackspaceWord = require(\"./keyCommandBackspaceWord\");\n\nvar keyCommandDeleteWord = require(\"./keyCommandDeleteWord\");\n\nvar keyCommandInsertNewline = require(\"./keyCommandInsertNewline\");\n\nvar keyCommandMoveSelectionToEndOfBlock = require(\"./keyCommandMoveSelectionToEndOfBlock\");\n\nvar keyCommandMoveSelectionToStartOfBlock = require(\"./keyCommandMoveSelectionToStartOfBlock\");\n\nvar keyCommandPlainBackspace = require(\"./keyCommandPlainBackspace\");\n\nvar keyCommandPlainDelete = require(\"./keyCommandPlainDelete\");\n\nvar keyCommandTransposeCharacters = require(\"./keyCommandTransposeCharacters\");\n\nvar keyCommandUndo = require(\"./keyCommandUndo\");\n\nvar isOptionKeyCommand = KeyBindingUtil.isOptionKeyCommand;\nvar isChrome = UserAgent.isBrowser('Chrome');\n/**\n * Map a `DraftEditorCommand` command value to a corresponding function.\n */\n\nfunction onKeyCommand(command, editorState, e) {\n switch (command) {\n case 'redo':\n return EditorState.redo(editorState);\n\n case 'delete':\n return keyCommandPlainDelete(editorState);\n\n case 'delete-word':\n return keyCommandDeleteWord(editorState);\n\n case 'backspace':\n return keyCommandPlainBackspace(editorState);\n\n case 'backspace-word':\n return keyCommandBackspaceWord(editorState);\n\n case 'backspace-to-start-of-line':\n return keyCommandBackspaceToStartOfLine(editorState, e);\n\n case 'split-block':\n return keyCommandInsertNewline(editorState);\n\n case 'transpose-characters':\n return keyCommandTransposeCharacters(editorState);\n\n case 'move-selection-to-start-of-block':\n return keyCommandMoveSelectionToStartOfBlock(editorState);\n\n case 'move-selection-to-end-of-block':\n return keyCommandMoveSelectionToEndOfBlock(editorState);\n\n case 'secondary-cut':\n return SecondaryClipboard.cut(editorState);\n\n case 'secondary-paste':\n return SecondaryClipboard.paste(editorState);\n\n default:\n return editorState;\n }\n}\n/**\n * Intercept keydown behavior to handle keys and commands manually, if desired.\n *\n * Keydown combinations may be mapped to `DraftCommand` values, which may\n * correspond to command functions that modify the editor or its contents.\n *\n * See `getDefaultKeyBinding` for defaults. Alternatively, the top-level\n * component may provide a custom mapping via the `keyBindingFn` prop.\n */\n\n\nfunction editOnKeyDown(editor, e) {\n var keyCode = e.which;\n var editorState = editor._latestEditorState;\n\n function callDeprecatedHandler(handlerName) {\n var deprecatedHandler = editor.props[handlerName];\n\n if (deprecatedHandler) {\n deprecatedHandler(e);\n return true;\n } else {\n return false;\n }\n }\n\n switch (keyCode) {\n case Keys.RETURN:\n e.preventDefault(); // The top-level component may manually handle newline insertion. If\n // no special handling is performed, fall through to command handling.\n\n if (editor.props.handleReturn && isEventHandled(editor.props.handleReturn(e, editorState))) {\n return;\n }\n\n break;\n\n case Keys.ESC:\n e.preventDefault();\n\n if (callDeprecatedHandler('onEscape')) {\n return;\n }\n\n break;\n\n case Keys.TAB:\n if (callDeprecatedHandler('onTab')) {\n return;\n }\n\n break;\n\n case Keys.UP:\n if (callDeprecatedHandler('onUpArrow')) {\n return;\n }\n\n break;\n\n case Keys.RIGHT:\n if (callDeprecatedHandler('onRightArrow')) {\n return;\n }\n\n break;\n\n case Keys.DOWN:\n if (callDeprecatedHandler('onDownArrow')) {\n return;\n }\n\n break;\n\n case Keys.LEFT:\n if (callDeprecatedHandler('onLeftArrow')) {\n return;\n }\n\n break;\n\n case Keys.SPACE:\n // Prevent Chrome on OSX behavior where option + space scrolls.\n if (isChrome && isOptionKeyCommand(e)) {\n e.preventDefault();\n }\n\n }\n\n var command = editor.props.keyBindingFn(e); // If no command is specified, allow keydown event to continue.\n\n if (command == null || command === '') {\n if (keyCode === Keys.SPACE && isChrome && isOptionKeyCommand(e)) {\n // The default keydown event has already been prevented in order to stop\n // Chrome from scrolling. Insert a nbsp into the editor as OSX would for\n // other browsers.\n var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), \"\\xA0\");\n editor.update(EditorState.push(editorState, contentState, 'insert-characters'));\n }\n\n return;\n }\n\n if (command === 'undo') {\n // Since undo requires some special updating behavior to keep the editor\n // in sync, handle it separately.\n keyCommandUndo(e, editorState, editor.update);\n return;\n } // At this point, we know that we're handling a command of some kind, so\n // we don't want to insert a character following the keydown.\n\n\n e.preventDefault(); // Allow components higher up the tree to handle the command first.\n\n if (editor.props.handleKeyCommand && isEventHandled(editor.props.handleKeyCommand(command, editorState, e.timeStamp))) {\n return;\n }\n\n var newState = onKeyCommand(command, editorState, e);\n\n if (newState !== editorState) {\n editor.update(newState);\n }\n}\n\nmodule.exports = editOnKeyDown;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nfunction isSoftNewlineEvent(e) {\n return e.which === Keys.RETURN && (e.getModifierState('Shift') || e.getModifierState('Alt') || e.getModifierState('Control'));\n}\n\nmodule.exports = isSoftNewlineEvent;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar clipboard = null;\n/**\n * Some systems offer a \"secondary\" clipboard to allow quick internal cut\n * and paste behavior. For instance, Ctrl+K (cut) and Ctrl+Y (paste).\n */\n\nvar SecondaryClipboard = {\n cut: function cut(editorState) {\n var content = editorState.getCurrentContent();\n var selection = editorState.getSelection();\n var targetRange = null;\n\n if (selection.isCollapsed()) {\n var anchorKey = selection.getAnchorKey();\n var blockEnd = content.getBlockForKey(anchorKey).getLength();\n\n if (blockEnd === selection.getAnchorOffset()) {\n var keyAfter = content.getKeyAfter(anchorKey);\n\n if (keyAfter == null) {\n return editorState;\n }\n\n targetRange = selection.set('focusKey', keyAfter).set('focusOffset', 0);\n } else {\n targetRange = selection.set('focusOffset', blockEnd);\n }\n } else {\n targetRange = selection;\n }\n\n targetRange = nullthrows(targetRange); // TODO: This should actually append to the current state when doing\n // successive ^K commands without any other cursor movement\n\n clipboard = getContentStateFragment(content, targetRange);\n var afterRemoval = DraftModifier.removeRange(content, targetRange, 'forward');\n\n if (afterRemoval === content) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n },\n paste: function paste(editorState) {\n if (!clipboard) {\n return editorState;\n }\n\n var newContent = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), clipboard);\n return EditorState.push(editorState, newContent, 'insert-fragment');\n }\n};\nmodule.exports = SecondaryClipboard;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar expandRangeToStartOfLine = require(\"./expandRangeToStartOfLine\");\n\nvar getDraftEditorSelectionWithNodes = require(\"./getDraftEditorSelectionWithNodes\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n\nfunction keyCommandBackspaceToStartOfLine(editorState, e) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n\n if (selection.isCollapsed() && selection.getAnchorOffset() === 0) {\n return moveSelectionBackward(strategyState, 1);\n }\n\n var ownerDocument = e.currentTarget.ownerDocument;\n var domSelection = ownerDocument.defaultView.getSelection(); // getRangeAt can technically throw if there's no selection, but we know\n // there is one here because text editor has focus (the cursor is a\n // selection of length 0). Therefore, we don't need to wrap this in a\n // try-catch block.\n\n var range = domSelection.getRangeAt(0);\n range = expandRangeToStartOfLine(range);\n return getDraftEditorSelectionWithNodes(strategyState, null, range.endContainer, range.endOffset, range.startContainer, range.startOffset).selectionState;\n }, 'backward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandBackspaceToStartOfLine;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getRangeClientRects = require(\"./getRangeClientRects\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Return the computed line height, in pixels, for the provided element.\n */\n\n\nfunction getLineHeightPx(element) {\n var computed = getComputedStyle(element);\n var correctDocument = getCorrectDocumentFromNode(element);\n var div = correctDocument.createElement('div');\n div.style.fontFamily = computed.fontFamily;\n div.style.fontSize = computed.fontSize;\n div.style.fontStyle = computed.fontStyle;\n div.style.fontWeight = computed.fontWeight;\n div.style.lineHeight = computed.lineHeight;\n div.style.position = 'absolute';\n div.textContent = 'M';\n var documentBody = correctDocument.body;\n !documentBody ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing document.body') : invariant(false) : void 0; // forced layout here\n\n documentBody.appendChild(div);\n var rect = div.getBoundingClientRect();\n documentBody.removeChild(div);\n return rect.height;\n}\n/**\n * Return whether every ClientRect in the provided list lies on the same line.\n *\n * We assume that the rects on the same line all contain the baseline, so the\n * lowest top line needs to be above the highest bottom line (i.e., if you were\n * to project the rects onto the y-axis, their intersection would be nonempty).\n *\n * In addition, we require that no two boxes are lineHeight (or more) apart at\n * either top or bottom, which helps protect against false positives for fonts\n * with extremely large glyph heights (e.g., with a font size of 17px, Zapfino\n * produces rects of height 58px!).\n */\n\n\nfunction areRectsOnOneLine(rects, lineHeight) {\n var minTop = Infinity;\n var minBottom = Infinity;\n var maxTop = -Infinity;\n var maxBottom = -Infinity;\n\n for (var ii = 0; ii < rects.length; ii++) {\n var rect = rects[ii];\n\n if (rect.width === 0 || rect.width === 1) {\n // When a range starts or ends a soft wrap, many browsers (Chrome, IE,\n // Safari) include an empty rect on the previous or next line. When the\n // text lies in a container whose position is not integral (e.g., from\n // margin: auto), Safari makes these empty rects have width 1 (instead of\n // 0). Having one-pixel-wide characters seems unlikely (and most browsers\n // report widths in subpixel precision anyway) so it's relatively safe to\n // skip over them.\n continue;\n }\n\n minTop = Math.min(minTop, rect.top);\n minBottom = Math.min(minBottom, rect.bottom);\n maxTop = Math.max(maxTop, rect.top);\n maxBottom = Math.max(maxBottom, rect.bottom);\n }\n\n return maxTop <= minBottom && maxTop - minTop < lineHeight && maxBottom - minBottom < lineHeight;\n}\n/**\n * Return the length of a node, as used by Range offsets.\n */\n\n\nfunction getNodeLength(node) {\n // http://www.w3.org/TR/dom/#concept-node-length\n switch (node.nodeType) {\n case Node.DOCUMENT_TYPE_NODE:\n return 0;\n\n case Node.TEXT_NODE:\n case Node.PROCESSING_INSTRUCTION_NODE:\n case Node.COMMENT_NODE:\n return node.length;\n\n default:\n return node.childNodes.length;\n }\n}\n/**\n * Given a collapsed range, move the start position backwards as far as\n * possible while the range still spans only a single line.\n */\n\n\nfunction expandRangeToStartOfLine(range) {\n !range.collapsed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'expandRangeToStartOfLine: Provided range is not collapsed.') : invariant(false) : void 0;\n range = range.cloneRange();\n var containingElement = range.startContainer;\n\n if (containingElement.nodeType !== 1) {\n containingElement = containingElement.parentNode;\n }\n\n var lineHeight = getLineHeightPx(containingElement); // Imagine our text looks like:\n // <div><span>once upon a time, there was a <em>boy\n // who lived</em> </span><q><strong>under^ the\n // stairs</strong> in a small closet.</q></div>\n // where the caret represents the cursor. First, we crawl up the tree until\n // the range spans multiple lines (setting the start point to before\n // \"<strong>\", then before \"<div>\"), then at each level we do a search to\n // find the latest point which is still on a previous line. We'll find that\n // the break point is inside the span, then inside the <em>, then in its text\n // node child, the actual break point before \"who\".\n\n var bestContainer = range.endContainer;\n var bestOffset = range.endOffset;\n range.setStart(range.startContainer, 0);\n\n while (areRectsOnOneLine(getRangeClientRects(range), lineHeight)) {\n bestContainer = range.startContainer;\n bestOffset = range.startOffset;\n !bestContainer.parentNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Found unexpected detached subtree when traversing.') : invariant(false) : void 0;\n range.setStartBefore(bestContainer);\n\n if (bestContainer.nodeType === 1 && getComputedStyle(bestContainer).display !== 'inline') {\n // The start of the line is never in a different block-level container.\n break;\n }\n } // In the above example, range now spans from \"<div>\" to \"under\",\n // bestContainer is <div>, and bestOffset is 1 (index of <q> inside <div>)].\n // Picking out which child to recurse into here is a special case since we\n // don't want to check past <q> -- once we find that the final range starts\n // in <span>, we can look at all of its children (and all of their children)\n // to find the break point.\n // At all times, (bestContainer, bestOffset) is the latest single-line start\n // point that we know of.\n\n\n var currentContainer = bestContainer;\n var maxIndexToConsider = bestOffset - 1;\n\n do {\n var nodeValue = currentContainer.nodeValue;\n var ii = maxIndexToConsider;\n\n for (; ii >= 0; ii--) {\n if (nodeValue != null && ii > 0 && UnicodeUtils.isSurrogatePair(nodeValue, ii - 1)) {\n // We're in the middle of a surrogate pair -- skip over so we never\n // return a range with an endpoint in the middle of a code point.\n continue;\n }\n\n range.setStart(currentContainer, ii);\n\n if (areRectsOnOneLine(getRangeClientRects(range), lineHeight)) {\n bestContainer = currentContainer;\n bestOffset = ii;\n } else {\n break;\n }\n }\n\n if (ii === -1 || currentContainer.childNodes.length === 0) {\n // If ii === -1, then (bestContainer, bestOffset), which is equal to\n // (currentContainer, 0), was a single-line start point but a start\n // point before currentContainer wasn't, so the line break seems to\n // have occurred immediately after currentContainer's start tag\n //\n // If currentContainer.childNodes.length === 0, we're already at a\n // terminal node (e.g., text node) and should return our current best.\n break;\n }\n\n currentContainer = currentContainer.childNodes[ii];\n maxIndexToConsider = getNodeLength(currentContainer);\n } while (true);\n\n range.setStart(bestContainer, bestOffset);\n return range;\n}\n\nmodule.exports = expandRangeToStartOfLine;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftRemovableWord = require(\"./DraftRemovableWord\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Delete the word that is left of the cursor, as well as any spaces or\n * punctuation after the word.\n */\n\n\nfunction keyCommandBackspaceWord(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var offset = selection.getStartOffset(); // If there are no words before the cursor, remove the preceding newline.\n\n if (offset === 0) {\n return moveSelectionBackward(strategyState, 1);\n }\n\n var key = selection.getStartKey();\n var content = strategyState.getCurrentContent();\n var text = content.getBlockForKey(key).getText().slice(0, offset);\n var toRemove = DraftRemovableWord.getBackward(text);\n return moveSelectionBackward(strategyState, toRemove.length || 1);\n }, 'backward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandBackspaceWord;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * @stub\n * \n */\n'use strict'; // \\u00a1-\\u00b1\\u00b4-\\u00b8\\u00ba\\u00bb\\u00bf\n// is latin supplement punctuation except fractions and superscript\n// numbers\n// \\u2010-\\u2027\\u2030-\\u205e\n// is punctuation from the general punctuation block:\n// weird quotes, commas, bullets, dashes, etc.\n// \\u30fb\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301f\n// is CJK punctuation\n// \\uff1a-\\uff1f\\uff01-\\uff0f\\uff3b-\\uff40\\uff5b-\\uff65\n// is some full-width/half-width punctuation\n// \\u2E2E\\u061f\\u066a-\\u066c\\u061b\\u060c\\u060d\\uFD3e\\uFD3F\n// is some Arabic punctuation marks\n// \\u1801\\u0964\\u104a\\u104b\n// is misc. other language punctuation marks\n\nvar PUNCTUATION = '[.,+*?$|#{}()\\'\\\\^\\\\-\\\\[\\\\]\\\\\\\\\\\\/!@%\"~=<>_:;' + \"\\u30FB\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301F\\uFF1A-\\uFF1F\\uFF01-\\uFF0F\" + \"\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\u2E2E\\u061F\\u066A-\\u066C\\u061B\\u060C\\u060D\" + \"\\uFD3E\\uFD3F\\u1801\\u0964\\u104A\\u104B\\u2010-\\u2027\\u2030-\\u205E\" + \"\\xA1-\\xB1\\xB4-\\xB8\\xBA\\xBB\\xBF]\";\nmodule.exports = {\n getPunctuation: function getPunctuation() {\n return PUNCTUATION;\n }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftRemovableWord = require(\"./DraftRemovableWord\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar moveSelectionForward = require(\"./moveSelectionForward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Delete the word that is right of the cursor, as well as any spaces or\n * punctuation before the word.\n */\n\n\nfunction keyCommandDeleteWord(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var offset = selection.getStartOffset();\n var key = selection.getStartKey();\n var content = strategyState.getCurrentContent();\n var text = content.getBlockForKey(key).getText().slice(offset);\n var toRemove = DraftRemovableWord.getForward(text); // If there are no words in front of the cursor, remove the newline.\n\n return moveSelectionForward(strategyState, toRemove.length || 1);\n }, 'forward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandDeleteWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nfunction keyCommandInsertNewline(editorState) {\n var contentState = DraftModifier.splitBlock(editorState.getCurrentContent(), editorState.getSelection());\n return EditorState.push(editorState, contentState, 'split-block');\n}\n\nmodule.exports = keyCommandInsertNewline;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * See comment for `moveSelectionToStartOfBlock`.\n */\n\n\nfunction keyCommandMoveSelectionToEndOfBlock(editorState) {\n var selection = editorState.getSelection();\n var endKey = selection.getEndKey();\n var content = editorState.getCurrentContent();\n var textLength = content.getBlockForKey(endKey).getLength();\n return EditorState.set(editorState, {\n selection: selection.merge({\n anchorKey: endKey,\n anchorOffset: textLength,\n focusKey: endKey,\n focusOffset: textLength,\n isBackward: false\n }),\n forceSelection: true\n });\n}\n\nmodule.exports = keyCommandMoveSelectionToEndOfBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * Collapse selection at the start of the first selected block. This is used\n * for Firefox versions that attempt to navigate forward/backward instead of\n * moving the cursor. Other browsers are able to move the cursor natively.\n */\n\n\nfunction keyCommandMoveSelectionToStartOfBlock(editorState) {\n var selection = editorState.getSelection();\n var startKey = selection.getStartKey();\n return EditorState.set(editorState, {\n selection: selection.merge({\n anchorKey: startKey,\n anchorOffset: 0,\n focusKey: startKey,\n focusOffset: 0,\n isBackward: false\n }),\n forceSelection: true\n });\n}\n\nmodule.exports = keyCommandMoveSelectionToStartOfBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar moveSelectionForward = require(\"./moveSelectionForward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Remove the selected range. If the cursor is collapsed, remove the following\n * character. This operation is Unicode-aware, so removing a single character\n * will remove a surrogate pair properly as well.\n */\n\n\nfunction keyCommandPlainDelete(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var content = strategyState.getCurrentContent();\n var key = selection.getAnchorKey();\n var offset = selection.getAnchorOffset();\n var charAhead = content.getBlockForKey(key).getText()[offset];\n return moveSelectionForward(strategyState, charAhead ? UnicodeUtils.getUTF16Length(charAhead, 0) : 1);\n }, 'forward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n var selection = editorState.getSelection();\n return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'delete-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainDelete;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n/**\n * Transpose the characters on either side of a collapsed cursor, or\n * if the cursor is at the end of the block, transpose the last two\n * characters.\n */\n\n\nfunction keyCommandTransposeCharacters(editorState) {\n var selection = editorState.getSelection();\n\n if (!selection.isCollapsed()) {\n return editorState;\n }\n\n var offset = selection.getAnchorOffset();\n\n if (offset === 0) {\n return editorState;\n }\n\n var blockKey = selection.getAnchorKey();\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(blockKey);\n var length = block.getLength(); // Nothing to transpose if there aren't two characters.\n\n if (length <= 1) {\n return editorState;\n }\n\n var removalRange;\n var finalSelection;\n\n if (offset === length) {\n // The cursor is at the end of the block. Swap the last two characters.\n removalRange = selection.set('anchorOffset', offset - 1);\n finalSelection = selection;\n } else {\n removalRange = selection.set('focusOffset', offset + 1);\n finalSelection = removalRange.set('anchorOffset', offset + 1);\n } // Extract the character to move as a fragment. This preserves its\n // styling and entity, if any.\n\n\n var movedFragment = getContentStateFragment(content, removalRange);\n var afterRemoval = DraftModifier.removeRange(content, removalRange, 'backward'); // After the removal, the insertion target is one character back.\n\n var selectionAfter = afterRemoval.getSelectionAfter();\n var targetOffset = selectionAfter.getAnchorOffset() - 1;\n var targetRange = selectionAfter.merge({\n anchorOffset: targetOffset,\n focusOffset: targetOffset\n });\n var afterInsert = DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n var newEditorState = EditorState.push(editorState, afterInsert, 'insert-fragment');\n return EditorState.acceptSelection(newEditorState, finalSelection);\n}\n\nmodule.exports = keyCommandTransposeCharacters;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nfunction keyCommandUndo(e, editorState, updateFn) {\n var undoneState = EditorState.undo(editorState); // If the last change to occur was a spellcheck change, allow the undo\n // event to fall through to the browser. This allows the browser to record\n // the unwanted change, which should soon lead it to learn not to suggest\n // the correction again.\n\n if (editorState.getLastChangeType() === 'spellcheck-change') {\n var nativelyRenderedContent = undoneState.getCurrentContent();\n updateFn(EditorState.set(undoneState, {\n nativelyRenderedContent: nativelyRenderedContent\n }));\n return;\n } // Otheriwse, manage the undo behavior manually.\n\n\n e.preventDefault();\n\n if (!editorState.getNativelyRenderedContent()) {\n updateFn(undoneState);\n return;\n } // Trigger a re-render with the current content state to ensure that the\n // component tree has up-to-date props for comparison.\n\n\n updateFn(EditorState.set(editorState, {\n nativelyRenderedContent: null\n })); // Wait to ensure that the re-render has occurred before performing\n // the undo action.\n\n setTimeout(function () {\n updateFn(undoneState);\n }, 0);\n}\n\nmodule.exports = keyCommandUndo;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar DataTransfer = require(\"fbjs/lib/DataTransfer\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftPasteProcessor = require(\"./DraftPasteProcessor\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar RichTextEditorUtil = require(\"./RichTextEditorUtil\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar getTextContentFromFiles = require(\"./getTextContentFromFiles\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar splitTextIntoTextBlocks = require(\"./splitTextIntoTextBlocks\");\n/**\n * Paste content.\n */\n\n\nfunction editOnPaste(editor, e) {\n e.preventDefault();\n var data = new DataTransfer(e.clipboardData); // Get files, unless this is likely to be a string the user wants inline.\n\n if (!data.isRichText()) {\n var files = data.getFiles();\n var defaultFileText = data.getText();\n\n if (files.length > 0) {\n // Allow customized paste handling for images, etc. Otherwise, fall\n // through to insert text contents into the editor.\n if (editor.props.handlePastedFiles && isEventHandled(editor.props.handlePastedFiles(files))) {\n return;\n }\n /* $FlowFixMe[incompatible-call] This comment suppresses an error found\n * DataTransfer was typed. getFiles() returns an array of <Files extends\n * Blob>, not Blob */\n\n\n getTextContentFromFiles(files, function (\n /*string*/\n fileText) {\n fileText = fileText || defaultFileText;\n\n if (!fileText) {\n return;\n }\n\n var editorState = editor._latestEditorState;\n var blocks = splitTextIntoTextBlocks(fileText);\n var character = CharacterMetadata.create({\n style: editorState.getCurrentInlineStyle(),\n entity: getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection())\n });\n var currentBlockType = RichTextEditorUtil.getCurrentBlockType(editorState);\n var text = DraftPasteProcessor.processText(blocks, character, currentBlockType);\n var fragment = BlockMapBuilder.createFromArray(text);\n var withInsertedText = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), fragment);\n editor.update(EditorState.push(editorState, withInsertedText, 'insert-fragment'));\n });\n return;\n }\n }\n\n var textBlocks = [];\n var text = data.getText();\n var html = data.getHTML();\n var editorState = editor._latestEditorState;\n\n if (editor.props.formatPastedText) {\n var _editor$props$formatP = editor.props.formatPastedText(text, html),\n formattedText = _editor$props$formatP.text,\n formattedHtml = _editor$props$formatP.html;\n\n text = formattedText;\n html = formattedHtml;\n }\n\n if (editor.props.handlePastedText && isEventHandled(editor.props.handlePastedText(text, html, editorState))) {\n return;\n }\n\n if (text) {\n textBlocks = splitTextIntoTextBlocks(text);\n }\n\n if (!editor.props.stripPastedStyles) {\n // If the text from the paste event is rich content that matches what we\n // already have on the internal clipboard, assume that we should just use\n // the clipboard fragment for the paste. This will allow us to preserve\n // styling and entities, if any are present. Note that newlines are\n // stripped during comparison -- this is because copy/paste within the\n // editor in Firefox and IE will not include empty lines. The resulting\n // paste will preserve the newlines correctly.\n var internalClipboard = editor.getClipboard();\n\n if (!editor.props.formatPastedText && data.isRichText() && internalClipboard) {\n var _html;\n\n if ( // If the editorKey is present in the pasted HTML, it should be safe to\n // assume this is an internal paste.\n ((_html = html) === null || _html === void 0 ? void 0 : _html.indexOf(editor.getEditorKey())) !== -1 || // The copy may have been made within a single block, in which case the\n // editor key won't be part of the paste. In this case, just check\n // whether the pasted text matches the internal clipboard.\n textBlocks.length === 1 && internalClipboard.size === 1 && internalClipboard.first().getText() === text) {\n editor.update(insertFragment(editor._latestEditorState, internalClipboard));\n return;\n }\n } else if (internalClipboard && data.types.includes('com.apple.webarchive') && !data.types.includes('text/html') && areTextBlocksAndClipboardEqual(textBlocks, internalClipboard)) {\n // Safari does not properly store text/html in some cases.\n // Use the internalClipboard if present and equal to what is on\n // the clipboard. See https://bugs.webkit.org/show_bug.cgi?id=19893.\n editor.update(insertFragment(editor._latestEditorState, internalClipboard));\n return;\n } // If there is html paste data, try to parse that.\n\n\n if (html) {\n var htmlFragment = DraftPasteProcessor.processHTML(html, editor.props.blockRenderMap);\n\n if (htmlFragment) {\n var contentBlocks = htmlFragment.contentBlocks,\n entityMap = htmlFragment.entityMap;\n\n if (contentBlocks) {\n var htmlMap = BlockMapBuilder.createFromArray(contentBlocks);\n editor.update(insertFragment(editor._latestEditorState, htmlMap, entityMap));\n return;\n }\n }\n } // Otherwise, create a new fragment from our pasted text. Also\n // empty the internal clipboard, since it's no longer valid.\n\n\n editor.setClipboard(null);\n }\n\n if (textBlocks.length) {\n var character = CharacterMetadata.create({\n style: editorState.getCurrentInlineStyle(),\n entity: getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection())\n });\n var currentBlockType = RichTextEditorUtil.getCurrentBlockType(editorState);\n var textFragment = DraftPasteProcessor.processText(textBlocks, character, currentBlockType);\n var textMap = BlockMapBuilder.createFromArray(textFragment);\n editor.update(insertFragment(editor._latestEditorState, textMap));\n }\n}\n\nfunction insertFragment(editorState, fragment, entityMap) {\n var newContent = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), fragment); // TODO: merge the entity map once we stop using DraftEntity\n // like this:\n // const mergedEntityMap = newContent.getEntityMap().merge(entityMap);\n\n return EditorState.push(editorState, newContent.set('entityMap', entityMap), 'insert-fragment');\n}\n\nfunction areTextBlocksAndClipboardEqual(textBlocks, blockMap) {\n return textBlocks.length === blockMap.size && blockMap.valueSeq().every(function (block, ii) {\n return block.getText() === textBlocks[ii];\n });\n}\n\nmodule.exports = editOnPaste;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar convertFromHTMLToContentBlocks = require(\"./convertFromHTMLToContentBlocks\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getSafeBodyFromHTML = require(\"./getSafeBodyFromHTML\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar sanitizeDraftText = require(\"./sanitizeDraftText\");\n\nvar List = Immutable.List,\n Repeat = Immutable.Repeat;\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\nvar DraftPasteProcessor = {\n processHTML: function processHTML(html, blockRenderMap) {\n return convertFromHTMLToContentBlocks(html, getSafeBodyFromHTML, blockRenderMap);\n },\n processText: function processText(textBlocks, character, type) {\n return textBlocks.reduce(function (acc, textLine, index) {\n textLine = sanitizeDraftText(textLine);\n var key = generateRandomKey();\n var blockNodeConfig = {\n key: key,\n type: type,\n text: textLine,\n characterList: List(Repeat(character, textLine.length))\n }; // next block updates previous block\n\n if (experimentalTreeDataSupport && index !== 0) {\n var prevSiblingIndex = index - 1; // update previous block\n\n var previousBlock = acc[prevSiblingIndex] = acc[prevSiblingIndex].merge({\n nextSibling: key\n });\n blockNodeConfig = _objectSpread({}, blockNodeConfig, {\n prevSibling: previousBlock.getKey()\n });\n }\n\n acc.push(new ContentBlockRecord(blockNodeConfig));\n return acc;\n }, []);\n }\n};\nmodule.exports = DraftPasteProcessor;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar URI =\n/*#__PURE__*/\nfunction () {\n function URI(uri) {\n _defineProperty(this, \"_uri\", void 0);\n\n this._uri = uri;\n }\n\n var _proto = URI.prototype;\n\n _proto.toString = function toString() {\n return this._uri;\n };\n\n return URI;\n}();\n\nmodule.exports = URI;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLAnchorElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return isElement(node) && node.nodeName === 'A';\n}\n\nmodule.exports = isHTMLAnchorElement;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLImageElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return isElement(node) && node.nodeName === 'IMG';\n}\n\nmodule.exports = isHTMLImageElement;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction adjustBlockDepthForContentState(contentState, selectionState, adjustment, maxDepth) {\n var startKey = selectionState.getStartKey();\n var endKey = selectionState.getEndKey();\n var blockMap = contentState.getBlockMap();\n var blocks = blockMap.toSeq().skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).concat([[endKey, blockMap.get(endKey)]]).map(function (block) {\n var depth = block.getDepth() + adjustment;\n depth = Math.max(0, Math.min(depth, maxDepth));\n return block.set('depth', depth);\n });\n blockMap = blockMap.merge(blocks);\n return contentState.merge({\n blockMap: blockMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = adjustBlockDepthForContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar NEWLINE_REGEX = /\\r\\n?|\\n/g;\n\nfunction splitTextIntoTextBlocks(text) {\n return text.split(NEWLINE_REGEX);\n}\n\nmodule.exports = splitTextIntoTextBlocks;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar ReactDOMComet = require(\"react-dom\");\n\nvar flushControlled = ReactDOMComet.unstable_flushControlled;\nmodule.exports = flushControlled;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\n/**\n * This component is responsible for rendering placeholder text for the\n * `DraftEditor` component.\n *\n * Override placeholder style via CSS.\n */\nvar DraftEditorPlaceholder = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorPlaceholder, _React$Component);\n\n function DraftEditorPlaceholder() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorPlaceholder.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return this.props.text !== nextProps.text || this.props.editorState.getSelection().getHasFocus() !== nextProps.editorState.getSelection().getHasFocus();\n };\n\n _proto.render = function render() {\n var hasFocus = this.props.editorState.getSelection().getHasFocus();\n var className = cx({\n 'public/DraftEditorPlaceholder/root': true,\n 'public/DraftEditorPlaceholder/hasFocus': hasFocus\n });\n var contentStyle = {\n whiteSpace: 'pre-wrap'\n };\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: cx('public/DraftEditorPlaceholder/inner'),\n id: this.props.accessibilityID,\n style: contentStyle\n }, this.props.text));\n };\n\n return DraftEditorPlaceholder;\n}(React.Component);\n\nmodule.exports = DraftEditorPlaceholder;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftStringKey = require(\"./DraftStringKey\");\n\nvar encodeEntityRanges = require(\"./encodeEntityRanges\");\n\nvar encodeInlineStyleRanges = require(\"./encodeInlineStyleRanges\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar createRawBlock = function createRawBlock(block, entityStorageMap) {\n return {\n key: block.getKey(),\n text: block.getText(),\n type: block.getType(),\n depth: block.getDepth(),\n inlineStyleRanges: encodeInlineStyleRanges(block),\n entityRanges: encodeEntityRanges(block, entityStorageMap),\n data: block.getData().toObject()\n };\n};\n\nvar insertRawBlock = function insertRawBlock(block, entityMap, rawBlocks, blockCacheRef) {\n if (block instanceof ContentBlock) {\n rawBlocks.push(createRawBlock(block, entityMap));\n return;\n }\n\n !(block instanceof ContentBlockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'block is not a BlockNode') : invariant(false) : void 0;\n var parentKey = block.getParentKey();\n\n var rawBlock = blockCacheRef[block.getKey()] = _objectSpread({}, createRawBlock(block, entityMap), {\n children: []\n });\n\n if (parentKey) {\n blockCacheRef[parentKey].children.push(rawBlock);\n return;\n }\n\n rawBlocks.push(rawBlock);\n};\n\nvar encodeRawBlocks = function encodeRawBlocks(contentState, rawState) {\n var entityMap = rawState.entityMap;\n var rawBlocks = [];\n var blockCacheRef = {};\n var entityCacheRef = {};\n var entityStorageKey = 0;\n contentState.getBlockMap().forEach(function (block) {\n block.findEntityRanges(function (character) {\n return character.getEntity() !== null;\n }, function (start) {\n var entityKey = block.getEntityAt(start); // Stringify to maintain order of otherwise numeric keys.\n\n var stringifiedEntityKey = DraftStringKey.stringify(entityKey); // This makes this function resilient to two entities\n // erroneously having the same key\n\n if (entityCacheRef[stringifiedEntityKey]) {\n return;\n }\n\n entityCacheRef[stringifiedEntityKey] = entityKey; // we need the `any` casting here since this is a temporary state\n // where we will later on flip the entity map and populate it with\n // real entity, at this stage we just need to map back the entity\n // key used by the BlockNode\n\n entityMap[stringifiedEntityKey] = \"\".concat(entityStorageKey);\n entityStorageKey++;\n });\n insertRawBlock(block, entityMap, rawBlocks, blockCacheRef);\n });\n return {\n blocks: rawBlocks,\n entityMap: entityMap\n };\n}; // Flip storage map so that our storage keys map to global\n// DraftEntity keys.\n\n\nvar encodeRawEntityMap = function encodeRawEntityMap(contentState, rawState) {\n var blocks = rawState.blocks,\n entityMap = rawState.entityMap;\n var rawEntityMap = {};\n Object.keys(entityMap).forEach(function (key, index) {\n var entity = contentState.getEntity(DraftStringKey.unstringify(key));\n rawEntityMap[index] = {\n type: entity.getType(),\n mutability: entity.getMutability(),\n data: entity.getData()\n };\n });\n return {\n blocks: blocks,\n entityMap: rawEntityMap\n };\n};\n\nvar convertFromDraftStateToRaw = function convertFromDraftStateToRaw(contentState) {\n var rawDraftContentState = {\n entityMap: {},\n blocks: []\n }; // add blocks\n\n rawDraftContentState = encodeRawBlocks(contentState, rawDraftContentState); // add entities\n\n rawDraftContentState = encodeRawEntityMap(contentState, rawDraftContentState);\n return rawDraftContentState;\n};\n\nmodule.exports = convertFromDraftStateToRaw;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftStringKey = require(\"./DraftStringKey\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar strlen = UnicodeUtils.strlen;\n/**\n * Convert to UTF-8 character counts for storage.\n */\n\nfunction encodeEntityRanges(block, storageMap) {\n var encoded = [];\n block.findEntityRanges(function (character) {\n return !!character.getEntity();\n }, function (\n /*number*/\n start,\n /*number*/\n end) {\n var text = block.getText();\n var key = block.getEntityAt(start);\n encoded.push({\n offset: strlen(text.slice(0, start)),\n length: strlen(text.slice(start, end)),\n // Encode the key as a number for range storage.\n key: Number(storageMap[DraftStringKey.stringify(key)])\n });\n });\n return encoded;\n}\n\nmodule.exports = encodeEntityRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar areEqual = function areEqual(a, b) {\n return a === b;\n};\n\nvar isTruthy = function isTruthy(a) {\n return !!a;\n};\n\nvar EMPTY_ARRAY = [];\n/**\n * Helper function for getting encoded styles for each inline style. Convert\n * to UTF-8 character counts for storage.\n */\n\nfunction getEncodedInlinesForType(block, styleList, styleToEncode) {\n var ranges = []; // Obtain an array with ranges for only the specified style.\n\n var filteredInlines = styleList.map(function (style) {\n return style.has(styleToEncode);\n }).toList();\n findRangesImmutable(filteredInlines, areEqual, // We only want to keep ranges with nonzero style values.\n isTruthy, function (start, end) {\n var text = block.getText();\n ranges.push({\n offset: UnicodeUtils.strlen(text.slice(0, start)),\n length: UnicodeUtils.strlen(text.slice(start, end)),\n style: styleToEncode\n });\n });\n return ranges;\n}\n/*\n * Retrieve the encoded arrays of inline styles, with each individual style\n * treated separately.\n */\n\n\nfunction encodeInlineStyleRanges(block) {\n var styleList = block.getCharacterList().map(function (c) {\n return c.getStyle();\n }).toList();\n var ranges = styleList.flatten().toSet().map(function (style) {\n return getEncodedInlinesForType(block, styleList, style);\n });\n return Array.prototype.concat.apply(EMPTY_ARRAY, ranges.toJS());\n}\n\nmodule.exports = encodeInlineStyleRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar DraftTreeAdapter = require(\"./DraftTreeAdapter\");\n\nvar DraftTreeInvariants = require(\"./DraftTreeInvariants\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar createCharacterList = require(\"./createCharacterList\");\n\nvar decodeEntityRanges = require(\"./decodeEntityRanges\");\n\nvar decodeInlineStyleRanges = require(\"./decodeInlineStyleRanges\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedMap = Immutable.OrderedMap;\n\nvar decodeBlockNodeConfig = function decodeBlockNodeConfig(block, entityMap) {\n var key = block.key,\n type = block.type,\n data = block.data,\n text = block.text,\n depth = block.depth;\n var blockNodeConfig = {\n text: text,\n depth: depth || 0,\n type: type || 'unstyled',\n key: key || generateRandomKey(),\n data: Map(data),\n characterList: decodeCharacterList(block, entityMap)\n };\n return blockNodeConfig;\n};\n\nvar decodeCharacterList = function decodeCharacterList(block, entityMap) {\n var text = block.text,\n rawEntityRanges = block.entityRanges,\n rawInlineStyleRanges = block.inlineStyleRanges;\n var entityRanges = rawEntityRanges || [];\n var inlineStyleRanges = rawInlineStyleRanges || []; // Translate entity range keys to the DraftEntity map.\n\n return createCharacterList(decodeInlineStyleRanges(text, inlineStyleRanges), decodeEntityRanges(text, entityRanges.filter(function (range) {\n return entityMap.hasOwnProperty(range.key);\n }).map(function (range) {\n return _objectSpread({}, range, {\n key: entityMap[range.key]\n });\n })));\n};\n\nvar addKeyIfMissing = function addKeyIfMissing(block) {\n return _objectSpread({}, block, {\n key: block.key || generateRandomKey()\n });\n};\n/**\n * Node stack is responsible to ensure we traverse the tree only once\n * in depth order, while also providing parent refs to inner nodes to\n * construct their links.\n */\n\n\nvar updateNodeStack = function updateNodeStack(stack, nodes, parentRef) {\n var nodesWithParentRef = nodes.map(function (block) {\n return _objectSpread({}, block, {\n parentRef: parentRef\n });\n }); // since we pop nodes from the stack we need to insert them in reverse\n\n return stack.concat(nodesWithParentRef.reverse());\n};\n/**\n * This will build a tree draft content state by creating the node\n * reference links into a single tree walk. Each node has a link\n * reference to \"parent\", \"children\", \"nextSibling\" and \"prevSibling\"\n * blockMap will be created using depth ordering.\n */\n\n\nvar decodeContentBlockNodes = function decodeContentBlockNodes(blocks, entityMap) {\n return blocks // ensure children have valid keys to enable sibling links\n .map(addKeyIfMissing).reduce(function (blockMap, block, index) {\n !Array.isArray(block.children) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentBlock can not be converted to ContentBlockNode') : invariant(false) : void 0; // ensure children have valid keys to enable sibling links\n\n var children = block.children.map(addKeyIfMissing); // root level nodes\n\n var contentBlockNode = new ContentBlockNode(_objectSpread({}, decodeBlockNodeConfig(block, entityMap), {\n prevSibling: index === 0 ? null : blocks[index - 1].key,\n nextSibling: index === blocks.length - 1 ? null : blocks[index + 1].key,\n children: List(children.map(function (child) {\n return child.key;\n }))\n })); // push root node to blockMap\n\n blockMap = blockMap.set(contentBlockNode.getKey(), contentBlockNode); // this stack is used to ensure we visit all nodes respecting depth ordering\n\n var stack = updateNodeStack([], children, contentBlockNode); // start computing children nodes\n\n while (stack.length > 0) {\n // we pop from the stack and start processing this node\n var node = stack.pop(); // parentRef already points to a converted ContentBlockNode\n\n var parentRef = node.parentRef;\n var siblings = parentRef.getChildKeys();\n\n var _index = siblings.indexOf(node.key);\n\n var isValidBlock = Array.isArray(node.children);\n\n if (!isValidBlock) {\n !isValidBlock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentBlock can not be converted to ContentBlockNode') : invariant(false) : void 0;\n break;\n } // ensure children have valid keys to enable sibling links\n\n\n var _children = node.children.map(addKeyIfMissing);\n\n var _contentBlockNode = new ContentBlockNode(_objectSpread({}, decodeBlockNodeConfig(node, entityMap), {\n parent: parentRef.getKey(),\n children: List(_children.map(function (child) {\n return child.key;\n })),\n prevSibling: _index === 0 ? null : siblings.get(_index - 1),\n nextSibling: _index === siblings.size - 1 ? null : siblings.get(_index + 1)\n })); // push node to blockMap\n\n\n blockMap = blockMap.set(_contentBlockNode.getKey(), _contentBlockNode); // this stack is used to ensure we visit all nodes respecting depth ordering\n\n stack = updateNodeStack(stack, _children, _contentBlockNode);\n }\n\n return blockMap;\n }, OrderedMap());\n};\n\nvar decodeContentBlocks = function decodeContentBlocks(blocks, entityMap) {\n return OrderedMap(blocks.map(function (block) {\n var contentBlock = new ContentBlock(decodeBlockNodeConfig(block, entityMap));\n return [contentBlock.getKey(), contentBlock];\n }));\n};\n\nvar decodeRawBlocks = function decodeRawBlocks(rawState, entityMap) {\n var isTreeRawBlock = rawState.blocks.find(function (block) {\n return Array.isArray(block.children) && block.children.length > 0;\n });\n var rawBlocks = experimentalTreeDataSupport && !isTreeRawBlock ? DraftTreeAdapter.fromRawStateToRawTreeState(rawState).blocks : rawState.blocks;\n\n if (!experimentalTreeDataSupport) {\n return decodeContentBlocks(isTreeRawBlock ? DraftTreeAdapter.fromRawTreeStateToRawState(rawState).blocks : rawBlocks, entityMap);\n }\n\n var blockMap = decodeContentBlockNodes(rawBlocks, entityMap); // in dev mode, check that the tree invariants are met\n\n if (process.env.NODE_ENV !== \"production\") {\n !DraftTreeInvariants.isValidTree(blockMap) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should be a valid tree') : invariant(false) : void 0;\n }\n\n return blockMap;\n};\n\nvar decodeRawEntityMap = function decodeRawEntityMap(rawState) {\n var rawEntityMap = rawState.entityMap;\n var entityMap = {}; // TODO: Update this once we completely remove DraftEntity\n\n Object.keys(rawEntityMap).forEach(function (rawEntityKey) {\n var _rawEntityMap$rawEnti = rawEntityMap[rawEntityKey],\n type = _rawEntityMap$rawEnti.type,\n mutability = _rawEntityMap$rawEnti.mutability,\n data = _rawEntityMap$rawEnti.data; // get the key reference to created entity\n\n entityMap[rawEntityKey] = DraftEntity.__create(type, mutability, data || {});\n });\n return entityMap;\n};\n\nvar convertFromRawToDraftState = function convertFromRawToDraftState(rawState) {\n !Array.isArray(rawState.blocks) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentState') : invariant(false) : void 0; // decode entities\n\n var entityMap = decodeRawEntityMap(rawState); // decode blockMap\n\n var blockMap = decodeRawBlocks(rawState, entityMap); // create initial selection\n\n var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n return new ContentState({\n blockMap: blockMap,\n entityMap: entityMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n};\n\nmodule.exports = convertFromRawToDraftState;","\"use strict\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar traverseInDepthOrder = function traverseInDepthOrder(blocks, fn) {\n var stack = [].concat(blocks).reverse();\n\n while (stack.length) {\n var _block = stack.pop();\n\n fn(_block);\n var children = _block.children;\n !Array.isArray(children) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid tree raw block') : invariant(false) : void 0;\n stack = stack.concat([].concat(children.reverse()));\n }\n};\n\nvar isListBlock = function isListBlock(block) {\n if (!(block && block.type)) {\n return false;\n }\n\n var type = block.type;\n return type === 'unordered-list-item' || type === 'ordered-list-item';\n};\n\nvar addDepthToChildren = function addDepthToChildren(block) {\n if (Array.isArray(block.children)) {\n block.children = block.children.map(function (child) {\n return child.type === block.type ? _objectSpread({}, child, {\n depth: (block.depth || 0) + 1\n }) : child;\n });\n }\n};\n/**\n * This adapter is intended to be be used as an adapter to draft tree data\n *\n * draft state <=====> draft tree state\n */\n\n\nvar DraftTreeAdapter = {\n /**\n * Converts from a tree raw state back to draft raw state\n */\n fromRawTreeStateToRawState: function fromRawTreeStateToRawState(draftTreeState) {\n var blocks = draftTreeState.blocks;\n var transformedBlocks = [];\n !Array.isArray(blocks) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid raw state') : invariant(false) : void 0;\n\n if (!Array.isArray(blocks) || !blocks.length) {\n return draftTreeState;\n }\n\n traverseInDepthOrder(blocks, function (block) {\n var newBlock = _objectSpread({}, block);\n\n if (isListBlock(block)) {\n newBlock.depth = newBlock.depth || 0;\n addDepthToChildren(block); // if it's a non-leaf node, we don't do anything else\n\n if (block.children != null && block.children.length > 0) {\n return;\n }\n }\n\n delete newBlock.children;\n transformedBlocks.push(newBlock);\n });\n draftTreeState.blocks = transformedBlocks;\n return _objectSpread({}, draftTreeState, {\n blocks: transformedBlocks\n });\n },\n\n /**\n * Converts from draft raw state to tree draft state\n */\n fromRawStateToRawTreeState: function fromRawStateToRawTreeState(draftState) {\n var transformedBlocks = [];\n var parentStack = [];\n draftState.blocks.forEach(function (block) {\n var isList = isListBlock(block);\n var depth = block.depth || 0;\n\n var treeBlock = _objectSpread({}, block, {\n children: []\n });\n\n if (!isList) {\n transformedBlocks.push(treeBlock);\n return;\n }\n\n var lastParent = parentStack[0]; // block is non-nested & there are no nested blocks, directly push block\n\n if (lastParent == null && depth === 0) {\n transformedBlocks.push(treeBlock); // block is first nested block or previous nested block is at a lower level\n } else if (lastParent == null || lastParent.depth < depth - 1) {\n // create new parent block\n var newParent = {\n key: generateRandomKey(),\n text: '',\n depth: depth - 1,\n type: block.type,\n children: [],\n entityRanges: [],\n inlineStyleRanges: []\n };\n parentStack.unshift(newParent);\n\n if (depth === 1) {\n // add as a root-level block\n transformedBlocks.push(newParent);\n } else if (lastParent != null) {\n // depth > 1 => also add as previous parent's child\n lastParent.children.push(newParent);\n }\n\n newParent.children.push(treeBlock);\n } else if (lastParent.depth === depth - 1) {\n // add as child of last parent\n lastParent.children.push(treeBlock);\n } else {\n // pop out parents at levels above this one from the parent stack\n while (lastParent != null && lastParent.depth >= depth) {\n parentStack.shift();\n lastParent = parentStack[0];\n }\n\n if (depth > 0) {\n lastParent.children.push(treeBlock);\n } else {\n transformedBlocks.push(treeBlock);\n }\n }\n });\n return _objectSpread({}, draftState, {\n blocks: transformedBlocks\n });\n }\n};\nmodule.exports = DraftTreeAdapter;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar warning = require(\"fbjs/lib/warning\");\n\nvar DraftTreeInvariants = {\n /**\n * Check if the block is valid\n */\n isValidBlock: function isValidBlock(block, blockMap) {\n var key = block.getKey(); // is its parent's child\n\n var parentKey = block.getParentKey();\n\n if (parentKey != null) {\n var parent = blockMap.get(parentKey);\n\n if (!parent.getChildKeys().includes(key)) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is missing parent -> child pointer on %s', key) : void 0;\n return false;\n }\n } // is its children's parent\n\n\n var children = block.getChildKeys().map(function (k) {\n return blockMap.get(k);\n });\n\n if (!children.every(function (c) {\n return c.getParentKey() === key;\n })) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is missing child -> parent pointer on %s', key) : void 0;\n return false;\n } // is its previous sibling's next sibling\n\n\n var prevSiblingKey = block.getPrevSiblingKey();\n\n if (prevSiblingKey != null) {\n var prevSibling = blockMap.get(prevSiblingKey);\n\n if (prevSibling.getNextSiblingKey() !== key) {\n process.env.NODE_ENV !== \"production\" ? warning(true, \"Tree is missing nextSibling pointer on %s's prevSibling\", key) : void 0;\n return false;\n }\n } // is its next sibling's previous sibling\n\n\n var nextSiblingKey = block.getNextSiblingKey();\n\n if (nextSiblingKey != null) {\n var nextSibling = blockMap.get(nextSiblingKey);\n\n if (nextSibling.getPrevSiblingKey() !== key) {\n process.env.NODE_ENV !== \"production\" ? warning(true, \"Tree is missing prevSibling pointer on %s's nextSibling\", key) : void 0;\n return false;\n }\n } // no 2-node cycles\n\n\n if (nextSiblingKey !== null && prevSiblingKey !== null) {\n if (prevSiblingKey === nextSiblingKey) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree has a two-node cycle at %s', key) : void 0;\n return false;\n }\n } // if it's a leaf node, it has text but no children\n\n\n if (block.text != '') {\n if (block.getChildKeys().size > 0) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Leaf node %s has children', key) : void 0;\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * Checks that this is a connected tree on all the blocks\n * starting from the first block, traversing nextSibling and child pointers\n * should be a tree (preorder traversal - parent, then children)\n * num of connected node === number of blocks\n */\n isConnectedTree: function isConnectedTree(blockMap) {\n // exactly one node has no previous sibling + no parent\n var eligibleFirstNodes = blockMap.toArray().filter(function (block) {\n return block.getParentKey() == null && block.getPrevSiblingKey() == null;\n });\n\n if (eligibleFirstNodes.length !== 1) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is not connected. More or less than one first node') : void 0;\n return false;\n }\n\n var firstNode = eligibleFirstNodes.shift();\n var nodesSeen = 0;\n var currentKey = firstNode.getKey();\n var visitedStack = [];\n\n while (currentKey != null) {\n var currentNode = blockMap.get(currentKey);\n var childKeys = currentNode.getChildKeys();\n var nextSiblingKey = currentNode.getNextSiblingKey(); // if the node has children, add parent's next sibling to stack and go to children\n\n if (childKeys.size > 0) {\n if (nextSiblingKey != null) {\n visitedStack.unshift(nextSiblingKey);\n }\n\n var children = childKeys.map(function (k) {\n return blockMap.get(k);\n });\n\n var _firstNode = children.find(function (block) {\n return block.getPrevSiblingKey() == null;\n });\n\n if (_firstNode == null) {\n process.env.NODE_ENV !== \"production\" ? warning(true, '%s has no first child', currentKey) : void 0;\n return false;\n }\n\n currentKey = _firstNode.getKey(); // TODO(T32490138): Deal with multi-node cycles here\n } else {\n if (currentNode.getNextSiblingKey() != null) {\n currentKey = currentNode.getNextSiblingKey();\n } else {\n currentKey = visitedStack.shift();\n }\n }\n\n nodesSeen++;\n }\n\n if (nodesSeen !== blockMap.size) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is not connected. %s nodes were seen instead of %s', nodesSeen, blockMap.size) : void 0;\n return false;\n }\n\n return true;\n },\n\n /**\n * Checks that the block map is a connected tree with valid blocks\n */\n isValidTree: function isValidTree(blockMap) {\n var _this = this;\n\n var blocks = blockMap.toArray();\n\n if (!blocks.every(function (block) {\n return _this.isValidBlock(block, blockMap);\n })) {\n return false;\n }\n\n return this.isConnectedTree(blockMap);\n }\n};\nmodule.exports = DraftTreeInvariants;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List;\n\nfunction createCharacterList(inlineStyles, entities) {\n var characterArray = inlineStyles.map(function (style, ii) {\n var entity = entities[ii];\n return CharacterMetadata.create({\n style: style,\n entity: entity\n });\n });\n return List(characterArray);\n}\n\nmodule.exports = createCharacterList;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar substr = UnicodeUtils.substr;\n/**\n * Convert to native JavaScript string lengths to determine ranges.\n */\n\nfunction decodeEntityRanges(text, ranges) {\n var entities = Array(text.length).fill(null);\n\n if (ranges) {\n ranges.forEach(function (range) {\n // Using Unicode-enabled substrings converted to JavaScript lengths,\n // fill the output array with entity keys.\n var start = substr(text, 0, range.offset).length;\n var end = start + substr(text, range.offset, range.length).length;\n\n for (var ii = start; ii < end; ii++) {\n entities[ii] = range.key;\n }\n });\n }\n\n return entities;\n}\n\nmodule.exports = decodeEntityRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar _require = require(\"immutable\"),\n OrderedSet = _require.OrderedSet;\n\nvar substr = UnicodeUtils.substr;\nvar EMPTY_SET = OrderedSet();\n/**\n * Convert to native JavaScript string lengths to determine ranges.\n */\n\nfunction decodeInlineStyleRanges(text, ranges) {\n var styles = Array(text.length).fill(EMPTY_SET);\n\n if (ranges) {\n ranges.forEach(function (range) {\n var cursor = substr(text, 0, range.offset).length;\n var end = cursor + substr(text, range.offset, range.length).length;\n\n while (cursor < end) {\n styles[cursor] = styles[cursor].add(range.style);\n cursor++;\n }\n });\n }\n\n return styles;\n}\n\nmodule.exports = decodeInlineStyleRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getRangeBoundingClientRect = require(\"./getRangeBoundingClientRect\");\n/**\n * Return the bounding ClientRect for the visible DOM selection, if any.\n * In cases where there are no selected ranges or the bounding rect is\n * temporarily invalid, return null.\n *\n * When using from an iframe, you should pass the iframe window object\n */\n\n\nfunction getVisibleSelectionRect(global) {\n var selection = global.getSelection();\n\n if (!selection.rangeCount) {\n return null;\n }\n\n var range = selection.getRangeAt(0);\n var boundingRect = getRangeBoundingClientRect(range);\n var top = boundingRect.top,\n right = boundingRect.right,\n bottom = boundingRect.bottom,\n left = boundingRect.left; // When a re-render leads to a node being removed, the DOM selection will\n // temporarily be placed on an ancestor node, which leads to an invalid\n // bounding rect. Discard this state.\n\n if (top === 0 && right === 0 && bottom === 0 && left === 0) {\n return null;\n }\n\n return boundingRect;\n}\n\nmodule.exports = getVisibleSelectionRect;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getRangeClientRects = require(\"./getRangeClientRects\");\n\n/**\n * Like range.getBoundingClientRect() but normalizes for browser bugs.\n */\nfunction getRangeBoundingClientRect(range) {\n // \"Return a DOMRect object describing the smallest rectangle that includes\n // the first rectangle in list and all of the remaining rectangles of which\n // the height or width is not zero.\"\n // http://www.w3.org/TR/cssom-view/#dom-range-getboundingclientrect\n var rects = getRangeClientRects(range);\n var top = 0;\n var right = 0;\n var bottom = 0;\n var left = 0;\n\n if (rects.length) {\n // If the first rectangle has 0 width, we use the second, this is needed\n // because Chrome renders a 0 width rectangle when the selection contains\n // a line break.\n if (rects.length > 1 && rects[0].width === 0) {\n var _rects$ = rects[1];\n top = _rects$.top;\n right = _rects$.right;\n bottom = _rects$.bottom;\n left = _rects$.left;\n } else {\n var _rects$2 = rects[0];\n top = _rects$2.top;\n right = _rects$2.right;\n bottom = _rects$2.bottom;\n left = _rects$2.left;\n }\n\n for (var ii = 1; ii < rects.length; ii++) {\n var rect = rects[ii];\n\n if (rect.height !== 0 && rect.width !== 0) {\n top = Math.min(top, rect.top);\n right = Math.max(right, rect.right);\n bottom = Math.max(bottom, rect.bottom);\n left = Math.min(left, rect.left);\n }\n }\n }\n\n return {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: right - left,\n height: bottom - top\n };\n}\n\nmodule.exports = getRangeBoundingClientRect;"],"sourceRoot":""}