{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@stimulus/core/dist/src/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/src/action.js","webpack:///./node_modules/@stimulus/core/dist/src/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/context.js","webpack:///./node_modules/@stimulus/core/dist/src/definition.js","webpack:///./node_modules/@stimulus/core/dist/src/module.js","webpack:///./node_modules/@stimulus/core/dist/src/data_map.js","webpack:///./node_modules/@stimulus/core/dist/src/selectors.js","webpack:///./node_modules/@stimulus/core/dist/src/target_set.js","webpack:///./node_modules/@stimulus/core/dist/src/scope.js","webpack:///./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/router.js","webpack:///./node_modules/@stimulus/core/dist/src/schema.js","webpack:///./node_modules/@stimulus/core/dist/src/application.js","webpack:///./node_modules/@stimulus/core/dist/src/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/src/controller.js","webpack:///./node_modules/sweetalert2/dist/sweetalert2.all.js","webpack:///./node_modules/actioncable/lib/assets/compiled/action_cable.js","webpack:///./node_modules/sortablejs/Sortable.js","webpack:///(webpack)/buildin/module.js","webpack:///./app/javascript/controllers sync .js$","webpack:///./app/javascript/controllers/card_list_toggle_controller.js","webpack:///./app/javascript/controllers/conditional_questions_controller.js","webpack:///./app/javascript/controllers/datepicker_controller.js","webpack:///./app/javascript/controllers/download_controller.js","webpack:///./app/javascript/controllers/scroll_controller.js","webpack:///./app/javascript/controllers/select2_controller.js","webpack:///./app/javascript/controllers/sortable_controller.js","webpack:///./app/javascript/controllers/toggle_visibility_controller.js","webpack:///./node_modules/trix/dist/trix.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","EventListener","eventTarget","eventName","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","handleEvent","event","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","_i","_a","bindings","length","Array","from","sort","left","right","leftIndex","index","rightIndex","configurable","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","handleError","error","message","detail","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","set","descriptorPattern","parseEventTarget","eventTargetName","window","document","Action","element","descriptor","tagName","toLowerCase","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","forToken","token","descriptorString","content","matches","trim","match","toString","eventNameSuffix","e","getAttribute","Error","Binding","context","action","willBeInvokedByEvent","invokeWithEvent","method","controller","target","Element","contains","scope","containsElement","ElementObserver","delegate","_this","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","attributes","childList","subtree","refresh","takeRecords","matchElementsInTree","has","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","querySelectorAll","selector","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","size","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","filter","__extends","setPrototypeOf","__proto__","b","__","constructor","_super","IndexedMultimap","keysByValue","keys","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","_","findIndex","tokensAreEqual","slice","tokenString","split","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","Context","controllerConstructor","bindingObserver","dispatcher","initialize","parentElement","blessControllerConstructor","extend","bless","extendWithReflect","Controller","_newTarget","Reflect","construct","arguments","a","apply","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","setAttribute","removeAttribute","replace","_char","attributeValueContainsToken","TargetSet","targetName","find","targetNames","getSelectorForTargetNames","findElement","findAll","findAllElements","getSelectorForTargetName","join","targetDescriptor","targetAttribute","Scope","targets","data","head","tail","filterElements","closest","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","__generator","body","f","y","g","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","push","Application","documentElement","router","readyState","register","load","rest","definitions","isArray","unload","identifiers","getControllerForElementAndIdentifier","console","defineTargetProperties","ancestors","getPrototypeOf","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","properties","charAt","toUpperCase","capitalize","factory","_typeof2","obj","_typeof","_classCallCheck","instance","Constructor","_defineProperties","props","writable","_createClass","protoProps","staticProps","_extends","source","_getPrototypeOf","_setPrototypeOf","isNativeReflectConstruct","sham","Proxy","Date","_construct","Parent","args","Class","Function","_possibleConstructorReturn","self","ReferenceError","_assertThisInitialized","_get","receiver","base","_superPropBase","desc","getOwnPropertyDescriptor","consolePrefix","objectValues","toArray","nodeList","warn","previousWarnOnceMessages","warnAboutDepreation","deprecatedParam","useInstead","indexOf","callIfFunction","arg","isPromise","DismissReason","freeze","cancel","backdrop","close","esc","timer","prefix","items","swalClasses","iconTypes","states","previousBodyPadding","hasClass","elem","className","classList","applyCustomClass","customClass","remove","addClass","getInput","inputType","getChildByClass","querySelector","checkbox","radio","range","input","oldInputVal","focusInput","focus","val","toggleClass","condition","Boolean","removeClass","childNodes","applyNumericalStyle","parseInt","style","removeProperty","show","display","undefined","opacity","hide","toggle","isVisible","offsetWidth","offsetHeight","getClientRects","getContainer","container","elementBySelector","selectorString","elementByClass","getPopup","popup","getIcons","icon","getIcon","visibleIcon","getTitle","title","getContent","getImage","image","getProgressSteps","getValidationMessage","getConfirmButton","actions","confirm","getCancelButton","getActions","getHeader","header","getFooter","footer","getCloseButton","getFocusableElements","focusableElementsWithTabindex","otherFocusableElements","el","arr","uniqueArray","isModal","isToast","isNodeEnv","sweetHTML","question","warning","info","success","file","select","textarea","resetValidationMessage","Swal","init","params","oldContainer","parentNode","removeChild","createElement","innerHTML","rangeOutput","targetElement","appendChild","toast","setupAccessibility","getComputedStyle","direction","rtl","setupRTL","oninput","onchange","nextSibling","parseHtmlToContainer","param","HTMLElement","handleJqueryElem","cloneNode","animationEndEvent","testEl","transEndEventNames","renderButton","button","buttonType","substring","renderActions","confirmButton","cancelButton","showConfirmButton","showCancelButton","buttonsStyling","styled","confirmButtonColor","backgroundColor","cancelButtonColor","confirmButtonBackgroundColor","getPropertyValue","borderLeftColor","borderRightColor","handleButtonsStyling","renderContainer","background","handleBackdropParam","allowOutsideClick","position","center","handlePositionParam","grow","growClass","handleGrowParam","customContainerClass","privateProps","promise","innerParams","domCache","setAttributes","inputAttributes","attr","attrName","removeAttributes","setClass","inputContainer","inputClass","setInputPlaceholder","placeholder","inputPlaceholder","renderInputType","text","email","password","number","tel","url","inputValue","rangeInput","disabled","selected","checkboxInput","id","checked","renderContent","html","textContent","rerender","inputTypes","renderInput","hideAllIcons","icons","adjustSuccessIconBackgoundColor","popupBackgroundColor","successIconParts","renderProgressSteps","progressStepsContainer","progressSteps","currentProgressStep","getQueueStep","stepEl","createStepElement","lineEl","progressStepsDistance","width","createLineElement","renderHeader","animation","renderIcon","imageUrl","imageAlt","imageWidth","imageHeight","imageClass","renderImage","titleText","innerText","renderTitle","closeButton","showCloseButton","closeButtonAriaLabel","renderCloseButton","render","padding","modal","noanimation","renderPopup","renderFooter","currentSteps","showLoading","fire","loading","globalState","restoreActiveElement","x","scrollX","scrollY","restoreFocusTimeout","setTimeout","previousActiveElement","scrollTo","defaultParams","heightAuto","allowEscapeKey","allowEnterKey","stopKeydownPropagation","keydownListenerCapture","preConfirm","confirmButtonText","confirmButtonAriaLabel","confirmButtonClass","cancelButtonText","cancelButtonAriaLabel","cancelButtonClass","reverseButtons","focusConfirm","focusCancel","showLoaderOnConfirm","inputOptions","inputAutoTrim","inputValidator","validationMessage","onBeforeOpen","onAfterClose","onOpen","onClose","scrollbarPadding","updatableParams","deprecatedParams","toastIncompatibleParams","isValidParameter","paramName","isDeprecatedParameter","checkIfParamIsValid","checkIfToastParamIsValid","checkIfParamIsDeprecated","staticMethods","isUpdatableParameter","argsToParams","clickConfirm","click","clickCancel","isLoading","_len","_key","mixin","mixinParams","MixinSwal","subClass","superClass","_inherits","queue","steps","resetAndResolve","queueResult","callback","dismiss","insertQueueStep","splice","deleteQueueStep","enableLoading","getTimerLeft","timeout","stopTimer","resumeTimer","toggleTimer","running","increaseTimer","increase","isTimerRunning","isRunning","hideLoading","fixScrollbar","scrollHeight","innerHeight","paddingRight","navigator","msMaxTouchPoints","scrollDiv","height","overflow","scrollbarWidth","clientWidth","measureScrollbar","isIE11","MSInputMethodContext","documentMode","fixVerticalPositionIE","offsetTop","alignItems","privateMethods","swalPromiseResolve","removePopupAndResetState","triggerOnAfterClose","keydownTarget","keydownHandler","capture","keydownHandlerAdded","shown","iosfix","offset","top","scrollTop","undoIOSfix","children","swalCloseEventFinished","resolveValue","setButtonsDisabled","buttons","setInputDisabled","radios","Timer","delay","remaining","clearTimeout","defaultInputValidators","string","test","swalOpenAnimationFinished","overflowY","currentInstance","openPopup","fade","userAgent","MSStream","iOSfix","haystack","needle","activeElement","handleInputValue","parseFloat","err","populateInputOptions","inputOption","optionValue","optionLabel","option","radioValue","radioLabel","radioInput","radioLabelElement","formatInputOptions","instanceMethods","disableLoading","closePopup","closeModal","closeToast","enableButtons","disableButtons","enableConfirmButton","disableConfirmButton","enableInput","disableInput","showValidationMessage","popupComputedStyle","marginLeft","marginRight","inputerror","setProgressSteps","updatedParams","showProgressSteps","hideProgressSteps","_main","userParams","showWarningsForParams","oldPopup","setParameters","succeedWith","dismissWith","preConfirmValue","onButtonEvent","targetedConfirm","targetedCancel","files","getInputValue","checkValidity","onclick","onmouseover","onmouseout","onmousedown","ignoreOutsideClick","onmouseup","insertBefore","processInputOptions","setFocus","increment","focusableElements","stopPropagation","isComposing","btnIndex","_i2","shiftKey","preventDefault","outerHTML","blur","update","validUpdatableParams","defineProperties","SweetAlert","outerParams","onFulfilled","onFinally","_currentInstance","version","Sweetalert2","swal","sweetAlert","getElementsByTagName","styleSheet","cssText","ActionCable","INTERNAL","WebSocket","logger","createConsumer","ref","getConfig","default_mount_path","Consumer","createWebSocketURL","href","protocol","startDebugging","debugging","stopDebugging","log","messages","now","ConnectionMonitor","clamp","secondsSince","connection","fn","me","visibilityDidChange","reconnectAttempts","pollInterval","min","staleThreshold","startedAt","stoppedAt","startPolling","getPollInterval","stopPolling","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","pollTimeout","reconnectIfStale","interval","round","connectionIsStale","disconnectedRecently","reopen","visibilityState","isOpen","getTime","time","message_types","protocols","supportedProtocols","item","Connection","consumer","open","subscriptions","monitor","disconnected","reopenDelay","send","webSocket","JSON","stringify","isActive","getState","uninstallEventHandlers","installEventHandlers","ref1","allowReconnect","error1","getProtocol","isState","isProtocolSupported","state","handler","events","parse","welcome","reload","ping","confirmation","notify","rejection","notifyAll","willAttemptReconnect","Subscriptions","channelName","channel","subscription","Subscription","ensureActiveConnection","sendCommand","forget","len","results","callbackName","command","perform","unsubscribe","dragEl","parentEl","ghostEl","cloneEl","rootEl","nextEl","lastDownEl","scrollEl","scrollParentEl","scrollCustomFn","oldIndex","newIndex","activeGroup","putSortable","pointerElemChangedInterval","lastPointerElemX","lastPointerElemY","tapEvt","touchEvt","moved","lastTarget","lastDirection","realDragElRect","_throttleTimeout","autoScrolls","scrolling","pastFirstInvertThresh","isCircumstantialInvert","R_SPACE","expando","win","$","jQuery","Zepto","Polymer","captureMode","passive","supportDraggable","supportCssPointerEvents","pointerEvents","_silent","_alignedSilent","abs","savedInputChecked","touchDragOverListeners","_detectDirection","options","elCSS","_css","elWidth","child1","_getChild","child2","firstChildCSS","secondChildCSS","firstChildWidth","getBoundingClientRect","secondChildWidth","flexDirection","_getParentAutoScrollElement","includeSelf","gotSelf","scrollWidth","clientHeight","elemCSS","overflowX","_autoScroll","_throttle","evt","isFallback","scroll","rect","css","vx","vy","sens","scrollSensitivity","speed","scrollSpeed","clientX","clientY","winWidth","innerWidth","winHeight","scrollThisInstance","_clearAutoScrolls","scrollFn","layersOut","currentParent","bottom","clearInterval","pid","setInterval","layer","Sortable","active","_emulateDragOver","scrollOffsetY","scrollOffsetX","pageXOffset","pageYOffset","scrollLeft","bubbleScroll","autoScroll","_prepareGroup","toFn","pull","to","ret","otherGroup","group","originalGroup","checkPull","checkPut","put","revertClone","_checkAlignment","_computeIsAligned","_extend","defaults","store","handle","draggable","nodeName","swapThreshold","invertSwap","invertedSwapThreshold","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dataTransfer","dropBubble","dragoverBubble","dataIdAttr","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_on","_onTapStart","_onDragOver","_closest","ctx","includeCTX","_matches","_getParentOrHost","host","_off","_toggleClass","prop","defaultView","currentStyle","_find","list","_dispatchEvent","sortable","targetEl","toEl","fromEl","startIndex","originalEvt","onName","substr","CustomEvent","bubbles","cancelable","createEvent","initEvent","clone","originalEvent","dispatchEvent","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","dragged","draggedRect","related","relatedRect","_disableDraggable","_unsilent","childNum","currentChild","_lastChild","last","lastElementChild","childElementCount","_generateId","str","src","sum","charCodeAt","_index","previousElementSibling","msMatchesSelector","ms","dst","_clone","dom","_nextTick","_cancelNextTick","_preventScroll","_isAligned","isDragEl","axis","targetS1Opp","targetS2Opp","mouseOnOppAxis","_getDirection","touch","touches","originalTarget","shadowRoot","path","composedPath","root","inputs","idx","_saveInputCheckedState","isContentEditable","criteria","_prepareDragStart","_handleAutoScroll","fallback","elementFromPoint","ogElemScroller","newElem","dragStartFn","ownerDocument","_lastX","_lastY","_disableDelayedDrag","_triggerDragStart","_onDrop","_delayedDragTouchMoveHandler","_dragStartTimer","pointerType","_onDragStart","selection","empty","getSelection","removeAllRanges","_dragStarted","_nulling","bypassLastTouchCheck","parent","_onTouchMove","dx","dy","translate3d","_appendGhost","ghostRect","marginTop","useFallback","_offUpEvents","_hideClone","_cloneId","_loopId","effectAllowed","_dragStartId","revert","activeSortable","isOwner","canSort","animated","lastPutMode","elRect","mouseOnAxis","targetS2","_ghostIsLast","_showClone","_animate","inside","targetLength","targetS1","dragLength","invert","dragStyle","_getSwapDirection","nextElementSibling","after","moveVector","prevRect","currentRect","save","dropEffect","_globalDragOver","order","destroy","cloneHidden","utils","on","off","is","throttle","nextTick","cancelNextTick","detectDirection","getChild","webpackPolyfill","deprecate","paths","webpackContext","req","webpackContextResolve","code","$cardList","siblings","questionTargets","conditionalQuestionsWrapperTarget","attachChangeListeners","toggleCheckboxConditionals","toggleSelectConditionals","determineWrapperDisplay","selectors","listener","mainQuestionsTarget","showing","choiceIds","dataset","choiceId","intersect","parentChoiceIds","includes","setShowing","selectedOptions","$this","$hiddenField","currentDate","datepicker","parseDate","hiddenFieldFormat","formatDate","userFacingFieldFormat","dateFormat","altField","altFormat","beforeAjax","handleAjax","showError","isAdmin","status","xhr","Cable","download_id","received","Trestle","visit","Turbolinks","minimumInputLength","isTagging","allowsClear","ensureLastUser","select2","allowClear","tags","dataConfirmModal","commit","onConfirm","currentTarget","trigger","triggerTarget","toggleVisibilityOtherValue","showTarget","_wrapNativeSuper2","_cache","Wrapper","_construct2","_getPrototypeOf2","_setPrototypeOf2","_isNativeReflectConstruct2","_createForOfIteratorHelper2","allowArrayLike","it","_unsupportedIterableToArray2","F","_e4","normalCompletion","didErr","_e5","_get2","_superPropBase2","_slicedToArray2","_arrayWithHoles2","_s","_e","_arr","_n","_d","_iterableToArrayLimit2","_nonIterableRest2","_toConsumableArray2","_arrayLikeToArray2","_arrayWithoutHoles2","_iterableToArray2","_nonIterableSpread2","minLen","iter","arr2","_inherits2","_createSuper2","Derived","hasNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn2","_assertThisInitialized2","valueOf","_classCallCheck2","__defineProperties","_createClass2","attachmentSelector","quote","nestable","heading1","terminal","breakOnReturn","plaintext","bulletList","bullet","listAttribute","tagName$1","numberList","attachmentGallery","exclusive","_element$tagName","browser$1","composesExistingText","forcesObjectResizing","supportsInputEvents","InputEvent","_arr2","lang$1","attachFiles","bold","bullets","bytes","captionPlaceholder","indent","italic","link","numbers","outdent","redo","strike","undo","unlink","urlPlaceholder","GB","KB","MB","PB","TB","sizes","fileSize","precision","formatter","exp","floor","withoutInsignificantZeros","pow","toFixed","ZERO_WIDTH_SPACE","NON_BREAKING_SPACE","_ref2","onElement","matchingSelector","withCallback","inPhase","times","useCapture","findClosestElementFromNode","triggerEvent","_ref3","elementMatchesSelector","_ref4","untilNode","innerElementIsActive","elementContainsNode","findChildIndexOfNode","_node","childIndex","previousSibling","removeNode","_node$parentNode","walkTree","_ref5","onlyNodesOfType","usingFilter","expandEntityReferences","whatToShow","NodeFilter","SHOW_ELEMENT","SHOW_TEXT","SHOW_COMMENT","SHOW_ALL","createTreeWalker","makeElement","tag","editable","contenteditable","childNode","blockTagNames","getBlockTagNames","attributes$1","nodeIsBlockContainer","nodeIsBlockStartComment","firstChild","nodeProbablyIsBlockContainer","nodeIsBlockStart","_ref6","strict","nodeIsCommentNode","COMMENT_NODE","nodeIsCursorTarget","_ref7","nodeIsTextNode","trixCursorTarget","nodeIsAttachmentElement","nodeIsEmptyTextNode","TEXT_NODE","textAttributes","inheritable","parser","fontWeight","fontStyle","groupTagName","frozen","config","attachments","preview","presentation","caption","blockAttributes","browser","attachment","attachmentCaption","attachmentCaptionEditor","attachmentMetadata","attachmentMetadataContainer","attachmentName","attachmentProgress","attachmentSize","attachmentToolbar","level2Enabled","getLevel","pickFiles","multiple","hidden","fileInputId","getElementById","keyNames","lang","toolbar","getDefaultHTML","undoInterval","_AwaitValue","wrapped","_AsyncGenerator","gen","front","back","resume","wrappedAwait","settle","_invoke","request","_defineProperty","asyncIterator","_Array$from","_$codePointAt$1","_String$fromCodePoint","ucs2decode","ucs2encode","BasicObject","expression","_parseProxyMethodExpr","parseProxyMethodExpression","toMethod","toProperty","optional","subject","_this$toMethod","_object","proxyMethodExpressionPattern","RegExp","UTF16String","_BasicObject","_super2","ucs2String","codepoints","_this2","ucs2Length","ucs2Offset","_this$codepoints","fromCodepoints","box","fromUCS2String","hasArrayFrom","hasStringCodePointAt$1","codePointAt","hasStringFromCodePoint","String","fromCodePoint","output","counter","extra","array","fromCharCode","id$1","TrixObject","_BasicObject2","_super3","_this3","parts","contents","contentsForInspection","jsonString","fromJSON","arraysAreEqual","spliceArray","RTL_PATTERN","dir","dirName","form","supportsDirName","FormData","supportsDirSelector","_char2","allAttributeNames","blockAttributeNames","textAttributeNames","listAttributeNames","getAllAttributeNames","getTextAttributeNames","getBlockAttributeNames","getBlockConfig","getTextConfig","installDefaultCSSForTagName","defaultCSS","insertStyleElementForTagName","nonce","getCSPNonce","getMetaElement","testTransferData","dataTransferIsPlainText","getData","DOMParser","parseFromString","keyEventIsKeyboardCommand","platform","metaKey","ctrlKey","defer","copyObject","objectsAreEqual","normalizeRange","copyValue","rangeIsCollapsed","_normalizeRange2","end","rangeValuesAreEqual","rangesAreEqual","leftRange","rightRange","_normalizeRange4","leftStart","leftEnd","_normalizeRange6","rightStart","rightEnd","SelectionChangeObserver","_BasicObject3","_super4","_this4","run","selectionManagers","selectionManager","selectionDidChange","domRange","getDOMRange","domRangesAreEqual","notifySelectionManagersOfSelectionChange","requestAnimationFrame","startContainer","startOffset","endContainer","endOffset","selectionChangeObserver","getDOMSelection","rangeCount","_getDOMSelection","getRangeAt","domRangeIsPrivate","setDOMRange","addRange","nodeIsPrivate","normalizeSpaces","normalizeNewlines","breakableWhitespacePattern","squishBreakableWhitespace","utf16StringDifferences","isEqualTo","diffB","diffA","utf16StringDifference","utf16String","rightIndexA","rightIndexB","Hash","_TrixObject","_super5","_this5","copy","merge","_merge","unbox","_this6","hash","_this7","_box","getKeys","toObject","objects","getKeysCommonToHash","keyToRemove","Operation","_BasicObject4","_super6","performing","performed","succeeded","_this8","_this$promise","_this$promise$cancel","proxyMethod","ImagePreloadOperation","_Operation","_super7","_this9","_this10","Image","onload","naturalWidth","naturalHeight","onerror","Attachment","_TrixObject2","_super8","_this11","releaseFile","didChangeAttributes","attribute","_this$previewDelegate","_this$previewDelegate2","_this$delegate","_this$delegate$attach","newAttributes","previewDelegate","attachmentDidChangeAttributes","isPreviewable","preloadURL","getURL","getHref","previewablePattern","getContentType","hasContent","filesize","_this$getFilename$mat","getFilename","preloadFile","releasePreloadedFile","uploadProgress","_this$uploadProgressD","_this$uploadProgressD2","uploadProgressDelegate","attachmentDidChangeUploadProgress","getAttributes","getCacheKey","getPreviewURL","previewURL","preloadingURL","_this$previewDelegate3","_this$previewDelegate4","_this$delegate2","_this$delegate2$attac","attachmentDidChangePreviewURL","preload","fileObjectURL","URL","createObjectURL","revokeObjectURL","_this12","_ref","getWidth","getHeight","setPreviewURL","attributesForFile","setFile","filename","contentType","attachmentJSON","ManagedAttachment","_BasicObject5","_super9","attachmentManager","_this13","requestRemovalOfAttachment","AttachmentManager","_BasicObject6","_super10","_this14","managedAttachments","manageAttachment","_id","attachmentIsManaged","attachmentManagerDidRequestRemovalOfAttachment","managedAttachment","Piece","_TrixObject3","_super11","_this15","getValue","copyWithAttributes","piece","hasSameConstructorAs","hasSameStringValueAsPiece","hasSameAttributesAsPiece","inspect","types","pieceJSON","AttachmentPiece","_Piece","_super12","_this16","ensureAttachmentExclusivelyHasAttribute","removeProhibitedAttributes","permittedAttributes","isPending","_piece$attachment","json","registerType","StringPiece","_Piece2","_super13","_this17","SplittableList","_TrixObject4","_super14","_this18","splittableList","_this$splitObjectAtPo2","splitObjectAtPosition","insertSplittableListAtIndex","replaceObjectAtIndex","_this$splitObjectsAtR2","splitObjectsAtRange","_this$splitObjectsAtR4","transform","_this$splitObjectsAtR6","transformedObjects","_this$splitObjectAtPo4","startOfRange","leftInnerIndex","_this$constructor$spl2","endOfRange","findIndexAndOffsetAtPosition","splitIndex","splitOffset","_this$findIndexAndOff2","_object2$splitAtOffse2","getObjectAtIndex","splitAtOffset","leftObject","rightObject","getLength","pendingObject","_pendingObject$canBeC","_pendingObject","canBeConsolidatedWith","consolidateWith","endIndex","objectsInRange","consolidatedInRange","consolidate","currentPosition","nextPosition","currentIndex","_object4","_this19","endPosition","objectArraysAreEqual","_object5","Text","_TrixObject5","_super15","_this20","pieces","notEmpty","isEmpty","pieceList","copyWithPieceList","objectMap","getPieces","insertTextAtPosition","insertSplittableListAtPosition","removeObjectsInRange","removeTextAtRange","getTextAtRange","addAttributesAtRange","transformObjectsInRange","copyWithAdditionalAttributes","copyWithoutAttribute","_this$pieceList$getOb","getObjectAtPosition","fromCommonAttributesOfObjects","getCommonAttributes","getCommonAttributesAtRange","getSplittableListInRange","getStringAtRange","getAttachmentPieces","attachmentId","_step2","_iterator","getAttachmentAndPositionById","attachmentAndPosition","getRangeOfAttachment","getEndPosition","_text$pieceList","isBlockBreak","eachObject","selectSplittableList","isSerializable","toJSON","toConsole","getDirection","textJSON","Block","_TrixObject6","_super16","_this21","applyBlockBreakToText","block","copyWithText","mappedText","copyUsingObjectMap","expandAttribute","removeLastValue","getLastAttribute","getLastElement","level","getAttributeLevel","getNestableAttributes","getLastNestableAttribute","lastIndexOf","_attributes","_getBlockConfig","_getBlockConfig2","_getBlockConfig3","isRTL","hasAttributes","newlineText","textForStringWithAttributes","getTextWithoutBlockBreak","appendText","textEndsInBlockBreak","getBlockBreakPosition","depth","otherBlock","otherAttributes","otherAttribute","getListAttributeNames","blockJSON","unmarkExistingInnerBlockBreaksInText","addBlockBreakToText","modified","innerPieces","lastPiece","unmarkBlockBreakPiece","blockBreakText","blockBreak","ObjectMap","_BasicObject7","_super17","_this22","Document","_TrixObject7","_super18","_this23","blocks","blockList","getBlockAtIndex","consolidateBlocks","sourceDocument","getObjects","getBlocks","oldBlock","newBlock","_this$locationFromPos","locationFromPosition","getBlockAtPosition","removeObjectAtIndex","formattedDocument","startPosition","startLocation","baseBlockAttributes","getBaseBlockAttributes","trailingBlockAttributes","leadingBlockAttributes","copyWithBaseBlockAttributes","blockCount","getBlockCount","firstBlock","firstText","insertTextAtRange","insertDocumentAtRange","_this$locationFromPos2","editObjectAtIndex","_range8","leftPosition","rightPosition","_Array$from3","locationRangeFromRange","leftLocation","rightLocation","leftOffset","leftBlock","rightOffset","rightBlock","getStringAtPosition","leftText","rightText","affectedBlockCount","_range10","getDocumentAtRange","movingRightward","_document$getBlocks","_document$getBlocks2","eachBlockAtRange","textRange","addAttribute","addAttributeAtRange","eachBlock","removeAttributeAtRange","getTextAtIndex","updateAttributesForAttachment","expanded","expandRangeToLineBreaksAndSplitBlocks","blockConfig","converted","removeLastListAttributeAtRange","exceptAttributeName","convertLineBreaksToBlockBreaksInRange","removeBlockAttributesAtRange","removeLastTerminalAttributeAtRange","consolidateBlocksAtRange","lastAttributeName","copyWithoutAttributes","_range14","endLocation","startBlock","findLineBreakInDirectionFromPosition","positionFromLocation","insertBlockBreakAtRange","endBlock","_range18","consolidateFromIndexToIndex","_this$getBlockAtIndex","_this$locationFromPos7","getPieceAtPosition","_this$locationFromPos8","editCount","_range20","getCommonAttributesAtPosition","_textAttributes","attributesForBlock","_this$locationFromPos9","commonAttributes","getAttributesAtPosition","attributesLeft","inheritableAttributes","_this$locationFromPos10","_Array$from7","getExpandedRangeForAttributeAtOffset","_this24","_loop","blockIndex","lastAttributeIndex","_step3","_iterator2","getAttachments","attachmentPieces","iterable","_step4","_iterator3","ranges","_ref8","withValue","location","findPositionAtIndexAndOffset","_Array$from9","locationRange","getTexts","toSerializableText","documentJSON","DEFAULT_ALLOWED_ATTRIBUTES","DEFAULT_FORBIDDEN_PROTOCOLS","DEFAULT_FORBIDDEN_ELEMENTS","HTMLSanitizer","_BasicObject8","_super19","_this25","_ref9","allowedAttributes","forbiddenProtocols","forbiddenElements","createBodyElementForHTML","sanitizeElements","normalizeListElementNesting","walker","nodesToRemove","nextNode","currentNode","elementIsRemovable","sanitizeElement","_this26","listElement","previousElement","elementIsForbidden","elementIsntSerializable","sanitizer","sanitize","doc","implementation","createHTMLDocument","pieceForString","parseTrixDataAttribute","HTMLParser","_BasicObject9","_super20","_this27","_ref10","referenceElement","blockElements","processedElements","createHiddenContainer","_html","getHTML","containerElement","nodeFilter","processNode","translateBlockElementMarginsToNewlines","removeHiddenContainer","isInsignificantTextNode","appendBlockForTextNode","processTextNode","appendBlockForElement","processElement","currentBlockElement","isBlockElement","appendStringWithAttributes","_this$currentBlock","_attributes2","getBlockAttributes","currentBlock","appendBlockForAttributesWithElement","elementIsBlockElement","currentBlockContainsElement","firstElementChild","_attributes3","parentBlockElement","findParentBlockElement","appendEmptyBlock","_node$previousSibling","elementCanDisplayPreformattedText","stringEndsWithWhitespace","leftTrimBreakableWhitespace","getTextAttributes","_textAttributes2","appendAttachmentWithAttributes","isExtraBR","_object6","dimensions","getImageDimensions","blockForAttributes","appendPiece","pieceForAttachment","unshift","configAttr","_step5","attributeInheritedFromBlock","_iterator4","findBlockElementAncestors","blockElement","styleProperty","_object7","_attrConfig$test","attrConfig","reverse","stringIsAllBreakableWhitespace","nodeEndsWithNonWhitespace","lastChild","defaultMargin","getMarginOfDefaultBlockElement","margin","getMarginOfBlockElementAtIndex","prependStringToTextAtIndex","appendStringToTextAtIndex","getBlockElementMargin","whiteSpace","marginBottom","FILTER_REJECT","FILTER_ACCEPT","LineBreakInsertion","composition","selectedRange","getSelectedRange","breaksOnReturn","previousCharacter","nextCharacter","isListItem","Composition","_BasicObject10","_super21","_this28","currentAttributes","revision","_this$delegate$compos","refreshAttachments","compositionDidChangeDocument","_this$delegate2$compo","_this$delegate3","_this$delegate3$compo","compositionWillLoadSnapshot","setDocument","setSelection","compositionDidLoadSnapshot","_ref11","updatePosition","notifyDelegateOfInsertionAtRange","insertDocument","getCurrentTextAttributes","insertText","insertion","shouldDecreaseListLevel","decreaseListLevel","shouldPrependListItem","_document3","copyWithoutText","shouldInsertBlockBreak","insertBlockBreak","shouldRemoveLastBlockAttribute","removeLastBlockAttribute","shouldBreakFormattedBlock","breakFormattedBlock","insertString","getDocument","mergeDocumentAtRange","copyUsingObjectsFromDocument","getLocationRange","rangeFromLocationRange","insertFiles","_this29","_this$delegate4","compositionShouldAcceptFile","attachmentForFile","insertAttachments","_this30","_config$attachments$t","getType","attachmentText","textForAttachmentWithAttributes","shouldManageMovingCursorInDirection","deletingIntoPreviousBlock","selectionSpansBlocks","_ref12","selectionIsCollapsed","canDecreaseBlockAttributeLevel","getBlock","decreaseBlockAttributeLevel","getExpandedRangeInDirection","getAttachmentAtRange","editAttachment","moveTextFromRangeToPosition","stopEditingAttachment","_Array$from13","removeCurrentAttribute","placeholderPosition","getPosition","setSelectedRange","setCurrentAttribute","canSetCurrentBlockAttribute","canSetCurrentTextAttribute","getSelectedDocument","_i3","_Array$from14","isTerminalBlock","setBlockAttribute","setTextAttribute","notifyDelegateOfCurrentAttributesChange","_Array$from16","canSetCurrentAttribute","applyBlockAttributeAtRange","removeBlockAttribute","updateCurrentAttributes","removeTextAttribute","_this$getBlock","getNestingLevel","previousBlock","getPreviousBlock","arrayStartsWith","getListItemAttributes","replaceBlock","decreaseNestingLevel","increaseNestingLevel","_this$getBlock2","_this$getBlock3","attributeLevel","_this31","ignoreLock","hasCurrentAttribute","_this$delegate5","compositionDidRequestChangingSelectionToLocationRange","getSelectionManager","setLocationRange","targetLocationRange","withTargetLocationRange","createLocationRangeFromDOMRange","_ref13","_Array$from19","_Array$from20","translateUTF16PositionFromOffset","editingAttachment","canEditAttachment","_ref14","expandSelectionAroundCommonAttribute","getRangeOfCommonAttributeAtPosition","_this$getSelectedAtta","getSelectedAttachments","positionIsCursorTarget","locationIsCursorTarget","_this$document$getPie","_this$getSelectedDocu","_this32","_summarizeArrayChange","oldArray","newArray","added","removed","existingValues","currentValues","summarizeArrayChange","_this$delegate6","_this$delegate6$compo","compositionDidRemoveAttachment","_this$delegate7","_this$delegate7$compo","compositionDidAddAttachment","_this$delegate8","_this$delegate8$compo","compositionDidEditAttachment","_this$delegate9","_this$delegate9$compo","compositionDidChangeAttachmentPreviewURL","_this$delegate10","_this$delegate10$comp","compositionDidStartEditingAttachment","_this$delegate11","_this$delegate11$comp","compositionDidStopEditingAttachment","removeAttributeForAttachment","newDocument","removeLastAttribute","_this$delegate12","_this$delegate12$comp","compositionDidChangeCurrentAttributes","_this$delegate13","_this$delegate13$comp","compositionDidPerformInsertionAtRange","utf16string","toUTF16String","utf16position","offsetFromUCS2Offset","offsetToUCS2Offset","UndoManager","_BasicObject11","_super22","_this33","undoEntries","redoEntries","description","_ref15","consolidatable","previousEntry","entryHasDescriptionAndContext","undoEntry","createEntry","redoEntry","loadSnapshot","snapshot","_ref16","getSnapshot","entry","BLOCK_ATTRIBUTE_NAME","Filter","applyBlockAttribute","_this34","findRangesOfBlocks","_this35","findRangesOfPieces","getCharacterAtPosition","moveSelectedRangeForward","findRangesForBlockAttribute","findRangesForTextAttribute","DEFAULT_FILTERS","Editor","undoManager","filters","loadDocument","deleteInDirection","insertAttachment","insertFile","insertHTML","insertLineBreak","getClientRectAtLocationRange","expandSelectionInDirection","moveCursorInDirection","canDecreaseNestingLevel","canIncreaseNestingLevel","canRedo","canUndo","_ref17","recordUndoEntry","LocationMapper","_ref18","foundBlock","attachmentElement","findAttachmentElementParentForNode","rejectAttachmentContents","nodeLength","_this$findNodeAndOffs2","findNodeAndOffsetFromLocation","nodeOffset","_step6","_iterator5","getSignificantNodesForIndex","acceptSignificantNodes","recordingNodes","rejectEmptyTextNodes","PointMapper","caretPositionFromPoint","_document$caretPositi","offsetNode","createRange","setStart","caretRangeFromPoint","createTextRange","originalDOMRange","moveToPoint","SelectionManager","_BasicObject12","_super23","_this36","didMouseDown","locationMapper","pointMapper","lockCount","currentLocationRange","lockedLocationRange","createDOMRangeFromLocationRange","updateCurrentLocationRange","pointRange","getLocationAtPoint","getClientRectsForDOMRange","_getDOMRange","collapsed","domRangeWithinElement","findLocationFromContainerAndOffset","pauseTemporarily","resumeHandlers","_this37","paused","resumeTimeout","_this$delegate$locati","locationRangeDidChange","rangeStart","findContainerAndOffsetFromLocation","rangeEnd","setEnd","point","_this$createLocationR","createDOMRangeFromPoint","models","Cocument","Trix","VERSION","_$codePointAt","ObjectGroup","_ref19","asTree","groupObjects","_this38","ungroupedObjects","_ref20","_object$canBeGrouped2","_object$canBeGrouped","_group$canBeGroupedWi","_group","canBeGrouped","canBeGroupedWith","ElementStore","reset","getKey","_this39","trixStoreKey","ObjectView","_BasicObject13","_super24","_this40","childViews","rootView","createNodes","_this$parentView","parentView","invalidate","_this$findViewForObje","findViewForObject","viewClass","view","getCachedViewForObject","recordChildView","createChildView","cacheViewForObject","ObjectGroupView","views","childView","getAllChildViews","findElementForObject","_step7","_iterator6","getViewCache","isViewCachingEnabled","viewCache","shouldCacheViews","_this$getViewCache","cache","objectKeys","_ObjectView","_super25","_this41","objectGroup","_this42","findOrCreateCachedChildView","createContainerElement","getChildViews","getNodes","getDepth","css$2","AttachmentView","_ObjectView2","_super26","_this43","attachmentPiece","innerElement","figure","getClassName","tabindex","createContentNodes","createCaptionElement","progressElement","getUploadProgress","trixMutable","createCursorTarget","figcaption","getCaption","_name","captionConfig","getCaptionConfig","getFormattedFilesize","nameElement","createTextNode","sizeElement","names","extension","getExtension","trixAttachment","trixContentType","trixId","trixAttributes","trixSerialize","htmlContainsTagName","_this$findElement","findProgressElement","div","PreviewableAttachmentView","_AttachmentView","_super27","_this44","updateAttributesForImage","serializedAttributes","storeKey","PieceView","_ObjectView3","_super28","_this45","textConfig","createAttachmentNodes","createStringNodes","_element","findInnerElement","_this$textConfig","preserveSpaces","styles","_config","pendingElement","_config2","_attributes4","isLast","isFirst","followsWhitespace","TextView","_ObjectView4","_super29","_this46","lastIndex","endsWithWhitespace","previousPiece","css$1","BlockView","_ObjectView5","_super30","_this47","createComment","textView","shouldAddExtraNewlineElement","_attributes5","_tagName","DocumentView","_ObjectView6","_super31","_this48","elementStore","_this49","shadowElement","elementsHaveEqualHTML","fragment","createDocumentFragmentForSync","didSync","_this50","findStoredElements","garbageCollectCachedViews","_this51","createDocumentFragment","storedElement","replaceChild","sync","otherElement","ignoreSpaces","unserializableAttributeNames","serializedAttributesAttribute","serializedAttributesSelector","blockCommentPattern","serializers","serializable","toSerializableDocument","toJSONString","_attributes6","_name2","mutableAttributeName","mutableSelector","characterData","characterDataOldValue","_BasicObject14","_super32","_this52","didMutate","observer","_this$mutations","_this$delegate$elemen","findSignificantMutations","elementDidMutate","getMutationSummary","_this53","mutationIsSignificant","nodeIsMutable","_i4","_Array$from21","nodesModifiedByMutation","nodeIsSignificant","getTextMutationSummary","_this$getTextChangesF","getTextChangesFromCharacterData","additions","deletions","textChanges","getTextChangesFromChildList","addition","summary","textAdded","deleted","textDeleted","textRemoved","getMutationsByType","getTextForNodes","characterMutations","startMutation","endMutation","summarized","oldString","newString","_utf16StringDifferenc2","_utf16StringDifferenc4","summarizeStringChange","oldValue","_i5","_Array$from22","_BasicObject15","_super33","FileVerificationOperation","_Operation2","_super34","_this54","_this55","reader","FileReader","abort","readAsArrayBuffer","InputController","_BasicObject16","_super35","_this56","handlerFor","mutationSummary","_this$delegate$inputC","inputControllerDidRequestRender","_this$delegate2$input","inputControllerDidRequestReparse","requestRender","_this57","operations","all","handleInput","_this$responder","inputControllerWillAttachFiles","responder","_this58","defaultPrevented","inputControllerWillHandleInput","inputControllerDidHandleInput","keyNames$1","pastedFileCount","Level0InputController","_InputController","_super36","_this59","resetInputSummary","inputSummary","inputControllerDidAllowUnhandledInput","mutationIsExpected","requestReparse","preferDocument","mutationAdditionMatchesSummary","mutationDeletionMatchesSummary","didDelete","unexpectedNewlineAddition","unexpectedNewlineDeletion","positionIsBlockBreak","_this$compositionInpu","textChanged","composedEmptyString","compositionInput","getEndData","CompositionInput","isEnded","_this$responder2","setInputSummary","_this$responder3","dataTransferIsWritable","Files","_this60","keydown","didInput","keyName","keyCode","_context2","modifier","_context","character","inputControllerDidReceiveKeyboardCommand","keypress","altKey","_this$responder9","stringFromKeyEvent","inputControllerWillPerformTyping","selectionIsExpanded","textInput","_this$responder10","dragenter","dragstart","_this$delegate5$input","serializeSelectionToDataTransfer","draggedRange","inputControllerDidStartDrag","dragover","canAcceptDataTransfer","_this$delegate6$input","draggingPoint","inputControllerDidReceiveDragOverPoint","dragend","_this$delegate7$input","inputControllerDidCancelDrag","drop","_event$dataTransfer","_this$responder11","setLocationRangeFromPointRange","_this$responder12","inputControllerWillMoveText","moveTextFromRange","_this$responder13","_document4","fromJSONString","cut","_this$responder14","clipboardData","inputControllerWillCutText","_this$responder15","paste","_this61","clipboard","testClipboardData","pasteEventIsCrippledSafariHTMLPaste","_this$responder17","createLinkHTML","inputControllerWillPaste","inputControllerDidPaste","_this$delegate14","_this$responder18","_this$delegate15","_this$delegate16","_this$responder19","_this$delegate17","_clipboard$items","_clipboard$items$","_clipboard$items$$get","getAsFile","_this$delegate18","_this$responder20","_this$delegate19","extensionForFile","getPastedHTMLUsingHiddenElement","_this$responder16","compositionstart","getCompositionInput","compositionupdate","compositionend","beforeinput","backspace","_this$delegate20","_this$delegate21","_this$delegate22","_this$responder21","tab","_this$responder22","_this$responder23","_this$responder24","selectionIsInCursorTarget","_this$responder25","control","_this$delegate23","h","_this$delegate24","_this$delegate25","_this$responder26","shift","_this$delegate26","_this$responder27","_this$responder28","_this$responder29","alt","_this$delegate27","meta","_this$delegate28","_file$type","_file$type$match","hasStringCodePointAt","which","charCode","_step8","_iterator7","hasPasteboardFlavor","hasReadableDynamicData","isExternalHTMLPaste","isExternalRichTextPaste","_BasicObject17","_super37","inputController","_this62","isSignificant","_this$responder5","_this$responder4","insertPlaceholder","selectPlaceholder","forgetPlaceholder","canApplyToDocument","_this$responder6","_this$responder7","_this$responder8","_this$data$start","_this$data$end","Level2InputController","_InputController2","_super38","_this63","scheduledRender","composing","reparse","_this$afterRender","cancelAnimationFrame","afterRender","withTargetDOMRange","inputControllerWillPerformFormatting","toggleCurrentAttribute","_this64","_ref21","getTargetDOMRange","minLength","_this$event$getTarget","_this$event","_ref22","targetRanges","getTargetRanges","staticRangeToRange","keyboardCommandFromKeyEvent","_name3","withEvent","_event$clipboardData","pasteEventHasFilesOnly","pasteEventHasPlainTextOnly","scheduleRender","selectionContainsAttachments","dragging","pointFromEvent","dragEventHasFiles","ArrowLeft","ArrowRight","Backspace","shouldManageDeletingInDirection","Tab","deleteByComposition","deleteByCut","deleteByDrag","deleteByDragRange","deleteCompositionText","deleteContent","deleteContentBackward","deleteContentForward","deleteEntireSoftLine","deleteHardLineBackward","deleteHardLineForward","deleteSoftLineBackward","deleteSoftLineForward","deleteWordBackward","deleteWordForward","formatBackColor","activateAttributeIfSupported","formatBold","toggleAttributeIfSupported","formatFontColor","formatFontName","formatIndent","formatItalic","formatJustifyCenter","formatJustifyFull","formatJustifyLeft","formatJustifyRight","formatOutdent","formatRemove","getCurrentAttributes","_this$responder30","formatSetBlockTextDirection","formatSetInlineTextDirection","formatStrikeThrough","formatSubscript","formatSuperscript","formatUnderline","historyRedo","inputControllerWillPerformRedo","historyUndo","inputControllerWillPerformUndo","insertCompositionText","insertFromComposition","insertFromDrop","_this$responder31","insertFromPaste","_dataTransfer$files","_this65","_name4","_this$responder32","_this$responder33","_this$responder34","_this$responder35","insertFromYank","insertLink","insertOrderedList","insertParagraph","_this$responder36","insertReplacementText","_this$event$dataTrans","insertTranspose","insertUnorderedList","staticRange","undoable","commands","undos","AttachmentEditorController","_BasicObject18","_super39","_this66","trixAction","didClickToolbar","didClickActionButton","textareaClone","tabIndex","autoresize","didInputCaption","didKeyDownCaption","didChangeCaption","didBlurCaption","editingFigcaption","editCaption","install","makeElementMutable","addToolbar","installCaptionEditor","savePendingCaption","didUninstallAttachmentEditor","pendingCaption","_this$delegate3$attac","attachmentEditorDidRequestUpdatingAttributesForAttachment","attachmentEditorDidRequestRemovingAttributeForAttachment","attachmentEditorDidRequestRemovalOfAttachment","_this$delegate5$attac","attachmentEditorDidRequestDeselectingAttachment","CompositionController","_BasicObject19","_super40","_this67","didFocus","didBlur","didClickAttachment","documentView","_this$blurPromise","_this68","focused","compositionControllerDidFocus","blurPromise","_this69","compositionControllerDidBlur","findAttachmentForElement","compositionControllerDidSelectAttachment","isEditingAttachment","_this$delegate4$compo","_this$delegate5$compo","canSyncDocumentView","isSynced","compositionControllerWillSyncDocumentView","compositionControllerDidSyncDocumentView","compositionControllerDidRender","invalidateViewForObject","enableViewCaching","disableViewCaching","attachmentEditor","_this$attachmentEdito","uninstallAttachmentEditor","getAttachmentPieceForAttachment","_this$attachmentEdito2","uninstall","compositionControllerWillUpdateAttachment","compositionControllerDidRequestRemovalOfAttachment","compositionControllerDidRequestDeselectingAttachment","getAttachmentById","attributeButtonSelector","actionButtonSelector","toolbarButtonSelector","dialogSelector","activeDialogSelector","dialogButtonSelector","dialogInputSelector","getInputForDialog","getAttributeName","getActionName","ToolbarController","_BasicObject20","_super41","_this70","didClickAttributeButton","didClickDialogButton","didKeyDownDialogInput","resetDialogInputs","toolbarDidClickButton","actionName","getDialog","toggleDialog","toolbarDidInvokeAction","toolbarDidToggleAttribute","refreshAttributeButtons","dialogElement","dialog","hideDialog","refreshActionButtons","_this71","eachActionButton","_this72","eachAttributeButton","dialogIsVisible","keyString","_i6","_Array$from23","buttonKeys","dialogName","showDialog","toolbarWillShowDialog","disabledInput","_input","toolbarDidShowDialog","willValidate","toolbarDidUpdateAttribute","toolbarDidRemoveAttribute","toolbarDidHideDialog","getDialogName","EditorController","_Controller","_super42","_this73","editorElement","compositionController","toolbarController","toolbarElement","editor","loadHTML","registerSelectionManager","unregisterSelectionManager","replaceHTML","notifyEditorElement","handlingInput","updateAttributes","updateCurrentActions","pasting","pastedRange","rerenderViewForObject","unmanageAttachment","attachmentLocationRange","getLocationRangeOfAttachment","installAttachmentEditorForAttachment","loadingSnapshot","isFocused","requestedLocationRange","compositionRevisionWhenLocationRangeRequested","refreshViewCache","removeAttachment","editorWillSyncDocumentView","lock","clearSelection","editorDidSyncDocumentView","unlock","renderedCompositionRevision","runEditorFilters","isFocusedInvisibly","requestedRender","recordTypingUndoEntry","recordFormattingUndoEntry","applyKeyboardCommand","locationRangeBeforeDrag","invokeAction","selectionFrozen","expandSelectionForEditing","freezeSelection","thawSelection","actionIsExternal","_this$actions$actionN","_this$actions$actionN2","_this$actions$actionN3","_this$actions$actionN4","canInvokeAction","currentActions","getCurrentActions","updateActions","_this74","_snapshot","serializer","serializeToContentType","getSerializableElement","setInputElementValue","documentChangedSinceLastRender","updateInputElement","getUndoContext","getLocationContext","getTimeContext","_this$editorElement$o","canActivateAttribute","TrixToolbarElement","_HTMLElement","_super43","customElements","define","makeEditable","handleEventOnce","configureContentEditable","disableObjectResizing","setDefaultParagraphSeparator","_document$queryComman","_document","queryCommandSupported","execCommand","_document$queryComman2","_document2","_tagName2","cursorTargetStyles","TrixEditorElement","_HTMLElement2","_super44","labels","_this$ownerDocument","toolbarId","_this$inputElement","inputElement","_this$ownerDocument2","inputId","_this$editorControlle","editorController","_this$inputElement2","_this$inputElement3","defaultValue","_this$editor","_this75","addAccessibilityRole","texts","ensureAriaLabel","registerResetListener","registerClickListener","autofocus","_this$editorControlle2","unregisterResetListener","unregisterClickListener","resetListener","resetBubbled","clickListener","clickBubbled","require","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext","setDefaults","zIndex"],"mappings":"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","file":"js/application-950399e905a2e5ec671e.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 15);\n","var EventListener =\n/** @class */\nfunction () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set();\n }\n\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n }; // Binding observer delegate\n\n\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings[\"delete\"](binding);\n };\n\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: true,\n configurable: true\n });\n return EventListener;\n}();\n\nexport { EventListener };\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}","import { EventListener } from \"./event_listener\";\n\nvar Dispatcher =\n/** @class */\nfunction () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n };\n\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n };\n\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function get() {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n },\n enumerable: true,\n configurable: true\n }); // Binding observer delegate\n\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }; // Error handling\n\n\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n\n return eventListenerMap;\n };\n\n return Dispatcher;\n}();\n\nexport { Dispatcher };","// capture nos.: 12 23 4 43 1 5 56 7 76\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;\nexport function parseDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n identifier: matches[5],\n methodName: matches[7]\n };\n}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\n\nvar Action =\n/** @class */\nfunction () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}();\n\nexport { Action };\nvar defaultEventNames = {\n \"a\": function a(e) {\n return \"click\";\n },\n \"button\": function button(e) {\n return \"click\";\n },\n \"form\": function form(e) {\n return \"submit\";\n },\n \"input\": function input(e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\";\n },\n \"select\": function select(e) {\n return \"change\";\n },\n \"textarea\": function textarea(e) {\n return \"change\";\n }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\n\nfunction error(message) {\n throw new Error(message);\n}","var Binding =\n/** @class */\nfunction () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function get() {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function get() {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function get() {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function get() {\n var method = this.controller[this.methodName];\n\n if (typeof method == \"function\") {\n return method;\n }\n\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n } catch (error) {\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element,\n index = _a.index;\n\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return true;\n }\n };\n\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function get() {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function get() {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}();\n\nexport { Binding };","var ElementObserver =\n/** @class */\nfunction () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n this.refresh();\n }\n };\n\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n }; // Mutation record processing\n\n\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }; // Element matching\n\n\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) {\n tree = this.element;\n }\n\n return this.delegate.matchElementsInTree(tree);\n };\n\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }; // Element tracking\n\n\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements[\"delete\"](element);\n\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n\n return ElementObserver;\n}();\n\nexport { ElementObserver };","import { ElementObserver } from \"./element_observer\";\n\nvar AttributeObserver =\n/** @class */\nfunction () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function get() {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function get() {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function get() {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n }); // Element observer delegate\n\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n\n return AttributeObserver;\n}();\n\nexport { AttributeObserver };","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key)[\"delete\"](value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map[\"delete\"](key);\n }\n}","import { add, del } from \"./set_operations\";\n\nvar Multimap =\n/** @class */\nfunction () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n },\n enumerable: true,\n configurable: true\n });\n\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n\n Multimap.prototype[\"delete\"] = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n };\n\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey).filter(function (_a) {\n var key = _a[0],\n values = _a[1];\n return values.has(value);\n }).map(function (_a) {\n var key = _a[0],\n values = _a[1];\n return key;\n });\n };\n\n return Multimap;\n}();\n\nexport { Multimap };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\n\nvar IndexedMultimap =\n/** @class */\nfunction (_super) {\n __extends(IndexedMultimap, _super);\n\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n\n _this.keysByValue = new Map();\n return _this;\n }\n\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function get() {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n\n add(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype[\"delete\"] = function (key, value) {\n _super.prototype[\"delete\"].call(this, key, value);\n\n del(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n\n return IndexedMultimap;\n}(Multimap);\n\nexport { IndexedMultimap };","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\n\nvar TokenListObserver =\n/** @class */\nfunction () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function get() {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function get() {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n }); // Attribute observer delegate\n\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element),\n unmatchedTokens = _a[0],\n matchedTokens = _a[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenMatched(token);\n });\n };\n\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenUnmatched(token);\n });\n };\n\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement[\"delete\"](token.element, token);\n };\n\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_a) {\n var previousToken = _a[0],\n currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n\n return TokenListObserver;\n}();\n\nexport { TokenListObserver };\n\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\n\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\n\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}","import { TokenListObserver } from \"./token_list_observer\";\n\nvar ValueListObserver =\n/** @class */\nfunction () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function get() {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function get() {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element)[\"delete\"](token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n\n return parseResult;\n };\n\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n\n return valuesByToken;\n };\n\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n };\n\n return ValueListObserver;\n}();\n\nexport { ValueListObserver };","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar BindingObserver =\n/** @class */\nfunction () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function get() {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function get() {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function get() {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\n\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n\n if (binding) {\n this.bindingsByAction[\"delete\"](action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n\n this.bindings.forEach(function (binding) {\n return _this.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n }; // Value observer delegate\n\n\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n\n return BindingObserver;\n}();\n\nexport { BindingObserver };","import { BindingObserver } from \"./binding_observer\";\n\nvar Context =\n/** @class */\nfunction () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n\n try {\n this.controller.initialize();\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n\n try {\n this.controller.connect();\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.bindingObserver.stop();\n };\n\n Object.defineProperty(Context.prototype, \"application\", {\n get: function get() {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function get() {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function get() {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function get() {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n }); // Error handling\n\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element;\n\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n return Context;\n}();\n\nexport { Context };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\n\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: Controller\n }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n\n function testReflectExtension() {\n var a = function a() {\n this.a.call(this);\n };\n\n var b = extendWithReflect(a);\n\n b.prototype.a = function () {};\n\n return new b();\n }\n\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return (\n /** @class */\n function (_super) {\n __extends(Controller, _super);\n\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return Controller;\n }(constructor)\n );\n };\n }\n}();","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\n\nvar Module =\n/** @class */\nfunction () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function get() {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function get() {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function get() {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts[\"delete\"](context);\n context.disconnect();\n }\n };\n\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n\n return context;\n };\n\n return Module;\n}();\n\nexport { Module };","var DataMap =\n/** @class */\nfunction () {\n function DataMap(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\n\n DataMap.prototype.set = function (key, value) {\n key = this.getFormattedKey(key);\n this.element.setAttribute(key, value);\n return this.get(key);\n };\n\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\n\n DataMap.prototype[\"delete\"] = function (key) {\n if (this.has(key)) {\n key = this.getFormattedKey(key);\n this.element.removeAttribute(key);\n return true;\n } else {\n return false;\n }\n };\n\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n\n return DataMap;\n}();\n\nexport { DataMap };\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, _char) {\n return \"-\" + _char.toLowerCase();\n });\n}","/** @private */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","import { attributeValueContainsToken } from \"./selectors\";\n\nvar TargetSet =\n/** @class */\nfunction () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function get() {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n\n TargetSet.prototype.find = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n\n return targetNames.map(function (targetName) {\n return _this.getSelectorForTargetName(targetName);\n }).join(\", \");\n };\n\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n\n return TargetSet;\n}();\n\nexport { TargetSet };","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\n\nvar Scope =\n/** @class */\nfunction () {\n function Scope(schema, identifier, element) {\n this.schema = schema;\n this.identifier = identifier;\n this.element = element;\n this.targets = new TargetSet(this);\n this.data = new DataMap(this);\n }\n\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\n\n Scope.prototype.findAllElements = function (selector) {\n var head = this.element.matches(selector) ? [this.element] : [];\n var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));\n return head.concat(tail);\n };\n\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n\n return elements.filter(function (element) {\n return _this.containsElement(element);\n });\n };\n\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}();\n\nexport { Scope };","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar ScopeObserver =\n/** @class */\nfunction () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n }); // Value observer delegate\n\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n };\n\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n\n return scopesByIdentifier;\n };\n\n return ScopeObserver;\n}();\n\nexport { ScopeObserver };","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\n\nvar Router =\n/** @class */\nfunction () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n\n Object.defineProperty(Router.prototype, \"element\", {\n get: function get() {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n };\n\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n }; // Error handler delegate\n\n /** @private */\n\n\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n }; // Scope observer delegate\n\n /** @private */\n\n\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @private */\n\n\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier[\"delete\"](scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }; // Modules\n\n\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.connectContextForScope(scope);\n });\n };\n\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier[\"delete\"](module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.disconnectContextForScope(scope);\n });\n };\n\n return Router;\n}();\n\nexport { Router };","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\n\nvar Application =\n/** @class */\nfunction () {\n function Application(element, schema) {\n if (element === void 0) {\n element = document.documentElement;\n }\n\n if (schema === void 0) {\n schema = defaultSchema;\n }\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , domReady()];\n\n case 1:\n _a.sent();\n\n this.router.start();\n this.dispatcher.start();\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n };\n\n Application.prototype.load = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n return _this.router.loadDefinition(definition);\n });\n };\n\n Application.prototype.unload = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this.router.unloadIdentifier(identifier);\n });\n };\n\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n },\n enumerable: true,\n configurable: true\n });\n\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }; // Error handling\n\n\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n\n return Application;\n}();\n\nexport { Application };\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n } else {\n resolve();\n }\n });\n}","export function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n\n return defineLinkedProperties(prototype, (_a = {}, _a[name + \"Target\"] = {\n get: function get() {\n var target = this.targets.find(name);\n\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n }, _a[name + \"Targets\"] = {\n get: function get() {\n return this.targets.findAll(name);\n }\n }, _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function get() {\n return this.targets.has(name);\n }\n }, _a));\n });\n}\n\nfunction getTargetNamesForConstructor(constructor) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (targetNames, constructor) {\n getOwnTargetNamesForConstructor(constructor).forEach(function (name) {\n return targetNames.add(name);\n });\n return targetNames;\n }, new Set()));\n}\n\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n\n return ancestors;\n}\n\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction defineLinkedProperties(object, properties) {\n Object.keys(properties).forEach(function (name) {\n if (!(name in object)) {\n var descriptor = properties[name];\n Object.defineProperty(object, name, descriptor);\n }\n });\n}\n\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}","import { defineTargetProperties } from \"./target_properties\";\n\nvar Controller =\n/** @class */\nfunction () {\n function Controller(context) {\n this.context = context;\n }\n\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function get() {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function get() {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function get() {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n\n Controller.prototype.initialize = function () {// Override in your subclass to set up initial controller state\n };\n\n Controller.prototype.connect = function () {// Override in your subclass to respond when the controller is connected to the DOM\n };\n\n Controller.prototype.disconnect = function () {// Override in your subclass to respond when the controller is disconnected from the DOM\n };\n\n Controller.targets = [];\n return Controller;\n}();\n\nexport { Controller };","function _typeof2(obj) { \"@babel/helpers - typeof\"; return _typeof2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof2(obj); }\n\n/*!\n* sweetalert2 v8.8.5\n* Released under the MIT License.\n*/\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.Sweetalert2 = factory();\n})(this, function () {\n 'use strict';\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (_typeof2(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n }\n\n var consolePrefix = 'SweetAlert2:';\n /**\n * Filter the unique values into a new array\n * @param arr\n */\n\n var uniqueArray = function uniqueArray(arr) {\n var result = [];\n\n for (var i = 0; i < arr.length; i++) {\n if (result.indexOf(arr[i]) === -1) {\n result.push(arr[i]);\n }\n }\n\n return result;\n };\n /**\n * Returns the array ob object values (Object.values isn't supported in IE11)\n * @param obj\n */\n\n\n var objectValues = function objectValues(obj) {\n return Object.keys(obj).map(function (key) {\n return obj[key];\n });\n };\n /**\n * Convert NodeList to Array\n * @param nodeList\n */\n\n\n var toArray = function toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n };\n /**\n * Standardise console warnings\n * @param message\n */\n\n\n var warn = function warn(message) {\n console.warn(\"\".concat(consolePrefix, \" \").concat(message));\n };\n /**\n * Standardise console errors\n * @param message\n */\n\n\n var error = function error(message) {\n console.error(\"\".concat(consolePrefix, \" \").concat(message));\n };\n /**\n * Private global state for `warnOnce`\n * @type {Array}\n * @private\n */\n\n\n var previousWarnOnceMessages = [];\n /**\n * Show a console warning, but only if it hasn't already been shown\n * @param message\n */\n\n var warnOnce = function warnOnce(message) {\n if (!(previousWarnOnceMessages.indexOf(message) !== -1)) {\n previousWarnOnceMessages.push(message);\n warn(message);\n }\n };\n /**\n * Show a one-time console warning about deprecated params/methods\n */\n\n\n var warnAboutDepreation = function warnAboutDepreation(deprecatedParam, useInstead) {\n warnOnce(\"\\\"\".concat(deprecatedParam, \"\\\" is deprecated and will be removed in the next major release. Please use \\\"\").concat(useInstead, \"\\\" instead.\"));\n };\n /**\n * If `arg` is a function, call it (with no arguments or context) and return the result.\n * Otherwise, just pass the value through\n * @param arg\n */\n\n\n var callIfFunction = function callIfFunction(arg) {\n return typeof arg === 'function' ? arg() : arg;\n };\n\n var isPromise = function isPromise(arg) {\n return arg && Promise.resolve(arg) === arg;\n };\n\n var DismissReason = Object.freeze({\n cancel: 'cancel',\n backdrop: 'backdrop',\n close: 'close',\n esc: 'esc',\n timer: 'timer'\n });\n\n var argsToParams = function argsToParams(args) {\n var params = {};\n\n switch (_typeof(args[0])) {\n case 'object':\n _extends(params, args[0]);\n\n break;\n\n default:\n ['title', 'html', 'type'].forEach(function (name, index) {\n switch (_typeof(args[index])) {\n case 'string':\n params[name] = args[index];\n break;\n\n case 'undefined':\n break;\n\n default:\n error(\"Unexpected type of \".concat(name, \"! Expected \\\"string\\\", got \").concat(_typeof(args[index])));\n }\n });\n }\n\n return params;\n };\n\n var swalPrefix = 'swal2-';\n\n var prefix = function prefix(items) {\n var result = {};\n\n for (var i in items) {\n result[items[i]] = swalPrefix + items[i];\n }\n\n return result;\n };\n\n var swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'toast', 'toast-shown', 'toast-column', 'fade', 'show', 'hide', 'noanimation', 'close', 'title', 'header', 'content', 'actions', 'confirm', 'cancel', 'footer', 'icon', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl']);\n var iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);\n var states = {\n previousBodyPadding: null\n };\n\n var hasClass = function hasClass(elem, className) {\n return elem.classList.contains(className);\n };\n\n var applyCustomClass = function applyCustomClass(elem, customClass, className) {\n // Clean up previous custom classes\n toArray(elem.classList).forEach(function (className) {\n if (!(objectValues(swalClasses).indexOf(className) !== -1) && !(objectValues(iconTypes).indexOf(className) !== -1)) {\n elem.classList.remove(className);\n }\n });\n\n if (customClass && customClass[className]) {\n addClass(elem, customClass[className]);\n }\n };\n\n function getInput(content, inputType) {\n if (!inputType) {\n return null;\n }\n\n switch (inputType) {\n case 'select':\n case 'textarea':\n case 'file':\n return getChildByClass(content, swalClasses[inputType]);\n\n case 'checkbox':\n return content.querySelector(\".\".concat(swalClasses.checkbox, \" input\"));\n\n case 'radio':\n return content.querySelector(\".\".concat(swalClasses.radio, \" input:checked\")) || content.querySelector(\".\".concat(swalClasses.radio, \" input:first-child\"));\n\n case 'range':\n return content.querySelector(\".\".concat(swalClasses.range, \" input\"));\n\n default:\n return getChildByClass(content, swalClasses.input);\n }\n }\n\n var focusInput = function focusInput(input) {\n input.focus(); // place cursor at end of text in text input\n\n if (input.type !== 'file') {\n // http://stackoverflow.com/a/2345915\n var val = input.value;\n input.value = '';\n input.value = val;\n }\n };\n\n var toggleClass = function toggleClass(target, classList, condition) {\n if (!target || !classList) {\n return;\n }\n\n if (typeof classList === 'string') {\n classList = classList.split(/\\s+/).filter(Boolean);\n }\n\n classList.forEach(function (className) {\n if (target.forEach) {\n target.forEach(function (elem) {\n condition ? elem.classList.add(className) : elem.classList.remove(className);\n });\n } else {\n condition ? target.classList.add(className) : target.classList.remove(className);\n }\n });\n };\n\n var addClass = function addClass(target, classList) {\n toggleClass(target, classList, true);\n };\n\n var removeClass = function removeClass(target, classList) {\n toggleClass(target, classList, false);\n };\n\n var getChildByClass = function getChildByClass(elem, className) {\n for (var i = 0; i < elem.childNodes.length; i++) {\n if (hasClass(elem.childNodes[i], className)) {\n return elem.childNodes[i];\n }\n }\n };\n\n var applyNumericalStyle = function applyNumericalStyle(elem, property, value) {\n if (value || parseInt(value) === 0) {\n elem.style[property] = typeof value === 'number' ? value + 'px' : value;\n } else {\n elem.style.removeProperty(property);\n }\n };\n\n var show = function show(elem) {\n var display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'flex';\n elem.style.opacity = '';\n elem.style.display = display;\n };\n\n var hide = function hide(elem) {\n elem.style.opacity = '';\n elem.style.display = 'none';\n };\n\n var toggle = function toggle(elem, condition, display) {\n condition ? show(elem, display) : hide(elem);\n }; // borrowed from jquery $(elem).is(':visible') implementation\n\n\n var isVisible = function isVisible(elem) {\n return !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));\n };\n\n var contains = function contains(haystack, needle) {\n if (typeof haystack.contains === 'function') {\n return haystack.contains(needle);\n }\n };\n\n var getContainer = function getContainer() {\n return document.body.querySelector('.' + swalClasses.container);\n };\n\n var elementBySelector = function elementBySelector(selectorString) {\n var container = getContainer();\n return container ? container.querySelector(selectorString) : null;\n };\n\n var elementByClass = function elementByClass(className) {\n return elementBySelector('.' + className);\n };\n\n var getPopup = function getPopup() {\n return elementByClass(swalClasses.popup);\n };\n\n var getIcons = function getIcons() {\n var popup = getPopup();\n return toArray(popup.querySelectorAll('.' + swalClasses.icon));\n };\n\n var getIcon = function getIcon() {\n var visibleIcon = getIcons().filter(function (icon) {\n return isVisible(icon);\n });\n return visibleIcon.length ? visibleIcon[0] : null;\n };\n\n var getTitle = function getTitle() {\n return elementByClass(swalClasses.title);\n };\n\n var getContent = function getContent() {\n return elementByClass(swalClasses.content);\n };\n\n var getImage = function getImage() {\n return elementByClass(swalClasses.image);\n };\n\n var getProgressSteps = function getProgressSteps() {\n return elementByClass(swalClasses['progress-steps']);\n };\n\n var getValidationMessage = function getValidationMessage() {\n return elementByClass(swalClasses['validation-message']);\n };\n\n var getConfirmButton = function getConfirmButton() {\n return elementBySelector('.' + swalClasses.actions + ' .' + swalClasses.confirm);\n };\n\n var getCancelButton = function getCancelButton() {\n return elementBySelector('.' + swalClasses.actions + ' .' + swalClasses.cancel);\n };\n\n var getActions = function getActions() {\n return elementByClass(swalClasses.actions);\n };\n\n var getHeader = function getHeader() {\n return elementByClass(swalClasses.header);\n };\n\n var getFooter = function getFooter() {\n return elementByClass(swalClasses.footer);\n };\n\n var getCloseButton = function getCloseButton() {\n return elementByClass(swalClasses.close);\n };\n\n var getFocusableElements = function getFocusableElements() {\n var focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])')) // sort according to tabindex\n .sort(function (a, b) {\n a = parseInt(a.getAttribute('tabindex'));\n b = parseInt(b.getAttribute('tabindex'));\n\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n }\n\n return 0;\n }); // https://github.com/jkup/focusable/blob/master/index.js\n\n var otherFocusableElements = toArray(getPopup().querySelectorAll('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex=\"0\"], [contenteditable], audio[controls], video[controls]')).filter(function (el) {\n return el.getAttribute('tabindex') !== '-1';\n });\n return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(function (el) {\n return isVisible(el);\n });\n };\n\n var isModal = function isModal() {\n return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']);\n };\n\n var isToast = function isToast() {\n return document.body.classList.contains(swalClasses['toast-shown']);\n };\n\n var isLoading = function isLoading() {\n return getPopup().hasAttribute('data-loading');\n }; // Detect Node env\n\n\n var isNodeEnv = function isNodeEnv() {\n return typeof window === 'undefined' || typeof document === 'undefined';\n };\n\n var sweetHTML = \"\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n

\\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\").replace(/(^|\\n)\\s*/g, '');\n\n var resetOldContainer = function resetOldContainer() {\n var oldContainer = getContainer();\n\n if (!oldContainer) {\n return;\n }\n\n oldContainer.parentNode.removeChild(oldContainer);\n removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);\n };\n\n var oldInputVal; // IE11 workaround, see #1109 for details\n\n var resetValidationMessage = function resetValidationMessage(e) {\n if (Swal.isVisible() && oldInputVal !== e.target.value) {\n Swal.resetValidationMessage();\n }\n\n oldInputVal = e.target.value;\n };\n\n var addInputChangeListeners = function addInputChangeListeners() {\n var content = getContent();\n var input = getChildByClass(content, swalClasses.input);\n var file = getChildByClass(content, swalClasses.file);\n var range = content.querySelector(\".\".concat(swalClasses.range, \" input\"));\n var rangeOutput = content.querySelector(\".\".concat(swalClasses.range, \" output\"));\n var select = getChildByClass(content, swalClasses.select);\n var checkbox = content.querySelector(\".\".concat(swalClasses.checkbox, \" input\"));\n var textarea = getChildByClass(content, swalClasses.textarea);\n input.oninput = resetValidationMessage;\n file.onchange = resetValidationMessage;\n select.onchange = resetValidationMessage;\n checkbox.onchange = resetValidationMessage;\n textarea.oninput = resetValidationMessage;\n\n range.oninput = function (e) {\n resetValidationMessage(e);\n rangeOutput.value = range.value;\n };\n\n range.onchange = function (e) {\n resetValidationMessage(e);\n range.nextSibling.value = range.value;\n };\n };\n\n var getTarget = function getTarget(target) {\n return typeof target === 'string' ? document.querySelector(target) : target;\n };\n\n var setupAccessibility = function setupAccessibility(params) {\n var popup = getPopup();\n popup.setAttribute('role', params.toast ? 'alert' : 'dialog');\n popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');\n\n if (!params.toast) {\n popup.setAttribute('aria-modal', 'true');\n }\n };\n\n var setupRTL = function setupRTL(targetElement) {\n if (window.getComputedStyle(targetElement).direction === 'rtl') {\n addClass(getContainer(), swalClasses.rtl);\n }\n };\n /*\n * Add modal + backdrop to DOM\n */\n\n\n var init = function init(params) {\n // Clean up the old popup container if it exists\n resetOldContainer();\n /* istanbul ignore if */\n\n if (isNodeEnv()) {\n error('SweetAlert2 requires document to initialize');\n return;\n }\n\n var container = document.createElement('div');\n container.className = swalClasses.container;\n container.innerHTML = sweetHTML;\n var targetElement = getTarget(params.target);\n targetElement.appendChild(container);\n setupAccessibility(params);\n setupRTL(targetElement);\n addInputChangeListeners();\n };\n\n var parseHtmlToContainer = function parseHtmlToContainer(param, target) {\n // DOM element\n if (param instanceof HTMLElement) {\n target.appendChild(param); // JQuery element(s)\n } else if (_typeof(param) === 'object') {\n handleJqueryElem(target, param); // Plain string\n } else if (param) {\n target.innerHTML = param;\n }\n };\n\n var handleJqueryElem = function handleJqueryElem(target, elem) {\n target.innerHTML = '';\n\n if (0 in elem) {\n for (var i = 0; (i in elem); i++) {\n target.appendChild(elem[i].cloneNode(true));\n }\n } else {\n target.appendChild(elem.cloneNode(true));\n }\n };\n\n var animationEndEvent = function () {\n // Prevent run in Node env\n\n /* istanbul ignore if */\n if (isNodeEnv()) {\n return false;\n }\n\n var testEl = document.createElement('div');\n var transEndEventNames = {\n 'WebkitAnimation': 'webkitAnimationEnd',\n 'OAnimation': 'oAnimationEnd oanimationend',\n 'animation': 'animationend'\n };\n\n for (var i in transEndEventNames) {\n if (transEndEventNames.hasOwnProperty(i) && typeof testEl.style[i] !== 'undefined') {\n return transEndEventNames[i];\n }\n }\n\n return false;\n }(); // Measure width of scrollbar\n // https://github.com/twbs/bootstrap/blob/master/js/modal.js#L279-L286\n\n\n var measureScrollbar = function measureScrollbar() {\n var supportsTouch = 'ontouchstart' in window || navigator.msMaxTouchPoints;\n\n if (supportsTouch) {\n return 0;\n }\n\n var scrollDiv = document.createElement('div');\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n };\n\n function handleButtonsStyling(confirmButton, cancelButton, params) {\n addClass([confirmButton, cancelButton], swalClasses.styled); // Buttons background colors\n\n if (params.confirmButtonColor) {\n confirmButton.style.backgroundColor = params.confirmButtonColor;\n }\n\n if (params.cancelButtonColor) {\n cancelButton.style.backgroundColor = params.cancelButtonColor;\n } // Loading state\n\n\n var confirmButtonBackgroundColor = window.getComputedStyle(confirmButton).getPropertyValue('background-color');\n confirmButton.style.borderLeftColor = confirmButtonBackgroundColor;\n confirmButton.style.borderRightColor = confirmButtonBackgroundColor;\n }\n\n function renderButton(button, buttonType, params) {\n toggle(button, params['showC' + buttonType.substring(1) + 'Button'], 'inline-block');\n button.innerHTML = params[buttonType + 'ButtonText']; // Set caption text\n\n button.setAttribute('aria-label', params[buttonType + 'ButtonAriaLabel']); // ARIA label\n // Add buttons custom classes\n\n button.className = swalClasses[buttonType];\n applyCustomClass(button, params.customClass, buttonType + 'Button');\n addClass(button, params[buttonType + 'ButtonClass']);\n }\n\n var renderActions = function renderActions(instance, params) {\n var actions = getActions();\n var confirmButton = getConfirmButton();\n var cancelButton = getCancelButton(); // Actions (buttons) wrapper\n\n if (!params.showConfirmButton && !params.showCancelButton) {\n hide(actions);\n } else {\n show(actions);\n } // Custom class\n\n\n applyCustomClass(actions, params.customClass, 'actions'); // Render confirm button\n\n renderButton(confirmButton, 'confirm', params); // render Cancel Button\n\n renderButton(cancelButton, 'cancel', params);\n\n if (params.buttonsStyling) {\n handleButtonsStyling(confirmButton, cancelButton, params);\n } else {\n removeClass([confirmButton, cancelButton], swalClasses.styled);\n confirmButton.style.backgroundColor = confirmButton.style.borderLeftColor = confirmButton.style.borderRightColor = '';\n cancelButton.style.backgroundColor = cancelButton.style.borderLeftColor = cancelButton.style.borderRightColor = '';\n }\n };\n\n function handleBackdropParam(container, backdrop) {\n if (typeof backdrop === 'string') {\n container.style.background = backdrop;\n } else if (!backdrop) {\n addClass([document.documentElement, document.body], swalClasses['no-backdrop']);\n }\n }\n\n function handlePositionParam(container, position) {\n if (position in swalClasses) {\n addClass(container, swalClasses[position]);\n } else {\n warn('The \"position\" parameter is not valid, defaulting to \"center\"');\n addClass(container, swalClasses.center);\n }\n }\n\n function handleGrowParam(container, grow) {\n if (grow && typeof grow === 'string') {\n var growClass = 'grow-' + grow;\n\n if (growClass in swalClasses) {\n addClass(container, swalClasses[growClass]);\n }\n }\n }\n\n var renderContainer = function renderContainer(instance, params) {\n var container = getContainer();\n\n if (!container) {\n return;\n }\n\n handleBackdropParam(container, params.backdrop);\n\n if (!params.backdrop && params.allowOutsideClick) {\n warn('\"allowOutsideClick\" parameter requires `backdrop` parameter to be set to `true`');\n }\n\n handlePositionParam(container, params.position);\n handleGrowParam(container, params.grow); // Custom class\n\n applyCustomClass(container, params.customClass, 'container');\n\n if (params.customContainerClass) {\n // @deprecated\n addClass(container, params.customContainerClass);\n }\n };\n /**\n * This module containts `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n\n\n var privateProps = {\n promise: new WeakMap(),\n innerParams: new WeakMap(),\n domCache: new WeakMap()\n };\n\n var renderInput = function renderInput(instance, params) {\n var innerParams = privateProps.innerParams.get(instance);\n var rerender = !innerParams || params.input !== innerParams.input;\n var content = getContent();\n var inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];\n\n for (var i = 0; i < inputTypes.length; i++) {\n var inputClass = swalClasses[inputTypes[i]];\n var inputContainer = getChildByClass(content, inputClass); // set attributes\n\n setAttributes(inputTypes[i], params.inputAttributes); // set class\n\n setClass(inputContainer, inputClass, params);\n rerender && hide(inputContainer);\n }\n\n if (!params.input) {\n return;\n }\n\n if (!renderInputType[params.input]) {\n return error(\"Unexpected type of input! Expected \\\"text\\\", \\\"email\\\", \\\"password\\\", \\\"number\\\", \\\"tel\\\", \\\"select\\\", \\\"radio\\\", \\\"checkbox\\\", \\\"textarea\\\", \\\"file\\\" or \\\"url\\\", got \\\"\".concat(params.input, \"\\\"\"));\n }\n\n if (rerender) {\n var input = renderInputType[params.input](params);\n show(input);\n }\n };\n\n var removeAttributes = function removeAttributes(input) {\n for (var i = 0; i < input.attributes.length; i++) {\n var attrName = input.attributes[i].name;\n\n if (!(['type', 'value', 'style'].indexOf(attrName) !== -1)) {\n input.removeAttribute(attrName);\n }\n }\n };\n\n var setAttributes = function setAttributes(inputType, inputAttributes) {\n var input = getInput(getContent(), inputType);\n\n if (!input) {\n return;\n }\n\n removeAttributes(input);\n\n for (var attr in inputAttributes) {\n // Do not set a placeholder for \n // it'll crash Edge, #1298\n if (inputType === 'range' && attr === 'placeholder') {\n continue;\n }\n\n input.setAttribute(attr, inputAttributes[attr]);\n }\n };\n\n var setClass = function setClass(inputContainer, inputClass, params) {\n inputContainer.className = inputClass;\n\n if (params.inputClass) {\n addClass(inputContainer, params.inputClass);\n }\n\n if (params.customClass) {\n addClass(inputContainer, params.customClass.input);\n }\n };\n\n var setInputPlaceholder = function setInputPlaceholder(input, params) {\n if (!input.placeholder || params.inputPlaceholder) {\n input.placeholder = params.inputPlaceholder;\n }\n };\n\n var renderInputType = {};\n\n renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = function (params) {\n var input = getChildByClass(getContent(), swalClasses.input);\n\n if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') {\n input.value = params.inputValue;\n } else if (!isPromise(params.inputValue)) {\n warn(\"Unexpected type of inputValue! Expected \\\"string\\\", \\\"number\\\" or \\\"Promise\\\", got \\\"\".concat(_typeof(params.inputValue), \"\\\"\"));\n }\n\n setInputPlaceholder(input, params);\n input.type = params.input;\n return input;\n };\n\n renderInputType.file = function (params) {\n var input = getChildByClass(getContent(), swalClasses.file);\n setInputPlaceholder(input, params);\n input.type = params.input;\n return input;\n };\n\n renderInputType.range = function (params) {\n var range = getChildByClass(getContent(), swalClasses.range);\n var rangeInput = range.querySelector('input');\n var rangeOutput = range.querySelector('output');\n rangeInput.value = params.inputValue;\n rangeInput.type = params.input;\n rangeOutput.value = params.inputValue;\n return range;\n };\n\n renderInputType.select = function (params) {\n var select = getChildByClass(getContent(), swalClasses.select);\n select.innerHTML = '';\n\n if (params.inputPlaceholder) {\n var placeholder = document.createElement('option');\n placeholder.innerHTML = params.inputPlaceholder;\n placeholder.value = '';\n placeholder.disabled = true;\n placeholder.selected = true;\n select.appendChild(placeholder);\n }\n\n return select;\n };\n\n renderInputType.radio = function () {\n var radio = getChildByClass(getContent(), swalClasses.radio);\n radio.innerHTML = '';\n return radio;\n };\n\n renderInputType.checkbox = function (params) {\n var checkbox = getChildByClass(getContent(), swalClasses.checkbox);\n var checkboxInput = getInput(getContent(), 'checkbox');\n checkboxInput.type = 'checkbox';\n checkboxInput.value = 1;\n checkboxInput.id = swalClasses.checkbox;\n checkboxInput.checked = Boolean(params.inputValue);\n var label = checkbox.querySelector('span');\n label.innerHTML = params.inputPlaceholder;\n return checkbox;\n };\n\n renderInputType.textarea = function (params) {\n var textarea = getChildByClass(getContent(), swalClasses.textarea);\n textarea.value = params.inputValue;\n setInputPlaceholder(textarea, params);\n return textarea;\n };\n\n var renderContent = function renderContent(instance, params) {\n var content = getContent().querySelector('#' + swalClasses.content); // Content as HTML\n\n if (params.html) {\n parseHtmlToContainer(params.html, content);\n show(content, 'block'); // Content as plain text\n } else if (params.text) {\n content.textContent = params.text;\n show(content, 'block'); // No content\n } else {\n hide(content);\n }\n\n renderInput(instance, params); // Custom class\n\n applyCustomClass(getContent(), params.customClass, 'content');\n };\n\n var renderFooter = function renderFooter(instance, params) {\n var footer = getFooter();\n toggle(footer, params.footer);\n\n if (params.footer) {\n parseHtmlToContainer(params.footer, footer);\n } // Custom class\n\n\n applyCustomClass(footer, params.customClass, 'footer');\n };\n\n var renderCloseButton = function renderCloseButton(instance, params) {\n var closeButton = getCloseButton(); // Custom class\n\n applyCustomClass(closeButton, params.customClass, 'closeButton');\n toggle(closeButton, params.showCloseButton);\n closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);\n };\n\n var renderIcon = function renderIcon(instance, params) {\n var innerParams = privateProps.innerParams.get(instance); // if the icon with the given type already rendered,\n // apply the custom class without re-rendering the icon\n\n if (innerParams && params.type === innerParams.type && getIcon()) {\n applyCustomClass(getIcon(), params.customClass, 'icon');\n return;\n }\n\n hideAllIcons();\n\n if (!params.type) {\n return;\n }\n\n adjustSuccessIconBackgoundColor();\n\n if (Object.keys(iconTypes).indexOf(params.type) !== -1) {\n var icon = elementBySelector(\".\".concat(swalClasses.icon, \".\").concat(iconTypes[params.type]));\n show(icon); // Custom class\n\n applyCustomClass(icon, params.customClass, 'icon'); // Animate icon\n\n toggleClass(icon, \"swal2-animate-\".concat(params.type, \"-icon\"), params.animation);\n } else {\n error(\"Unknown type! Expected \\\"success\\\", \\\"error\\\", \\\"warning\\\", \\\"info\\\" or \\\"question\\\", got \\\"\".concat(params.type, \"\\\"\"));\n }\n };\n\n var hideAllIcons = function hideAllIcons() {\n var icons = getIcons();\n\n for (var i = 0; i < icons.length; i++) {\n hide(icons[i]);\n }\n }; // Adjust success icon background color to match the popup background color\n\n\n var adjustSuccessIconBackgoundColor = function adjustSuccessIconBackgoundColor() {\n var popup = getPopup();\n var popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');\n var successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');\n\n for (var i = 0; i < successIconParts.length; i++) {\n successIconParts[i].style.backgroundColor = popupBackgroundColor;\n }\n };\n\n var renderImage = function renderImage(instance, params) {\n var image = getImage();\n\n if (!params.imageUrl) {\n return hide(image);\n }\n\n show(image); // Src, alt\n\n image.setAttribute('src', params.imageUrl);\n image.setAttribute('alt', params.imageAlt); // Width, height\n\n applyNumericalStyle(image, 'width', params.imageWidth);\n applyNumericalStyle(image, 'height', params.imageHeight); // Class\n\n image.className = swalClasses.image;\n applyCustomClass(image, params.customClass, 'image');\n\n if (params.imageClass) {\n addClass(image, params.imageClass);\n }\n };\n\n var createStepElement = function createStepElement(step) {\n var stepEl = document.createElement('li');\n addClass(stepEl, swalClasses['progress-step']);\n stepEl.innerHTML = step;\n return stepEl;\n };\n\n var createLineElement = function createLineElement(params) {\n var lineEl = document.createElement('li');\n addClass(lineEl, swalClasses['progress-step-line']);\n\n if (params.progressStepsDistance) {\n lineEl.style.width = params.progressStepsDistance;\n }\n\n return lineEl;\n };\n\n var renderProgressSteps = function renderProgressSteps(instance, params) {\n var progressStepsContainer = getProgressSteps();\n\n if (!params.progressSteps || params.progressSteps.length === 0) {\n return hide(progressStepsContainer);\n }\n\n show(progressStepsContainer);\n progressStepsContainer.innerHTML = '';\n var currentProgressStep = parseInt(params.currentProgressStep === null ? Swal.getQueueStep() : params.currentProgressStep);\n\n if (currentProgressStep >= params.progressSteps.length) {\n warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');\n }\n\n params.progressSteps.forEach(function (step, index) {\n var stepEl = createStepElement(step);\n progressStepsContainer.appendChild(stepEl);\n\n if (index === currentProgressStep) {\n addClass(stepEl, swalClasses['active-progress-step']);\n }\n\n if (index !== params.progressSteps.length - 1) {\n var lineEl = createLineElement(step, index);\n progressStepsContainer.appendChild(lineEl);\n }\n });\n };\n\n var renderTitle = function renderTitle(instance, params) {\n var title = getTitle();\n toggle(title, params.title || params.titleText);\n\n if (params.title) {\n parseHtmlToContainer(params.title, title);\n }\n\n if (params.titleText) {\n title.innerText = params.titleText;\n } // Custom class\n\n\n applyCustomClass(title, params.customClass, 'title');\n };\n\n var renderHeader = function renderHeader(instance, params) {\n var header = getHeader(); // Custom class\n\n applyCustomClass(header, params.customClass, 'header'); // Progress steps\n\n renderProgressSteps(instance, params); // Icon\n\n renderIcon(instance, params); // Image\n\n renderImage(instance, params); // Title\n\n renderTitle(instance, params); // Close button\n\n renderCloseButton(instance, params);\n };\n\n var renderPopup = function renderPopup(instance, params) {\n var popup = getPopup(); // Width\n\n applyNumericalStyle(popup, 'width', params.width); // Padding\n\n applyNumericalStyle(popup, 'padding', params.padding); // Background\n\n if (params.background) {\n popup.style.background = params.background;\n } // Default Class\n\n\n popup.className = swalClasses.popup;\n\n if (params.toast) {\n addClass([document.documentElement, document.body], swalClasses['toast-shown']);\n addClass(popup, swalClasses.toast);\n } else {\n addClass(popup, swalClasses.modal);\n } // Custom class\n\n\n applyCustomClass(popup, params.customClass, 'popup');\n\n if (typeof params.customClass === 'string') {\n addClass(popup, params.customClass);\n } // CSS animation\n\n\n toggleClass(popup, swalClasses.noanimation, !params.animation);\n };\n\n var render = function render(instance, params) {\n renderPopup(instance, params);\n renderContainer(instance, params);\n renderHeader(instance, params);\n renderContent(instance, params);\n renderActions(instance, params);\n renderFooter(instance, params);\n };\n /*\n * Global function to determine if SweetAlert2 popup is shown\n */\n\n\n var isVisible$1 = function isVisible$$1() {\n return isVisible(getPopup());\n };\n /*\n * Global function to click 'Confirm' button\n */\n\n\n var clickConfirm = function clickConfirm() {\n return getConfirmButton() && getConfirmButton().click();\n };\n /*\n * Global function to click 'Cancel' button\n */\n\n\n var clickCancel = function clickCancel() {\n return getCancelButton() && getCancelButton().click();\n };\n\n function fire() {\n var Swal = 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 return _construct(Swal, args);\n }\n /**\n * Returns an extended version of `Swal` containing `params` as defaults.\n * Useful for reusing Swal configuration.\n *\n * For example:\n *\n * Before:\n * const textPromptOptions = { input: 'text', showCancelButton: true }\n * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' })\n * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' })\n *\n * After:\n * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true })\n * const {value: firstName} = await TextPrompt('What is your first name?')\n * const {value: lastName} = await TextPrompt('What is your last name?')\n *\n * @param mixinParams\n */\n\n\n function mixin(mixinParams) {\n var MixinSwal = /*#__PURE__*/function (_this) {\n _inherits(MixinSwal, _this);\n\n function MixinSwal() {\n _classCallCheck(this, MixinSwal);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(MixinSwal).apply(this, arguments));\n }\n\n _createClass(MixinSwal, [{\n key: \"_main\",\n value: function _main(params) {\n return _get(_getPrototypeOf(MixinSwal.prototype), \"_main\", this).call(this, _extends({}, mixinParams, params));\n }\n }]);\n\n return MixinSwal;\n }(this);\n\n return MixinSwal;\n } // private global state for the queue feature\n\n\n var currentSteps = [];\n /*\n * Global function for chaining sweetAlert popups\n */\n\n var queue = function queue(steps) {\n var Swal = this;\n currentSteps = steps;\n\n var resetAndResolve = function resetAndResolve(resolve, value) {\n currentSteps = [];\n document.body.removeAttribute('data-swal2-queue-step');\n resolve(value);\n };\n\n var queueResult = [];\n return new Promise(function (resolve) {\n (function step(i, callback) {\n if (i < currentSteps.length) {\n document.body.setAttribute('data-swal2-queue-step', i);\n Swal.fire(currentSteps[i]).then(function (result) {\n if (typeof result.value !== 'undefined') {\n queueResult.push(result.value);\n step(i + 1, callback);\n } else {\n resetAndResolve(resolve, {\n dismiss: result.dismiss\n });\n }\n });\n } else {\n resetAndResolve(resolve, {\n value: queueResult\n });\n }\n })(0);\n });\n };\n /*\n * Global function for getting the index of current popup in queue\n */\n\n\n var getQueueStep = function getQueueStep() {\n return document.body.getAttribute('data-swal2-queue-step');\n };\n /*\n * Global function for inserting a popup to the queue\n */\n\n\n var insertQueueStep = function insertQueueStep(step, index) {\n if (index && index < currentSteps.length) {\n return currentSteps.splice(index, 0, step);\n }\n\n return currentSteps.push(step);\n };\n /*\n * Global function for deleting a popup from the queue\n */\n\n\n var deleteQueueStep = function deleteQueueStep(index) {\n if (typeof currentSteps[index] !== 'undefined') {\n currentSteps.splice(index, 1);\n }\n };\n /**\n * Show spinner instead of Confirm button and disable Cancel button\n */\n\n\n var showLoading = function showLoading() {\n var popup = getPopup();\n\n if (!popup) {\n Swal.fire('');\n }\n\n popup = getPopup();\n var actions = getActions();\n var confirmButton = getConfirmButton();\n var cancelButton = getCancelButton();\n show(actions);\n show(confirmButton);\n addClass([popup, actions], swalClasses.loading);\n confirmButton.disabled = true;\n cancelButton.disabled = true;\n popup.setAttribute('data-loading', true);\n popup.setAttribute('aria-busy', true);\n popup.focus();\n };\n\n var RESTORE_FOCUS_TIMEOUT = 100;\n var globalState = {};\n\n var focusPreviousActiveElement = function focusPreviousActiveElement() {\n if (globalState.previousActiveElement && globalState.previousActiveElement.focus) {\n globalState.previousActiveElement.focus();\n globalState.previousActiveElement = null;\n } else if (document.body) {\n document.body.focus();\n }\n }; // Restore previous active (focused) element\n\n\n var restoreActiveElement = function restoreActiveElement() {\n return new Promise(function (resolve) {\n var x = window.scrollX;\n var y = window.scrollY;\n globalState.restoreFocusTimeout = setTimeout(function () {\n focusPreviousActiveElement();\n resolve();\n }, RESTORE_FOCUS_TIMEOUT); // issues/900\n\n if (typeof x !== 'undefined' && typeof y !== 'undefined') {\n // IE doesn't have scrollX/scrollY support\n window.scrollTo(x, y);\n }\n });\n };\n /**\n * If `timer` parameter is set, returns number of milliseconds of timer remained.\n * Otherwise, returns undefined.\n */\n\n\n var getTimerLeft = function getTimerLeft() {\n return globalState.timeout && globalState.timeout.getTimerLeft();\n };\n /**\n * Stop timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n\n var stopTimer = function stopTimer() {\n return globalState.timeout && globalState.timeout.stop();\n };\n /**\n * Resume timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n\n var resumeTimer = function resumeTimer() {\n return globalState.timeout && globalState.timeout.start();\n };\n /**\n * Resume timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n\n var toggleTimer = function toggleTimer() {\n var timer = globalState.timeout;\n return timer && (timer.running ? timer.stop() : timer.start());\n };\n /**\n * Increase timer. Returns number of milliseconds of an updated timer.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n\n var increaseTimer = function increaseTimer(n) {\n return globalState.timeout && globalState.timeout.increase(n);\n };\n /**\n * Check if timer is running. Returns true if timer is running\n * or false if timer is paused or stopped.\n * If `timer` parameter isn't set, returns undefined\n */\n\n\n var isTimerRunning = function isTimerRunning() {\n return globalState.timeout && globalState.timeout.isRunning();\n };\n\n var defaultParams = {\n title: '',\n titleText: '',\n text: '',\n html: '',\n footer: '',\n type: null,\n toast: false,\n customClass: '',\n customContainerClass: '',\n target: 'body',\n backdrop: true,\n animation: true,\n heightAuto: true,\n allowOutsideClick: true,\n allowEscapeKey: true,\n allowEnterKey: true,\n stopKeydownPropagation: true,\n keydownListenerCapture: false,\n showConfirmButton: true,\n showCancelButton: false,\n preConfirm: null,\n confirmButtonText: 'OK',\n confirmButtonAriaLabel: '',\n confirmButtonColor: null,\n confirmButtonClass: '',\n cancelButtonText: 'Cancel',\n cancelButtonAriaLabel: '',\n cancelButtonColor: null,\n cancelButtonClass: '',\n buttonsStyling: true,\n reverseButtons: false,\n focusConfirm: true,\n focusCancel: false,\n showCloseButton: false,\n closeButtonAriaLabel: 'Close this dialog',\n showLoaderOnConfirm: false,\n imageUrl: null,\n imageWidth: null,\n imageHeight: null,\n imageAlt: '',\n imageClass: '',\n timer: null,\n width: null,\n padding: null,\n background: null,\n input: null,\n inputPlaceholder: '',\n inputValue: '',\n inputOptions: {},\n inputAutoTrim: true,\n inputClass: '',\n inputAttributes: {},\n inputValidator: null,\n validationMessage: null,\n grow: false,\n position: 'center',\n progressSteps: [],\n currentProgressStep: null,\n progressStepsDistance: null,\n onBeforeOpen: null,\n onAfterClose: null,\n onOpen: null,\n onClose: null,\n scrollbarPadding: true\n };\n var updatableParams = ['title', 'titleText', 'text', 'html', 'type', 'customClass', 'showConfirmButton', 'showCancelButton', 'confirmButtonText', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonClass', 'cancelButtonText', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonClass', 'buttonsStyling', 'reverseButtons', 'imageUrl', 'imageWidth', 'imageHeigth', 'imageAlt', 'imageClass', 'progressSteps', 'currentProgressStep'];\n var deprecatedParams = {\n customContainerClass: 'customClass',\n confirmButtonClass: 'customClass',\n cancelButtonClass: 'customClass',\n imageClass: 'customClass',\n inputClass: 'customClass'\n };\n var toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusCancel', 'heightAuto', 'keydownListenerCapture'];\n /**\n * Is valid parameter\n * @param {String} paramName\n */\n\n var isValidParameter = function isValidParameter(paramName) {\n return defaultParams.hasOwnProperty(paramName);\n };\n /**\n * Is valid parameter for Swal.update() method\n * @param {String} paramName\n */\n\n\n var isUpdatableParameter = function isUpdatableParameter(paramName) {\n return updatableParams.indexOf(paramName) !== -1;\n };\n /**\n * Is deprecated parameter\n * @param {String} paramName\n */\n\n\n var isDeprecatedParameter = function isDeprecatedParameter(paramName) {\n return deprecatedParams[paramName];\n };\n\n var checkIfParamIsValid = function checkIfParamIsValid(param) {\n if (!isValidParameter(param)) {\n warn(\"Unknown parameter \\\"\".concat(param, \"\\\"\"));\n }\n };\n\n var checkIfToastParamIsValid = function checkIfToastParamIsValid(param) {\n if (toastIncompatibleParams.indexOf(param) !== -1) {\n warn(\"The parameter \\\"\".concat(param, \"\\\" is incompatible with toasts\"));\n }\n };\n\n var checkIfParamIsDeprecated = function checkIfParamIsDeprecated(param) {\n if (isDeprecatedParameter(param)) {\n warnAboutDepreation(param, isDeprecatedParameter(param));\n }\n };\n /**\n * Show relevant warnings for given params\n *\n * @param params\n */\n\n\n var showWarningsForParams = function showWarningsForParams(params) {\n for (var param in params) {\n checkIfParamIsValid(param);\n\n if (params.toast) {\n checkIfToastParamIsValid(param);\n }\n\n checkIfParamIsDeprecated();\n }\n };\n\n var staticMethods = Object.freeze({\n isValidParameter: isValidParameter,\n isUpdatableParameter: isUpdatableParameter,\n isDeprecatedParameter: isDeprecatedParameter,\n argsToParams: argsToParams,\n isVisible: isVisible$1,\n clickConfirm: clickConfirm,\n clickCancel: clickCancel,\n getContainer: getContainer,\n getPopup: getPopup,\n getTitle: getTitle,\n getContent: getContent,\n getImage: getImage,\n getIcon: getIcon,\n getIcons: getIcons,\n getCloseButton: getCloseButton,\n getActions: getActions,\n getConfirmButton: getConfirmButton,\n getCancelButton: getCancelButton,\n getHeader: getHeader,\n getFooter: getFooter,\n getFocusableElements: getFocusableElements,\n getValidationMessage: getValidationMessage,\n isLoading: isLoading,\n fire: fire,\n mixin: mixin,\n queue: queue,\n getQueueStep: getQueueStep,\n insertQueueStep: insertQueueStep,\n deleteQueueStep: deleteQueueStep,\n showLoading: showLoading,\n enableLoading: showLoading,\n getTimerLeft: getTimerLeft,\n stopTimer: stopTimer,\n resumeTimer: resumeTimer,\n toggleTimer: toggleTimer,\n increaseTimer: increaseTimer,\n isTimerRunning: isTimerRunning\n });\n /**\n * Enables buttons and hide loader.\n */\n\n function hideLoading() {\n var innerParams = privateProps.innerParams.get(this);\n var domCache = privateProps.domCache.get(this);\n\n if (!innerParams.showConfirmButton) {\n hide(domCache.confirmButton);\n\n if (!innerParams.showCancelButton) {\n hide(domCache.actions);\n }\n }\n\n removeClass([domCache.popup, domCache.actions], swalClasses.loading);\n domCache.popup.removeAttribute('aria-busy');\n domCache.popup.removeAttribute('data-loading');\n domCache.confirmButton.disabled = false;\n domCache.cancelButton.disabled = false;\n }\n\n function getInput$1(instance) {\n var innerParams = privateProps.innerParams.get(instance || this);\n var domCache = privateProps.domCache.get(instance || this);\n return getInput(domCache.content, innerParams.input);\n }\n\n var fixScrollbar = function fixScrollbar() {\n // for queues, do not do this more than once\n if (states.previousBodyPadding !== null) {\n return;\n } // if the body has overflow\n\n\n if (document.body.scrollHeight > window.innerHeight) {\n // add padding so the content doesn't shift after removal of scrollbar\n states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));\n document.body.style.paddingRight = states.previousBodyPadding + measureScrollbar() + 'px';\n }\n };\n\n var undoScrollbar = function undoScrollbar() {\n if (states.previousBodyPadding !== null) {\n document.body.style.paddingRight = states.previousBodyPadding + 'px';\n states.previousBodyPadding = null;\n }\n };\n /* istanbul ignore next */\n\n\n var iOSfix = function iOSfix() {\n var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n\n if (iOS && !hasClass(document.body, swalClasses.iosfix)) {\n var offset = document.body.scrollTop;\n document.body.style.top = offset * -1 + 'px';\n addClass(document.body, swalClasses.iosfix);\n }\n };\n /* istanbul ignore next */\n\n\n var undoIOSfix = function undoIOSfix() {\n if (hasClass(document.body, swalClasses.iosfix)) {\n var offset = parseInt(document.body.style.top, 10);\n removeClass(document.body, swalClasses.iosfix);\n document.body.style.top = '';\n document.body.scrollTop = offset * -1;\n }\n };\n\n var isIE11 = function isIE11() {\n return !!window.MSInputMethodContext && !!document.documentMode;\n }; // Fix IE11 centering sweetalert2/issues/933\n\n /* istanbul ignore next */\n\n\n var fixVerticalPositionIE = function fixVerticalPositionIE() {\n var container = getContainer();\n var popup = getPopup();\n container.style.removeProperty('align-items');\n\n if (popup.offsetTop < 0) {\n container.style.alignItems = 'flex-start';\n }\n };\n /* istanbul ignore next */\n\n\n var IEfix = function IEfix() {\n if (typeof window !== 'undefined' && isIE11()) {\n fixVerticalPositionIE();\n window.addEventListener('resize', fixVerticalPositionIE);\n }\n };\n /* istanbul ignore next */\n\n\n var undoIEfix = function undoIEfix() {\n if (typeof window !== 'undefined' && isIE11()) {\n window.removeEventListener('resize', fixVerticalPositionIE);\n }\n }; // Adding aria-hidden=\"true\" to elements outside of the active modal dialog ensures that\n // elements not within the active modal dialog will not be surfaced if a user opens a screen\n // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.\n\n\n var setAriaHidden = function setAriaHidden() {\n var bodyChildren = toArray(document.body.children);\n bodyChildren.forEach(function (el) {\n if (el === getContainer() || contains(el, getContainer())) {\n return;\n }\n\n if (el.hasAttribute('aria-hidden')) {\n el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));\n }\n\n el.setAttribute('aria-hidden', 'true');\n });\n };\n\n var unsetAriaHidden = function unsetAriaHidden() {\n var bodyChildren = toArray(document.body.children);\n bodyChildren.forEach(function (el) {\n if (el.hasAttribute('data-previous-aria-hidden')) {\n el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));\n el.removeAttribute('data-previous-aria-hidden');\n } else {\n el.removeAttribute('aria-hidden');\n }\n });\n };\n /**\n * This module containts `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n\n\n var privateMethods = {\n swalPromiseResolve: new WeakMap()\n };\n /*\n * Instance method to close sweetAlert\n */\n\n function removePopupAndResetState(container, onAfterClose) {\n if (!isToast()) {\n restoreActiveElement().then(function () {\n return triggerOnAfterClose(onAfterClose);\n });\n globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = false;\n } else {\n triggerOnAfterClose(onAfterClose);\n }\n\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n }\n\n removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['toast-column']]);\n\n if (isModal()) {\n undoScrollbar();\n undoIOSfix();\n undoIEfix();\n unsetAriaHidden();\n }\n }\n\n function swalCloseEventFinished(popup, container, onAfterClose) {\n popup.removeEventListener(animationEndEvent, swalCloseEventFinished);\n\n if (hasClass(popup, swalClasses.hide)) {\n removePopupAndResetState(container, onAfterClose);\n }\n }\n\n function close(resolveValue) {\n var container = getContainer();\n var popup = getPopup();\n var innerParams = privateProps.innerParams.get(this);\n var swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);\n var onClose = innerParams.onClose;\n var onAfterClose = innerParams.onAfterClose;\n\n if (!popup) {\n return;\n }\n\n if (onClose !== null && typeof onClose === 'function') {\n onClose(popup);\n }\n\n removeClass(popup, swalClasses.show);\n addClass(popup, swalClasses.hide); // If animation is supported, animate\n\n if (animationEndEvent && !hasClass(popup, swalClasses.noanimation)) {\n popup.addEventListener(animationEndEvent, swalCloseEventFinished.bind(null, popup, container, onAfterClose));\n } else {\n // Otherwise, remove immediately\n removePopupAndResetState(container, onAfterClose);\n } // Resolve Swal promise\n\n\n swalPromiseResolve(resolveValue || {});\n }\n\n var triggerOnAfterClose = function triggerOnAfterClose(onAfterClose) {\n if (onAfterClose !== null && typeof onAfterClose === 'function') {\n setTimeout(function () {\n onAfterClose();\n });\n }\n };\n\n function setButtonsDisabled(instance, buttons, disabled) {\n var domCache = privateProps.domCache.get(instance);\n buttons.forEach(function (button) {\n domCache[button].disabled = disabled;\n });\n }\n\n function setInputDisabled(input, disabled) {\n if (!input) {\n return false;\n }\n\n if (input.type === 'radio') {\n var radiosContainer = input.parentNode.parentNode;\n var radios = radiosContainer.querySelectorAll('input');\n\n for (var i = 0; i < radios.length; i++) {\n radios[i].disabled = disabled;\n }\n } else {\n input.disabled = disabled;\n }\n }\n\n function enableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'cancelButton'], false);\n }\n\n function disableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'cancelButton'], true);\n } // @deprecated\n\n\n function enableConfirmButton() {\n warnAboutDepreation('Swal.disableConfirmButton()', \"Swal.getConfirmButton().removeAttribute('disabled')\");\n setButtonsDisabled(this, ['confirmButton'], false);\n } // @deprecated\n\n\n function disableConfirmButton() {\n warnAboutDepreation('Swal.enableConfirmButton()', \"Swal.getConfirmButton().setAttribute('disabled', '')\");\n setButtonsDisabled(this, ['confirmButton'], true);\n }\n\n function enableInput() {\n return setInputDisabled(this.getInput(), false);\n }\n\n function disableInput() {\n return setInputDisabled(this.getInput(), true);\n }\n\n function showValidationMessage(error) {\n var domCache = privateProps.domCache.get(this);\n domCache.validationMessage.innerHTML = error;\n var popupComputedStyle = window.getComputedStyle(domCache.popup);\n domCache.validationMessage.style.marginLeft = \"-\".concat(popupComputedStyle.getPropertyValue('padding-left'));\n domCache.validationMessage.style.marginRight = \"-\".concat(popupComputedStyle.getPropertyValue('padding-right'));\n show(domCache.validationMessage);\n var input = this.getInput();\n\n if (input) {\n input.setAttribute('aria-invalid', true);\n input.setAttribute('aria-describedBy', swalClasses['validation-message']);\n focusInput(input);\n addClass(input, swalClasses.inputerror);\n }\n } // Hide block with validation message\n\n\n function resetValidationMessage$1() {\n var domCache = privateProps.domCache.get(this);\n\n if (domCache.validationMessage) {\n hide(domCache.validationMessage);\n }\n\n var input = this.getInput();\n\n if (input) {\n input.removeAttribute('aria-invalid');\n input.removeAttribute('aria-describedBy');\n removeClass(input, swalClasses.inputerror);\n }\n }\n\n function getProgressSteps$1() {\n warnAboutDepreation('Swal.getProgressSteps()', \"const swalInstance = Swal.fire({progressSteps: ['1', '2', '3']}); const progressSteps = swalInstance.params.progressSteps\");\n var innerParams = privateProps.innerParams.get(this);\n return innerParams.progressSteps;\n }\n\n function setProgressSteps(progressSteps) {\n warnAboutDepreation('Swal.setProgressSteps()', 'Swal.update()');\n var innerParams = privateProps.innerParams.get(this);\n\n var updatedParams = _extends({}, innerParams, {\n progressSteps: progressSteps\n });\n\n renderProgressSteps(this, updatedParams);\n privateProps.innerParams.set(this, updatedParams);\n }\n\n function showProgressSteps() {\n var domCache = privateProps.domCache.get(this);\n show(domCache.progressSteps);\n }\n\n function hideProgressSteps() {\n var domCache = privateProps.domCache.get(this);\n hide(domCache.progressSteps);\n }\n\n var Timer = /*#__PURE__*/function () {\n function Timer(callback, delay) {\n _classCallCheck(this, Timer);\n\n this.callback = callback;\n this.remaining = delay;\n this.running = false;\n this.start();\n }\n\n _createClass(Timer, [{\n key: \"start\",\n value: function start() {\n if (!this.running) {\n this.running = true;\n this.started = new Date();\n this.id = setTimeout(this.callback, this.remaining);\n }\n\n return this.remaining;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.running) {\n this.running = false;\n clearTimeout(this.id);\n this.remaining -= new Date() - this.started;\n }\n\n return this.remaining;\n }\n }, {\n key: \"increase\",\n value: function increase(n) {\n var running = this.running;\n\n if (running) {\n this.stop();\n }\n\n this.remaining += n;\n\n if (running) {\n this.start();\n }\n\n return this.remaining;\n }\n }, {\n key: \"getTimerLeft\",\n value: function getTimerLeft() {\n if (this.running) {\n this.stop();\n this.start();\n }\n\n return this.remaining;\n }\n }, {\n key: \"isRunning\",\n value: function isRunning() {\n return this.running;\n }\n }]);\n\n return Timer;\n }();\n\n var defaultInputValidators = {\n email: function email(string, validationMessage) {\n return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage ? validationMessage : 'Invalid email address');\n },\n url: function url(string, validationMessage) {\n // taken from https://stackoverflow.com/a/3809435 with a small change from #1306\n return /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,63}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage ? validationMessage : 'Invalid URL');\n }\n };\n /**\n * Set type, text and actions on popup\n *\n * @param params\n * @returns {boolean}\n */\n\n function setParameters(params) {\n // Use default `inputValidator` for supported input types if not provided\n if (!params.inputValidator) {\n Object.keys(defaultInputValidators).forEach(function (key) {\n if (params.input === key) {\n params.inputValidator = defaultInputValidators[key];\n }\n });\n } // showLoaderOnConfirm && preConfirm\n\n\n if (params.showLoaderOnConfirm && !params.preConfirm) {\n warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\\n' + 'https://sweetalert2.github.io/#ajax-request');\n } // params.animation will be actually used in renderPopup.js\n // but in case when params.animation is a function, we need to call that function\n // before popup (re)initialization, so it'll be possible to check Swal.isVisible()\n // inside the params.animation function\n\n\n params.animation = callIfFunction(params.animation); // Determine if the custom target element is valid\n\n if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) {\n warn('Target parameter is not valid, defaulting to \"body\"');\n params.target = 'body';\n } // Replace newlines with
in title\n\n\n if (typeof params.title === 'string') {\n params.title = params.title.split('\\n').join('
');\n }\n\n var oldPopup = getPopup();\n var targetElement = typeof params.target === 'string' ? document.querySelector(params.target) : params.target;\n\n if (!oldPopup || // If the model target has changed, refresh the popup\n oldPopup && targetElement && oldPopup.parentNode !== targetElement.parentNode) {\n init(params);\n }\n }\n\n function swalOpenAnimationFinished(popup, container) {\n popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished);\n container.style.overflowY = 'auto';\n }\n /**\n * Open popup, add necessary classes and styles, fix scrollbar\n *\n * @param {Array} params\n */\n\n\n var openPopup = function openPopup(params) {\n var container = getContainer();\n var popup = getPopup();\n\n if (params.onBeforeOpen !== null && typeof params.onBeforeOpen === 'function') {\n params.onBeforeOpen(popup);\n }\n\n if (params.animation) {\n addClass(popup, swalClasses.show);\n addClass(container, swalClasses.fade);\n }\n\n show(popup); // scrolling is 'hidden' until animation is done, after that 'auto'\n\n if (animationEndEvent && !hasClass(popup, swalClasses.noanimation)) {\n container.style.overflowY = 'hidden';\n popup.addEventListener(animationEndEvent, swalOpenAnimationFinished.bind(null, popup, container));\n } else {\n container.style.overflowY = 'auto';\n }\n\n addClass([document.documentElement, document.body, container], swalClasses.shown);\n\n if (params.heightAuto && params.backdrop && !params.toast) {\n addClass([document.documentElement, document.body], swalClasses['height-auto']);\n }\n\n if (isModal()) {\n if (params.scrollbarPadding) {\n fixScrollbar();\n }\n\n iOSfix();\n IEfix();\n setAriaHidden(); // sweetalert2/issues/1247\n\n setTimeout(function () {\n container.scrollTop = 0;\n });\n }\n\n if (!isToast() && !globalState.previousActiveElement) {\n globalState.previousActiveElement = document.activeElement;\n }\n\n if (params.onOpen !== null && typeof params.onOpen === 'function') {\n setTimeout(function () {\n params.onOpen(popup);\n });\n }\n };\n\n var _this = undefined;\n\n var handleInputOptions = function handleInputOptions(instance, params) {\n var content = getContent();\n\n var processInputOptions = function processInputOptions(inputOptions) {\n return populateInputOptions[params.input](content, formatInputOptions(inputOptions), params);\n };\n\n if (isPromise(params.inputOptions)) {\n showLoading();\n params.inputOptions.then(function (inputOptions) {\n instance.hideLoading();\n processInputOptions(inputOptions);\n });\n } else if (_typeof(params.inputOptions) === 'object') {\n processInputOptions(params.inputOptions);\n } else {\n error(\"Unexpected type of inputOptions! Expected object, Map or Promise, got \".concat(_typeof(params.inputOptions)));\n }\n };\n\n var handleInputValue = function handleInputValue(instance, params) {\n var input = instance.getInput();\n hide(input);\n params.inputValue.then(function (inputValue) {\n input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : inputValue + '';\n show(input);\n input.focus();\n instance.hideLoading();\n })[\"catch\"](function (err) {\n error('Error in inputValue promise: ' + err);\n input.value = '';\n show(input);\n input.focus();\n\n _this.hideLoading();\n });\n };\n\n var populateInputOptions = {\n select: function select(content, inputOptions, params) {\n var select = getChildByClass(content, swalClasses.select);\n inputOptions.forEach(function (inputOption) {\n var optionValue = inputOption[0];\n var optionLabel = inputOption[1];\n var option = document.createElement('option');\n option.value = optionValue;\n option.innerHTML = optionLabel;\n\n if (params.inputValue.toString() === optionValue.toString()) {\n option.selected = true;\n }\n\n select.appendChild(option);\n });\n select.focus();\n },\n radio: function radio(content, inputOptions, params) {\n var radio = getChildByClass(content, swalClasses.radio);\n inputOptions.forEach(function (inputOption) {\n var radioValue = inputOption[0];\n var radioLabel = inputOption[1];\n var radioInput = document.createElement('input');\n var radioLabelElement = document.createElement('label');\n radioInput.type = 'radio';\n radioInput.name = swalClasses.radio;\n radioInput.value = radioValue;\n\n if (params.inputValue.toString() === radioValue.toString()) {\n radioInput.checked = true;\n }\n\n var label = document.createElement('span');\n label.innerHTML = radioLabel;\n label.className = swalClasses.label;\n radioLabelElement.appendChild(radioInput);\n radioLabelElement.appendChild(label);\n radio.appendChild(radioLabelElement);\n });\n var radios = radio.querySelectorAll('input');\n\n if (radios.length) {\n radios[0].focus();\n }\n }\n /**\n * Converts `inputOptions` into an array of `[value, label]`s\n * @param inputOptions\n */\n\n };\n\n var formatInputOptions = function formatInputOptions(inputOptions) {\n var result = [];\n\n if (typeof Map !== 'undefined' && inputOptions instanceof Map) {\n inputOptions.forEach(function (value, key) {\n result.push([key, value]);\n });\n } else {\n Object.keys(inputOptions).forEach(function (key) {\n result.push([key, inputOptions[key]]);\n });\n }\n\n return result;\n };\n\n function _main(userParams) {\n var _this = this;\n\n showWarningsForParams(userParams);\n\n var innerParams = _extends({}, defaultParams, userParams);\n\n setParameters(innerParams);\n Object.freeze(innerParams); // clear the previous timer\n\n if (globalState.timeout) {\n globalState.timeout.stop();\n delete globalState.timeout;\n } // clear the restore focus timeout\n\n\n clearTimeout(globalState.restoreFocusTimeout);\n var domCache = {\n popup: getPopup(),\n container: getContainer(),\n content: getContent(),\n actions: getActions(),\n confirmButton: getConfirmButton(),\n cancelButton: getCancelButton(),\n closeButton: getCloseButton(),\n validationMessage: getValidationMessage(),\n progressSteps: getProgressSteps()\n };\n privateProps.domCache.set(this, domCache);\n render(this, innerParams);\n privateProps.innerParams.set(this, innerParams);\n var constructor = this.constructor;\n return new Promise(function (resolve) {\n // functions to handle all closings/dismissals\n var succeedWith = function succeedWith(value) {\n _this.closePopup({\n value: value\n });\n };\n\n var dismissWith = function dismissWith(dismiss) {\n _this.closePopup({\n dismiss: dismiss\n });\n };\n\n privateMethods.swalPromiseResolve.set(_this, resolve); // Close on timer\n\n if (innerParams.timer) {\n globalState.timeout = new Timer(function () {\n dismissWith('timer');\n delete globalState.timeout;\n }, innerParams.timer);\n } // Get the value of the popup input\n\n\n var getInputValue = function getInputValue() {\n var input = _this.getInput();\n\n if (!input) {\n return null;\n }\n\n switch (innerParams.input) {\n case 'checkbox':\n return input.checked ? 1 : 0;\n\n case 'radio':\n return input.checked ? input.value : null;\n\n case 'file':\n return input.files.length ? input.files[0] : null;\n\n default:\n return innerParams.inputAutoTrim ? input.value.trim() : input.value;\n }\n }; // input autofocus\n\n\n if (innerParams.input) {\n setTimeout(function () {\n var input = _this.getInput();\n\n if (input) {\n focusInput(input);\n }\n }, 0);\n }\n\n var confirm = function confirm(value) {\n if (innerParams.showLoaderOnConfirm) {\n constructor.showLoading(); // TODO: make showLoading an *instance* method\n }\n\n if (innerParams.preConfirm) {\n _this.resetValidationMessage();\n\n var preConfirmPromise = Promise.resolve().then(function () {\n return innerParams.preConfirm(value, innerParams.validationMessage);\n });\n preConfirmPromise.then(function (preConfirmValue) {\n if (isVisible(domCache.validationMessage) || preConfirmValue === false) {\n _this.hideLoading();\n } else {\n succeedWith(typeof preConfirmValue === 'undefined' ? value : preConfirmValue);\n }\n });\n } else {\n succeedWith(value);\n }\n }; // Mouse interactions\n\n\n var onButtonEvent = function onButtonEvent(e) {\n var target = e.target;\n var confirmButton = domCache.confirmButton,\n cancelButton = domCache.cancelButton;\n var targetedConfirm = confirmButton && (confirmButton === target || confirmButton.contains(target));\n var targetedCancel = cancelButton && (cancelButton === target || cancelButton.contains(target));\n\n switch (e.type) {\n case 'click':\n // Clicked 'confirm'\n if (targetedConfirm) {\n _this.disableButtons();\n\n if (innerParams.input) {\n var inputValue = getInputValue();\n\n if (innerParams.inputValidator) {\n _this.disableInput();\n\n var validationPromise = Promise.resolve().then(function () {\n return innerParams.inputValidator(inputValue, innerParams.validationMessage);\n });\n validationPromise.then(function (validationMessage) {\n _this.enableButtons();\n\n _this.enableInput();\n\n if (validationMessage) {\n _this.showValidationMessage(validationMessage);\n } else {\n confirm(inputValue);\n }\n });\n } else if (!_this.getInput().checkValidity()) {\n _this.enableButtons();\n\n _this.showValidationMessage(innerParams.validationMessage);\n } else {\n confirm(inputValue);\n }\n } else {\n confirm(true);\n } // Clicked 'cancel'\n\n } else if (targetedCancel) {\n _this.disableButtons();\n\n dismissWith(constructor.DismissReason.cancel);\n }\n\n break;\n\n default:\n }\n };\n\n var buttons = domCache.popup.querySelectorAll('button');\n\n for (var i = 0; i < buttons.length; i++) {\n buttons[i].onclick = onButtonEvent;\n buttons[i].onmouseover = onButtonEvent;\n buttons[i].onmouseout = onButtonEvent;\n buttons[i].onmousedown = onButtonEvent;\n } // Closing popup by close button\n\n\n domCache.closeButton.onclick = function () {\n dismissWith(constructor.DismissReason.close);\n };\n\n if (innerParams.toast) {\n // Closing popup by internal click\n domCache.popup.onclick = function () {\n if (innerParams.showConfirmButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.input) {\n return;\n }\n\n dismissWith(constructor.DismissReason.close);\n };\n } else {\n var ignoreOutsideClick = false; // Ignore click events that had mousedown on the popup but mouseup on the container\n // This can happen when the user drags a slider\n\n domCache.popup.onmousedown = function () {\n domCache.container.onmouseup = function (e) {\n domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't\n // have any other direct children aside of the popup\n\n if (e.target === domCache.container) {\n ignoreOutsideClick = true;\n }\n };\n }; // Ignore click events that had mousedown on the container but mouseup on the popup\n\n\n domCache.container.onmousedown = function () {\n domCache.popup.onmouseup = function (e) {\n domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup\n\n if (e.target === domCache.popup || domCache.popup.contains(e.target)) {\n ignoreOutsideClick = true;\n }\n };\n };\n\n domCache.container.onclick = function (e) {\n if (ignoreOutsideClick) {\n ignoreOutsideClick = false;\n return;\n }\n\n if (e.target !== domCache.container) {\n return;\n }\n\n if (callIfFunction(innerParams.allowOutsideClick)) {\n dismissWith(constructor.DismissReason.backdrop);\n }\n };\n } // Reverse buttons (Confirm on the right side)\n\n\n if (innerParams.reverseButtons) {\n domCache.confirmButton.parentNode.insertBefore(domCache.cancelButton, domCache.confirmButton);\n } else {\n domCache.confirmButton.parentNode.insertBefore(domCache.confirmButton, domCache.cancelButton);\n } // Focus handling\n\n\n var setFocus = function setFocus(index, increment) {\n var focusableElements = getFocusableElements(innerParams.focusCancel); // search for visible elements and select the next possible match\n\n for (var _i = 0; _i < focusableElements.length; _i++) {\n index = index + increment; // rollover to first item\n\n if (index === focusableElements.length) {\n index = 0; // go to last item\n } else if (index === -1) {\n index = focusableElements.length - 1;\n }\n\n return focusableElements[index].focus();\n } // no visible focusable elements, focus the popup\n\n\n domCache.popup.focus();\n };\n\n var keydownHandler = function keydownHandler(e, innerParams) {\n if (innerParams.stopKeydownPropagation) {\n e.stopPropagation();\n }\n\n var arrowKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Left', 'Right', 'Up', 'Down' // IE11\n ];\n\n if (e.key === 'Enter' && !e.isComposing) {\n if (e.target && _this.getInput() && e.target.outerHTML === _this.getInput().outerHTML) {\n if (['textarea', 'file'].indexOf(innerParams.input) !== -1) {\n return; // do not submit\n }\n\n constructor.clickConfirm();\n e.preventDefault();\n } // TAB\n\n } else if (e.key === 'Tab') {\n var targetElement = e.target;\n var focusableElements = getFocusableElements(innerParams.focusCancel);\n var btnIndex = -1;\n\n for (var _i2 = 0; _i2 < focusableElements.length; _i2++) {\n if (targetElement === focusableElements[_i2]) {\n btnIndex = _i2;\n break;\n }\n }\n\n if (!e.shiftKey) {\n // Cycle to the next button\n setFocus(btnIndex, 1);\n } else {\n // Cycle to the prev button\n setFocus(btnIndex, -1);\n }\n\n e.stopPropagation();\n e.preventDefault(); // ARROWS - switch focus between buttons\n } else if (arrowKeys.indexOf(e.key) !== -1) {\n // focus Cancel button if Confirm button is currently focused\n if (document.activeElement === domCache.confirmButton && isVisible(domCache.cancelButton)) {\n domCache.cancelButton.focus(); // and vice versa\n } else if (document.activeElement === domCache.cancelButton && isVisible(domCache.confirmButton)) {\n domCache.confirmButton.focus();\n } // ESC\n\n } else if ((e.key === 'Escape' || e.key === 'Esc') && callIfFunction(innerParams.allowEscapeKey) === true) {\n e.preventDefault();\n dismissWith(constructor.DismissReason.esc);\n }\n };\n\n if (globalState.keydownHandlerAdded) {\n globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = false;\n }\n\n if (!innerParams.toast) {\n globalState.keydownHandler = function (e) {\n return keydownHandler(e, innerParams);\n };\n\n globalState.keydownTarget = innerParams.keydownListenerCapture ? window : domCache.popup;\n globalState.keydownListenerCapture = innerParams.keydownListenerCapture;\n globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = true;\n }\n\n _this.enableButtons();\n\n _this.hideLoading();\n\n _this.resetValidationMessage();\n\n if (innerParams.toast && (innerParams.input || innerParams.footer || innerParams.showCloseButton)) {\n addClass(document.body, swalClasses['toast-column']);\n } else {\n removeClass(document.body, swalClasses['toast-column']);\n } // inputOptions, inputValue\n\n\n if (innerParams.input === 'select' || innerParams.input === 'radio') {\n handleInputOptions(_this, innerParams);\n } else if (['text', 'email', 'number', 'tel', 'textarea'].indexOf(innerParams.input) !== -1 && isPromise(innerParams.inputValue)) {\n handleInputValue(_this, innerParams);\n }\n\n openPopup(innerParams);\n\n if (!innerParams.toast) {\n if (!callIfFunction(innerParams.allowEnterKey)) {\n if (document.activeElement && typeof document.activeElement.blur === 'function') {\n document.activeElement.blur();\n }\n } else if (innerParams.focusCancel && isVisible(domCache.cancelButton)) {\n domCache.cancelButton.focus();\n } else if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) {\n domCache.confirmButton.focus();\n } else {\n setFocus(-1, 1);\n }\n } // fix scroll\n\n\n domCache.container.scrollTop = 0;\n });\n }\n /**\n * Updates popup parameters.\n */\n\n\n function update(params) {\n var validUpdatableParams = {}; // assign valid params from `params` to `defaults`\n\n Object.keys(params).forEach(function (param) {\n if (Swal.isUpdatableParameter(param)) {\n validUpdatableParams[param] = params[param];\n } else {\n warn(\"Invalid parameter to update: \\\"\".concat(param, \"\\\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\"));\n }\n });\n var innerParams = privateProps.innerParams.get(this);\n\n var updatedParams = _extends({}, innerParams, validUpdatableParams);\n\n render(this, updatedParams);\n privateProps.innerParams.set(this, updatedParams);\n Object.defineProperties(this, {\n params: {\n value: _extends({}, this.params, params),\n writable: false,\n enumerable: true\n }\n });\n }\n\n var instanceMethods = Object.freeze({\n hideLoading: hideLoading,\n disableLoading: hideLoading,\n getInput: getInput$1,\n close: close,\n closePopup: close,\n closeModal: close,\n closeToast: close,\n enableButtons: enableButtons,\n disableButtons: disableButtons,\n enableConfirmButton: enableConfirmButton,\n disableConfirmButton: disableConfirmButton,\n enableInput: enableInput,\n disableInput: disableInput,\n showValidationMessage: showValidationMessage,\n resetValidationMessage: resetValidationMessage$1,\n getProgressSteps: getProgressSteps$1,\n setProgressSteps: setProgressSteps,\n showProgressSteps: showProgressSteps,\n hideProgressSteps: hideProgressSteps,\n _main: _main,\n update: update\n });\n var currentInstance; // SweetAlert constructor\n\n function SweetAlert() {\n // Prevent run in Node env\n\n /* istanbul ignore if */\n if (typeof window === 'undefined') {\n return;\n } // Check for the existence of Promise\n\n /* istanbul ignore if */\n\n\n if (typeof Promise === 'undefined') {\n error('This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)');\n }\n\n currentInstance = 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 var outerParams = Object.freeze(this.constructor.argsToParams(args));\n Object.defineProperties(this, {\n params: {\n value: outerParams,\n writable: false,\n enumerable: true,\n configurable: true\n }\n });\n\n var promise = this._main(this.params);\n\n privateProps.promise.set(this, promise);\n } // `catch` cannot be the name of a module export, so we define our thenable methods here instead\n\n\n SweetAlert.prototype.then = function (onFulfilled) {\n var promise = privateProps.promise.get(this);\n return promise.then(onFulfilled);\n };\n\n SweetAlert.prototype[\"finally\"] = function (onFinally) {\n var promise = privateProps.promise.get(this);\n return promise[\"finally\"](onFinally);\n }; // Assign instance methods from src/instanceMethods/*.js to prototype\n\n\n _extends(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor\n\n\n _extends(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility\n\n\n Object.keys(instanceMethods).forEach(function (key) {\n SweetAlert[key] = function () {\n if (currentInstance) {\n var _currentInstance;\n\n return (_currentInstance = currentInstance)[key].apply(_currentInstance, arguments);\n }\n };\n });\n SweetAlert.DismissReason = DismissReason;\n SweetAlert.version = '8.8.5';\n var Swal = SweetAlert;\n Swal[\"default\"] = Swal;\n return Swal;\n});\n\nif (typeof window !== 'undefined' && window.Sweetalert2) {\n window.swal = window.sweetAlert = window.Swal = window.SweetAlert = window.Sweetalert2;\n}\n\n\"undefined\" != typeof document && function (e, t) {\n var n = e.createElement(\"style\");\n if (e.getElementsByTagName(\"head\")[0].appendChild(n), n.styleSheet) n.styleSheet.disabled || (n.styleSheet.cssText = t);else try {\n n.innerHTML = t;\n } catch (e) {\n n.innerText = t;\n }\n}(document, \"@charset \\\"UTF-8\\\";@-webkit-keyframes swal2-show{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes swal2-show{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.875em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.875em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}100%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}100%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}50%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}80%{margin-top:-.375em;-webkit-transform:scale(1.15);transform:scale(1.15)}100%{margin-top:0;-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}50%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}80%{margin-top:-.375em;-webkit-transform:scale(1.15);transform:scale(1.15)}100%{margin-top:0;-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-shown{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:initial;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon::before{display:flex;align-items:center;font-size:2em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon::before{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{height:auto;margin:0 .3125em}.swal2-popup.swal2-toast .swal2-styled{margin:0 .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 .0625em #fff,0 0 0 .125em rgba(50,100,150,.4)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:2em;height:2.8125em;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.25em;left:-.9375em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:2em 2em;transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;-webkit-transform-origin:0 2em;transform-origin:0 2em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:showSweetToast .5s;animation:showSweetToast .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:hideSweetToast .2s forwards;animation:hideSweetToast .2s forwards}.swal2-popup.swal2-toast .swal2-animate-success-icon .swal2-success-line-tip{-webkit-animation:animate-toast-success-tip .75s;animation:animate-toast-success-tip .75s}.swal2-popup.swal2-toast .swal2-animate-success-icon .swal2-success-line-long{-webkit-animation:animate-toast-success-long .75s;animation:animate-toast-success-long .75s}@-webkit-keyframes showSweetToast{0%{-webkit-transform:translateY(-.625em) rotateZ(2deg);transform:translateY(-.625em) rotateZ(2deg);opacity:0}33%{-webkit-transform:translateY(0) rotateZ(-2deg);transform:translateY(0) rotateZ(-2deg);opacity:.5}66%{-webkit-transform:translateY(.3125em) rotateZ(2deg);transform:translateY(.3125em) rotateZ(2deg);opacity:.7}100%{-webkit-transform:translateY(0) rotateZ(0);transform:translateY(0) rotateZ(0);opacity:1}}@keyframes showSweetToast{0%{-webkit-transform:translateY(-.625em) rotateZ(2deg);transform:translateY(-.625em) rotateZ(2deg);opacity:0}33%{-webkit-transform:translateY(0) rotateZ(-2deg);transform:translateY(0) rotateZ(-2deg);opacity:.5}66%{-webkit-transform:translateY(.3125em) rotateZ(2deg);transform:translateY(.3125em) rotateZ(2deg);opacity:.7}100%{-webkit-transform:translateY(0) rotateZ(0);transform:translateY(0) rotateZ(0);opacity:1}}@-webkit-keyframes hideSweetToast{0%{opacity:1}33%{opacity:.5}100%{-webkit-transform:rotateZ(1deg);transform:rotateZ(1deg);opacity:0}}@keyframes hideSweetToast{0%{opacity:1}33%{opacity:.5}100%{-webkit-transform:rotateZ(1deg);transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes animate-toast-success-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes animate-toast-success-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes animate-toast-success-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes animate-toast-success-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-shown{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent}body.swal2-no-backdrop .swal2-shown>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-shown.swal2-top{top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-top-left,body.swal2-no-backdrop .swal2-shown.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-shown.swal2-top-end,body.swal2-no-backdrop .swal2-shown.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-shown.swal2-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-shown.swal2-center-left,body.swal2-no-backdrop .swal2-shown.swal2-center-start{top:50%;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-center-end,body.swal2-no-backdrop .swal2-shown.swal2-center-right{top:50%;right:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-bottom{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-bottom-left,body.swal2-no-backdrop .swal2-shown.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-shown.swal2-bottom-end,body.swal2-no-backdrop .swal2-shown.swal2-bottom-right{right:0;bottom:0}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;background-color:transparent;-webkit-overflow-scrolling:touch}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-container.swal2-fade{transition:background-color .1s}.swal2-container.swal2-shown{background-color:rgba(0,0,0,.4)}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border-radius:.3125em;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{z-index:1;flex-wrap:wrap;align-items:center;justify-content:center;margin:1.25em auto 0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-actions.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;width:2.5em;height:2.5em;margin:.46875em;padding:0;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:.25em solid transparent;border-radius:100%;border-color:transparent;background-color:transparent!important;color:transparent;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-actions.swal2-loading .swal2-styled.swal2-cancel{margin-right:30px;margin-left:30px}.swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after{content:'';display:inline-block;width:15px;height:15px;margin-left:5px;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:3px solid #999;border-radius:50%;border-right-color:transparent;box-shadow:1px 1px 1px #fff}.swal2-styled{margin:.3125em;padding:.625em 2em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#3085d6;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#aaa;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(50,100,150,.4)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;top:0;right:0;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:0;outline:initial;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{-webkit-transform:none;transform:none;color:#f27474}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0;color:#545454;font-size:1.125em;font-weight:300;line-height:normal;word-wrap:break-word}#swal2-content{text-align:center}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 3px #c4e6f5}.swal2-file::-webkit-input-placeholder,.swal2-input::-webkit-input-placeholder,.swal2-textarea::-webkit-input-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::-ms-input-placeholder,.swal2-input::-ms-input-placeholder,.swal2-textarea::-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:inherit}.swal2-range input{width:80%}.swal2-range output{width:20%;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:#545454;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-validation-message{display:none;align-items:center;justify-content:center;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:'!';display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;zoom:normal;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-moz-document url-prefix(){.swal2-close:focus{outline:2px solid rgba(50,100,150,.4)}}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;zoom:normal;border:.25em solid transparent;border-radius:50%;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon::before{display:flex;align-items:center;height:92%;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-warning::before{content:'!'}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-info::before{content:'i'}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-question::before{content:'?'}.swal2-icon.swal2-question.swal2-arabic-question-mark::before{content:'؟'}.swal2-icon.swal2-success{border-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:3.75em 3.75em;transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 3.75em;transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.875em;width:1.5625em;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-progress-steps{align-items:center;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;width:2em;height:2em;border-radius:2em;background:#3085d6;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#3085d6}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;width:2.5em;height:.4em;margin:0 -1px;background:#3085d6}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-show.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-hide.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-animate-success-icon .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-animate-success-icon .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-animate-success-icon .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-animate-error-icon{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-animate-error-icon .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}@-webkit-keyframes swal2-rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:initial!important}}\");","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function () {\n var context = this;\n (function () {\n (function () {\n var slice = [].slice;\n this.ActionCable = {\n INTERNAL: {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\"actioncable-v1-json\", \"actioncable-unsupported\"]\n },\n WebSocket: window.WebSocket,\n logger: window.console,\n createConsumer: function createConsumer(url) {\n var ref;\n\n if (url == null) {\n url = (ref = this.getConfig(\"url\")) != null ? ref : this.INTERNAL.default_mount_path;\n }\n\n return new ActionCable.Consumer(this.createWebSocketURL(url));\n },\n getConfig: function getConfig(name) {\n var element;\n element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n return element != null ? element.getAttribute(\"content\") : void 0;\n },\n createWebSocketURL: function createWebSocketURL(url) {\n var a;\n\n if (url && !/^wss?:/i.test(url)) {\n a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n },\n startDebugging: function startDebugging() {\n return this.debugging = true;\n },\n stopDebugging: function stopDebugging() {\n return this.debugging = null;\n },\n log: function log() {\n var messages, ref;\n messages = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n\n if (this.debugging) {\n messages.push(Date.now());\n return (ref = this.logger).log.apply(ref, [\"[ActionCable]\"].concat(slice.call(messages)));\n }\n }\n };\n }).call(this);\n }).call(context);\n var ActionCable = context.ActionCable;\n (function () {\n (function () {\n var bind = function bind(fn, me) {\n return function () {\n return fn.apply(me, arguments);\n };\n };\n\n ActionCable.ConnectionMonitor = function () {\n var clamp, now, secondsSince;\n ConnectionMonitor.pollInterval = {\n min: 3,\n max: 30\n };\n ConnectionMonitor.staleThreshold = 6;\n\n function ConnectionMonitor(connection) {\n this.connection = connection;\n this.visibilityDidChange = bind(this.visibilityDidChange, this);\n this.reconnectAttempts = 0;\n }\n\n ConnectionMonitor.prototype.start = function () {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n document.addEventListener(\"visibilitychange\", this.visibilityDidChange);\n return ActionCable.log(\"ConnectionMonitor started. pollInterval = \" + this.getPollInterval() + \" ms\");\n }\n };\n\n ConnectionMonitor.prototype.stop = function () {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n document.removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n return ActionCable.log(\"ConnectionMonitor stopped\");\n }\n };\n\n ConnectionMonitor.prototype.isRunning = function () {\n return this.startedAt != null && this.stoppedAt == null;\n };\n\n ConnectionMonitor.prototype.recordPing = function () {\n return this.pingedAt = now();\n };\n\n ConnectionMonitor.prototype.recordConnect = function () {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n return ActionCable.log(\"ConnectionMonitor recorded connect\");\n };\n\n ConnectionMonitor.prototype.recordDisconnect = function () {\n this.disconnectedAt = now();\n return ActionCable.log(\"ConnectionMonitor recorded disconnect\");\n };\n\n ConnectionMonitor.prototype.startPolling = function () {\n this.stopPolling();\n return this.poll();\n };\n\n ConnectionMonitor.prototype.stopPolling = function () {\n return clearTimeout(this.pollTimeout);\n };\n\n ConnectionMonitor.prototype.poll = function () {\n return this.pollTimeout = setTimeout(function (_this) {\n return function () {\n _this.reconnectIfStale();\n\n return _this.poll();\n };\n }(this), this.getPollInterval());\n };\n\n ConnectionMonitor.prototype.getPollInterval = function () {\n var interval, max, min, ref;\n ref = this.constructor.pollInterval, min = ref.min, max = ref.max;\n interval = 5 * Math.log(this.reconnectAttempts + 1);\n return Math.round(clamp(interval, min, max) * 1000);\n };\n\n ConnectionMonitor.prototype.reconnectIfStale = function () {\n if (this.connectionIsStale()) {\n ActionCable.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + this.getPollInterval() + \" ms, time disconnected = \" + secondsSince(this.disconnectedAt) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n this.reconnectAttempts++;\n\n if (this.disconnectedRecently()) {\n return ActionCable.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n } else {\n ActionCable.log(\"ConnectionMonitor reopening\");\n return this.connection.reopen();\n }\n }\n };\n\n ConnectionMonitor.prototype.connectionIsStale = function () {\n var ref;\n return secondsSince((ref = this.pingedAt) != null ? ref : this.startedAt) > this.constructor.staleThreshold;\n };\n\n ConnectionMonitor.prototype.disconnectedRecently = function () {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n };\n\n ConnectionMonitor.prototype.visibilityDidChange = function () {\n if (document.visibilityState === \"visible\") {\n return setTimeout(function (_this) {\n return function () {\n if (_this.connectionIsStale() || !_this.connection.isOpen()) {\n ActionCable.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visbilityState = \" + document.visibilityState);\n return _this.connection.reopen();\n }\n };\n }(this), 200);\n }\n };\n\n now = function now() {\n return new Date().getTime();\n };\n\n secondsSince = function secondsSince(time) {\n return (now() - time) / 1000;\n };\n\n clamp = function clamp(number, min, max) {\n return Math.max(min, Math.min(max, number));\n };\n\n return ConnectionMonitor;\n }();\n }).call(this);\n (function () {\n var i,\n message_types,\n protocols,\n ref,\n supportedProtocols,\n unsupportedProtocol,\n slice = [].slice,\n bind = function bind(fn, me) {\n return function () {\n return fn.apply(me, arguments);\n };\n },\n indexOf = [].indexOf || function (item) {\n for (var i = 0, l = this.length; i < l; i++) {\n if (i in this && this[i] === item) return i;\n }\n\n return -1;\n };\n\n ref = ActionCable.INTERNAL, message_types = ref.message_types, protocols = ref.protocols;\n supportedProtocols = 2 <= protocols.length ? slice.call(protocols, 0, i = protocols.length - 1) : (i = 0, []), unsupportedProtocol = protocols[i++];\n\n ActionCable.Connection = function () {\n Connection.reopenDelay = 500;\n\n function Connection(consumer) {\n this.consumer = consumer;\n this.open = bind(this.open, this);\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ActionCable.ConnectionMonitor(this);\n this.disconnected = true;\n }\n\n Connection.prototype.send = function (data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n };\n\n Connection.prototype.open = function () {\n if (this.isActive()) {\n ActionCable.log(\"Attempted to open WebSocket, but existing socket is \" + this.getState());\n return false;\n } else {\n ActionCable.log(\"Opening WebSocket, current state is \" + this.getState() + \", subprotocols: \" + protocols);\n\n if (this.webSocket != null) {\n this.uninstallEventHandlers();\n }\n\n this.webSocket = new ActionCable.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n };\n\n Connection.prototype.close = function (arg) {\n var allowReconnect, ref1;\n allowReconnect = (arg != null ? arg : {\n allowReconnect: true\n }).allowReconnect;\n\n if (!allowReconnect) {\n this.monitor.stop();\n }\n\n if (this.isActive()) {\n return (ref1 = this.webSocket) != null ? ref1.close() : void 0;\n }\n };\n\n Connection.prototype.reopen = function () {\n var error;\n ActionCable.log(\"Reopening WebSocket, current state is \" + this.getState());\n\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error1) {\n error = error1;\n return ActionCable.log(\"Failed to reopen WebSocket\", error);\n } finally {\n ActionCable.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n };\n\n Connection.prototype.getProtocol = function () {\n var ref1;\n return (ref1 = this.webSocket) != null ? ref1.protocol : void 0;\n };\n\n Connection.prototype.isOpen = function () {\n return this.isState(\"open\");\n };\n\n Connection.prototype.isActive = function () {\n return this.isState(\"open\", \"connecting\");\n };\n\n Connection.prototype.isProtocolSupported = function () {\n var ref1;\n return ref1 = this.getProtocol(), indexOf.call(supportedProtocols, ref1) >= 0;\n };\n\n Connection.prototype.isState = function () {\n var ref1, states;\n states = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return ref1 = this.getState(), indexOf.call(states, ref1) >= 0;\n };\n\n Connection.prototype.getState = function () {\n var ref1, state, value;\n\n for (state in WebSocket) {\n value = WebSocket[state];\n\n if (value === ((ref1 = this.webSocket) != null ? ref1.readyState : void 0)) {\n return state.toLowerCase();\n }\n }\n\n return null;\n };\n\n Connection.prototype.installEventHandlers = function () {\n var eventName, handler;\n\n for (eventName in this.events) {\n handler = this.events[eventName].bind(this);\n this.webSocket[\"on\" + eventName] = handler;\n }\n };\n\n Connection.prototype.uninstallEventHandlers = function () {\n var eventName;\n\n for (eventName in this.events) {\n this.webSocket[\"on\" + eventName] = function () {};\n }\n };\n\n Connection.prototype.events = {\n message: function message(event) {\n var identifier, message, ref1, type;\n\n if (!this.isProtocolSupported()) {\n return;\n }\n\n ref1 = JSON.parse(event.data), identifier = ref1.identifier, message = ref1.message, type = ref1.type;\n\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function open() {\n ActionCable.log(\"WebSocket onopen event, using '\" + this.getProtocol() + \"' subprotocol\");\n this.disconnected = false;\n\n if (!this.isProtocolSupported()) {\n ActionCable.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function close(event) {\n ActionCable.log(\"WebSocket onclose event\");\n\n if (this.disconnected) {\n return;\n }\n\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function error() {\n return ActionCable.log(\"WebSocket onerror event\");\n }\n };\n return Connection;\n }();\n }).call(this);\n (function () {\n var slice = [].slice;\n\n ActionCable.Subscriptions = function () {\n function Subscriptions(consumer) {\n this.consumer = consumer;\n this.subscriptions = [];\n }\n\n Subscriptions.prototype.create = function (channelName, mixin) {\n var channel, params, subscription;\n channel = channelName;\n params = _typeof(channel) === \"object\" ? channel : {\n channel: channel\n };\n subscription = new ActionCable.Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n };\n\n Subscriptions.prototype.add = function (subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.sendCommand(subscription, \"subscribe\");\n return subscription;\n };\n\n Subscriptions.prototype.remove = function (subscription) {\n this.forget(subscription);\n\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n\n return subscription;\n };\n\n Subscriptions.prototype.reject = function (identifier) {\n var i, len, ref, results, subscription;\n ref = this.findAll(identifier);\n results = [];\n\n for (i = 0, len = ref.length; i < len; i++) {\n subscription = ref[i];\n this.forget(subscription);\n this.notify(subscription, \"rejected\");\n results.push(subscription);\n }\n\n return results;\n };\n\n Subscriptions.prototype.forget = function (subscription) {\n var s;\n\n this.subscriptions = function () {\n var i, len, ref, results;\n ref = this.subscriptions;\n results = [];\n\n for (i = 0, len = ref.length; i < len; i++) {\n s = ref[i];\n\n if (s !== subscription) {\n results.push(s);\n }\n }\n\n return results;\n }.call(this);\n\n return subscription;\n };\n\n Subscriptions.prototype.findAll = function (identifier) {\n var i, len, ref, results, s;\n ref = this.subscriptions;\n results = [];\n\n for (i = 0, len = ref.length; i < len; i++) {\n s = ref[i];\n\n if (s.identifier === identifier) {\n results.push(s);\n }\n }\n\n return results;\n };\n\n Subscriptions.prototype.reload = function () {\n var i, len, ref, results, subscription;\n ref = this.subscriptions;\n results = [];\n\n for (i = 0, len = ref.length; i < len; i++) {\n subscription = ref[i];\n results.push(this.sendCommand(subscription, \"subscribe\"));\n }\n\n return results;\n };\n\n Subscriptions.prototype.notifyAll = function () {\n var args, callbackName, i, len, ref, results, subscription;\n callbackName = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n ref = this.subscriptions;\n results = [];\n\n for (i = 0, len = ref.length; i < len; i++) {\n subscription = ref[i];\n results.push(this.notify.apply(this, [subscription, callbackName].concat(slice.call(args))));\n }\n\n return results;\n };\n\n Subscriptions.prototype.notify = function () {\n var args, callbackName, i, len, results, subscription, subscriptions;\n subscription = arguments[0], callbackName = arguments[1], args = 3 <= arguments.length ? slice.call(arguments, 2) : [];\n\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [subscription];\n }\n\n results = [];\n\n for (i = 0, len = subscriptions.length; i < len; i++) {\n subscription = subscriptions[i];\n results.push(typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : void 0);\n }\n\n return results;\n };\n\n Subscriptions.prototype.sendCommand = function (subscription, command) {\n var identifier;\n identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n };\n\n return Subscriptions;\n }();\n }).call(this);\n (function () {\n ActionCable.Subscription = function () {\n var extend;\n\n function Subscription(consumer, params, mixin) {\n this.consumer = consumer;\n\n if (params == null) {\n params = {};\n }\n\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n\n Subscription.prototype.perform = function (action, data) {\n if (data == null) {\n data = {};\n }\n\n data.action = action;\n return this.send(data);\n };\n\n Subscription.prototype.send = function (data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n };\n\n Subscription.prototype.unsubscribe = function () {\n return this.consumer.subscriptions.remove(this);\n };\n\n extend = function extend(object, properties) {\n var key, value;\n\n if (properties != null) {\n for (key in properties) {\n value = properties[key];\n object[key] = value;\n }\n }\n\n return object;\n };\n\n return Subscription;\n }();\n }).call(this);\n (function () {\n ActionCable.Consumer = function () {\n function Consumer(url) {\n this.url = url;\n this.subscriptions = new ActionCable.Subscriptions(this);\n this.connection = new ActionCable.Connection(this);\n }\n\n Consumer.prototype.send = function (data) {\n return this.connection.send(data);\n };\n\n Consumer.prototype.connect = function () {\n return this.connection.open();\n };\n\n Consumer.prototype.disconnect = function () {\n return this.connection.close({\n allowReconnect: false\n });\n };\n\n Consumer.prototype.ensureActiveConnection = function () {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n };\n\n return Consumer;\n }();\n }).call(this);\n }).call(this);\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\n module.exports = ActionCable;\n } else if (typeof define === \"function\" && define.amd) {\n define(ActionCable);\n }\n}).call(this);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/**!\r\n * Sortable\r\n * @author\tRubaXa \r\n * @author\towenm \r\n * @license MIT\r\n */\n(function sortableModule(factory) {\n \"use strict\";\n\n if (typeof define === \"function\" && define.amd) {\n define(factory);\n } else if (typeof module != \"undefined\" && typeof module.exports != \"undefined\") {\n module.exports = factory();\n } else {\n /* jshint sub:true */\n window[\"Sortable\"] = factory();\n }\n})(function sortableFactory() {\n \"use strict\";\n\n if (typeof window === \"undefined\" || !window.document) {\n return function sortableError() {\n throw new Error(\"Sortable.js requires a window with a document\");\n };\n }\n\n var dragEl,\n parentEl,\n ghostEl,\n cloneEl,\n rootEl,\n nextEl,\n lastDownEl,\n scrollEl,\n scrollParentEl,\n scrollCustomFn,\n oldIndex,\n newIndex,\n activeGroup,\n putSortable,\n autoScrolls = [],\n scrolling = false,\n pointerElemChangedInterval,\n lastPointerElemX,\n lastPointerElemY,\n tapEvt,\n touchEvt,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n forRepaintDummy,\n realDragElRect,\n // dragEl rect after current animation\n\n /** @const */\n R_SPACE = /\\s+/g,\n expando = 'Sortable' + new Date().getTime(),\n win = window,\n document = win.document,\n parseInt = win.parseInt,\n setTimeout = win.setTimeout,\n $ = win.jQuery || win.Zepto,\n Polymer = win.Polymer,\n captureMode = {\n capture: false,\n passive: false\n },\n supportDraggable = ('draggable' in document.createElement('div')),\n supportCssPointerEvents = function (el) {\n // false when IE11\n if (!!navigator.userAgent.match(/(?:Trident.*rv[ :]?11\\.|msie)/i)) {\n return false;\n }\n\n el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _silent = false,\n _alignedSilent = false,\n abs = Math.abs,\n min = Math.min,\n savedInputChecked = [],\n touchDragOverListeners = [],\n alwaysFalse = function alwaysFalse() {\n return false;\n },\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = _css(el),\n elWidth = parseInt(elCSS.width),\n child1 = _getChild(el, 0, options),\n child2 = _getChild(el, 1, options),\n firstChildCSS = child1 && _css(child1),\n secondChildCSS = child2 && _css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + child1.getBoundingClientRect().width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + child2.getBoundingClientRect().width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[\"float\"] === 'none' || child2 && elCSS[\"float\"] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _isInRowColumn = function _isInRowColumn(x, y, el, axis, options) {\n var targetRect = realDragElRect || dragEl.getBoundingClientRect(),\n targetS1Opp = axis === 'vertical' ? targetRect.left : targetRect.top,\n targetS2Opp = axis === 'vertical' ? targetRect.right : targetRect.bottom,\n mouseOnOppAxis = axis === 'vertical' ? x : y;\n return targetS1Opp < mouseOnOppAxis && mouseOnOppAxis < targetS2Opp;\n },\n _getParentAutoScrollElement = function _getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return win;\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = _css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem || !elem.getBoundingClientRect || elem === document.body) return win;\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return win;\n },\n _autoScroll = _throttle(function (\n /**Event*/\n evt,\n /**Object*/\n options,\n /**HTMLElement*/\n rootEl,\n /**Boolean*/\n isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (options.scroll) {\n var _this = rootEl ? rootEl[expando] : window,\n rect,\n css,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n x = evt.clientX,\n y = evt.clientY,\n winWidth = window.innerWidth,\n winHeight = window.innerHeight,\n vx,\n vy,\n scrollThisInstance = false; // Detect scrollEl\n\n\n if (scrollParentEl !== rootEl) {\n _clearAutoScrolls();\n\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = _getParentAutoScrollElement(rootEl, true);\n scrollParentEl = scrollEl;\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el;\n\n if (currentParent && currentParent !== win) {\n el = currentParent;\n css = _css(el);\n rect = currentParent.getBoundingClientRect();\n vx = el.clientWidth < el.scrollWidth && (css.overflowX == 'auto' || css.overflowX == 'scroll') && (abs(rect.right - x) <= sens) - (abs(rect.left - x) <= sens);\n vy = el.clientHeight < el.scrollHeight && (css.overflowY == 'auto' || css.overflowY == 'scroll') && (abs(rect.bottom - y) <= sens) - (abs(rect.top - y) <= sens);\n } else if (currentParent === win) {\n el = win;\n vx = (winWidth - x <= sens) - (x <= sens);\n vy = (winHeight - y <= sens) - (y <= sens);\n }\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (el && (vx != 0 || vy != 0)) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._emulateDragOver(true);\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if ('function' === typeof scrollCustomFn) {\n if (scrollCustomFn.call(_this, scrollOffsetX, scrollOffsetY, evt, touchEvt, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n if (autoScrolls[this.layer].el === win) {\n win.scrollTo(win.pageXOffset + scrollOffsetX, win.pageYOffset + scrollOffsetY);\n } else {\n autoScrolls[this.layer].el.scrollTop += scrollOffsetY;\n autoScrolls[this.layer].el.scrollLeft += scrollOffsetX;\n }\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== win && (currentParent = _getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n }\n }, 30),\n _clearAutoScrolls = function _clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var ret;\n\n if (value == null && pull) {\n ret = true; // default pull value: true (backwards compatibility)\n } else if (value == null || value === false) {\n ret = false;\n } else if (pull && value === 'clone') {\n ret = value;\n } else if (typeof value === 'function') {\n ret = value(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n ret = value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n\n return ret || to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _checkAlignment = function _checkAlignment(evt) {\n if (!dragEl) return;\n dragEl.parentNode[expando] && dragEl.parentNode[expando]._computeIsAligned(evt);\n };\n /**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\n function Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw 'Sortable: `el` must be HTMLElement, and not ' + {}.toString.call(el);\n }\n\n this.el = el; // root element\n\n this.options = options = _extend({}, options); // Export instance\n\n el[expando] = this; // Default options\n\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true,\n draggable: /[uo]l/i.test(el.nodeName) ? 'li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n touchStartThreshold: parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && ('PointerEvent' in window || window.navigator && 'msPointerEnabled' in window.navigator // microsoft\n )\n }; // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n if (!('direction' in options)) {\n options.direction = function () {\n return _detectDirection(el, options);\n };\n }\n\n _prepareGroup(options);\n\n options.invertedSwapThreshold == null && (options.invertedSwapThreshold = options.swapThreshold); // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable; // Bind events\n\n _on(el, 'mousedown', this._onTapStart);\n\n _on(el, 'touchstart', this._onTapStart);\n\n options.supportPointer && _on(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n _on(el, 'dragover', this);\n\n _on(el, 'dragenter', this);\n }\n\n touchDragOverListeners.push(this._onDragOver); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []);\n }\n\n Sortable.prototype =\n /** @lends Sortable.prototype */\n {\n constructor: Sortable,\n // is mouse aligned with dragEl?\n _isAligned: true,\n _computeIsAligned: function _computeIsAligned(evt, isDragEl) {\n if (_alignedSilent) return;\n if (!dragEl || dragEl.parentNode !== this.el) return;\n\n if (isDragEl !== true && isDragEl !== false) {\n isDragEl = !!_closest(evt.target, null, dragEl, true);\n }\n\n this._isAligned = !scrolling && (isDragEl || this._isAligned && _isInRowColumn(evt.clientX, evt.clientY, this.el, this._getDirection(evt, null), this.options));\n _alignedSilent = true;\n setTimeout(function () {\n _alignedSilent = false;\n }, 30);\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0],\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter,\n startIndex;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button or enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = _closest(target, options.draggable, el, true);\n\n if (!target) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n startIndex = _index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent(_this, originalTarget, 'filter', target, el, el, startIndex);\n\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = _closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent(_this, criteria, 'filter', target, el, el, startIndex);\n\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !_closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target, startIndex);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n if (!dragEl || !this.options.scroll) return;\n\n var x = evt.clientX,\n y = evt.clientY,\n elem = document.elementFromPoint(x, y),\n _this = this; // firefox does not have native autoscroll\n\n\n if (fallback || window.navigator && window.navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {\n _autoScroll(evt, _this.options, elem, true); // Listener for pointer element change\n\n\n var ogElemScroller = _getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastPointerElemX || y !== lastPointerElemY)) {\n pointerElemChangedInterval && clearInterval(pointerElemChangedInterval); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n if (!dragEl) return; // could also check if scroll direction on newElem changes due to parent autoscrolling\n\n var newElem = _getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n\n _clearAutoScrolls();\n\n _autoScroll(evt, _this.options, ogElemScroller, true);\n }\n }, 10);\n lastPointerElemX = x;\n lastPointerElemY = y;\n }\n } else {\n // if DnD is enabled (not on firefox), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!_this.options.bubbleScroll || _getParentAutoScrollElement(elem, true) === window) {\n _clearAutoScrolls();\n\n return;\n }\n\n _autoScroll(evt, _this.options, _getParentAutoScrollElement(elem, false));\n }\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target,\n /** Number */\n startIndex) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n tapEvt = evt;\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n oldIndex = startIndex;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n _this._disableDelayedDrag(); // Make the element draggable\n\n\n dragEl.draggable = _this.nativeDraggable; // Bind the events: dragstart/dragend\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent(_this, rootEl, 'choose', dragEl, rootEl, rootEl, oldIndex); // Chosen item\n\n\n _toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n _find(dragEl, criteria.trim(), _disableDraggable);\n });\n\n _on(ownerDocument, 'mouseup', _this._onDrop);\n\n _on(ownerDocument, 'touchend', _this._onDrop);\n\n _on(ownerDocument, 'touchcancel', _this._onDrop);\n\n options.supportPointer && _on(ownerDocument, 'pointercancel', _this._onDrop);\n\n if (options.delay) {\n // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n _on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n\n _on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n\n _on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n\n _on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n\n _on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n\n options.supportPointer && _on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn.bind(_this), options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (min(abs(touch.clientX - this._lastX), abs(touch.clientY - this._lastY)) >= this.options.touchStartThreshold) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n var ownerDocument = this.el.ownerDocument;\n clearTimeout(this._dragStartTimer);\n\n _off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n\n _off(ownerDocument, 'touchend', this._disableDelayedDrag);\n\n _off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n\n _off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n\n _off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n\n _off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || (evt.pointerType == 'touch' ? evt : null);\n\n if (touch) {\n // Touch device support\n tapEvt = {\n target: dragEl,\n clientX: touch.clientX,\n clientY: touch.clientY\n };\n\n this._onDragStart(tapEvt, 'touch');\n } else if (!this.nativeDraggable) {\n this._onDragStart(tapEvt, true);\n } else {\n _on(dragEl, 'dragend', this);\n\n _on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted() {\n if (rootEl && dragEl) {\n if (this.nativeDraggable) {\n _on(document, 'dragover', this._handleAutoScroll);\n\n _on(document, 'dragover', _checkAlignment);\n }\n\n var options = this.options; // Apply effect\n\n _toggleClass(dragEl, options.dragClass, false);\n\n _toggleClass(dragEl, options.ghostClass, true);\n\n _css(dragEl, 'transform', '');\n\n Sortable.active = this;\n this._isAligned = true; // Drag start event\n\n _dispatchEvent(this, rootEl, 'start', dragEl, rootEl, rootEl, oldIndex);\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver(bypassLastTouchCheck) {\n if (touchEvt) {\n if (this._lastX === touchEvt.clientX && this._lastY === touchEvt.clientY && !bypassLastTouchCheck) {\n return;\n }\n\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n if (!supportCssPointerEvents) {\n _css(ghostEl, 'display', 'none');\n }\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n var isDragEl = !!_closest(target, null, dragEl, true);\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n parent = target;\n }\n\n if (parent) {\n do {\n if (parent[expando]) {\n var i = touchDragOverListeners.length;\n\n while (i--) {\n touchDragOverListeners[i]({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n }\n\n if (!this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n dragEl.parentNode[expando]._computeIsAligned(touchEvt, isDragEl);\n\n if (!supportCssPointerEvents) {\n _css(ghostEl, 'display', '');\n }\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n dx = touch.clientX - tapEvt.clientX + fallbackOffset.x,\n dy = touch.clientY - tapEvt.clientY + fallbackOffset.y,\n translate3d = evt.touches ? 'translate3d(' + dx + 'px,' + dy + 'px,0)' : 'translate(' + dx + 'px,' + dy + 'px)'; // prevent duplicate event firing\n\n if (this.options.supportPointer && evt.type === 'touchmove') return; // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active) {\n if (fallbackTolerance && min(abs(touch.clientX - this._lastX), abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._dragStarted();\n } // as well as creating the ghost element on the document body\n\n\n this._appendGhost();\n\n this._handleAutoScroll(touch, true);\n\n moved = true;\n touchEvt = touch;\n\n _css(ghostEl, 'webkitTransform', translate3d);\n\n _css(ghostEl, 'mozTransform', translate3d);\n\n _css(ghostEl, 'msTransform', translate3d);\n\n _css(ghostEl, 'transform', translate3d);\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n if (!ghostEl) {\n var rect = dragEl.getBoundingClientRect(),\n css = _css(dragEl),\n options = this.options,\n ghostRect;\n\n ghostEl = dragEl.cloneNode(true);\n\n _toggleClass(ghostEl, options.ghostClass, false);\n\n _toggleClass(ghostEl, options.fallbackClass, true);\n\n _toggleClass(ghostEl, options.dragClass, true);\n\n _css(ghostEl, 'top', rect.top - parseInt(css.marginTop, 10));\n\n _css(ghostEl, 'left', rect.left - parseInt(css.marginLeft, 10));\n\n _css(ghostEl, 'width', rect.width);\n\n _css(ghostEl, 'height', rect.height);\n\n _css(ghostEl, 'opacity', '0.8');\n\n _css(ghostEl, 'position', 'fixed');\n\n _css(ghostEl, 'zIndex', '100000');\n\n _css(ghostEl, 'pointerEvents', 'none');\n\n options.fallbackOnBody && document.body.appendChild(ghostEl) || rootEl.appendChild(ghostEl); // Fixing dimensions.\n\n ghostRect = ghostEl.getBoundingClientRect();\n\n _css(ghostEl, 'width', rect.width * 2 - ghostRect.width);\n\n _css(ghostEl, 'height', rect.height * 2 - ghostRect.height);\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n useFallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n\n _this._offUpEvents();\n\n if (activeGroup.checkPull(_this, _this, dragEl, evt)) {\n cloneEl = _clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n _toggleClass(cloneEl, _this.options.chosenClass, false); // #1143: IFrame support workaround\n\n\n _this._cloneId = _nextTick(function () {\n rootEl.insertBefore(cloneEl, dragEl);\n\n _dispatchEvent(_this, rootEl, 'clone', dragEl);\n });\n }\n\n _toggleClass(dragEl, options.dragClass, true);\n\n if (useFallback) {\n if (useFallback === 'touch') {\n // Fixed #973:\n _on(document, 'touchmove', _preventScroll); // Bind touch events\n\n\n _on(document, 'touchmove', _this._onTouchMove);\n\n _on(document, 'touchend', _this._onDrop);\n\n _on(document, 'touchcancel', _this._onDrop);\n\n if (options.supportPointer) {\n _on(document, 'pointermove', _this._onTouchMove);\n\n _on(document, 'pointerup', _this._onDrop);\n }\n } else {\n // Old brwoser\n _on(document, 'mousemove', _this._onTouchMove);\n\n _on(document, 'mouseup', _this._onDrop);\n }\n\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n\n _toggleClass(dragEl, options.dragClass, false);\n } else {\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n _on(document, 'drop', _this); // #1276 fix:\n\n\n _css(dragEl, 'transform', 'translateZ(0)');\n\n _this._dragStartId = _nextTick(_this._dragStarted);\n }\n\n _on(document, 'selectstart', _this);\n },\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n isMovingBetweenSortable = false,\n canSort = options.sort;\n if (evt.rootEl !== void 0 && evt.rootEl !== this.el) return; // touch fallback\n // no bubbling and not fallback\n\n if (!options.dragoverBubble && !evt.rootEl) {\n this._handleAutoScroll(evt);\n\n dragEl.parentNode[expando]._computeIsAligned(evt);\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n !options.dragoverBubble && evt.stopPropagation();\n }\n\n moved = true;\n target = _closest(evt.target, options.draggable, el, true);\n\n if (dragEl.animated && target === dragEl || target.animated || _silent) {\n return;\n }\n\n if (target !== lastTarget) {\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n lastTarget = null;\n }\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n var direction;\n\n var axis = this._getDirection(evt, target);\n\n dragRect = dragEl.getBoundingClientRect();\n\n if (putSortable !== this && this !== Sortable.active) {\n putSortable = this;\n isMovingBetweenSortable = true;\n } else if (this === Sortable.active) {\n isMovingBetweenSortable = false;\n putSortable = null;\n }\n\n if (revert) {\n this._hideClone();\n\n parentEl = rootEl; // actualization\n\n if (cloneEl || nextEl) {\n rootEl.insertBefore(dragEl, cloneEl || nextEl);\n } else if (!canSort) {\n rootEl.appendChild(dragEl);\n }\n\n return;\n }\n\n if (el.children.length === 0 || el.children[0] === ghostEl || el === evt.target && _ghostIsLast(evt, axis, el)) {\n //assign target only if condition is true\n if (el.children.length !== 0 && el.children[0] !== ghostEl && el === evt.target) {\n target = _lastChild(el);\n }\n\n if (target) {\n if (target.animated) {\n return;\n }\n\n targetRect = target.getBoundingClientRect();\n }\n\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(this);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n if (!dragEl.contains(el)) {\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n this._isAligned = true; // must be for _ghostIsLast to pass\n\n realDragElRect = null;\n }\n\n this._animate(dragRect, dragEl);\n\n target && this._animate(targetRect, target);\n }\n } else if (target && !target.animated && target !== dragEl && target.parentNode[expando] !== void 0 && target !== el) {\n isCircumstantialInvert = isCircumstantialInvert || options.invertSwap || dragEl.parentNode !== el || !this._isAligned;\n direction = _getSwapDirection(evt, target, axis, options.swapThreshold, options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n if (direction === 0) return;\n realDragElRect = null;\n this._isAligned = true;\n\n if (!lastTarget || lastTarget !== target && (!target || !target.animated)) {\n pastFirstInvertThresh = false;\n lastTarget = target;\n }\n\n lastDirection = direction;\n targetRect = target.getBoundingClientRect();\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(this);\n }\n\n if (!dragEl.contains(el)) {\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n }\n }\n\n parentEl = dragEl.parentNode; // actualization\n\n this._animate(dragRect, dragEl);\n\n this._animate(targetRect, target);\n }\n }\n }\n },\n _animate: function _animate(prevRect, target) {\n var ms = this.options.animation;\n\n if (ms) {\n var currentRect = target.getBoundingClientRect();\n\n if (target === dragEl) {\n realDragElRect = currentRect;\n }\n\n if (prevRect.nodeType === 1) {\n prevRect = prevRect.getBoundingClientRect();\n } // Check if actually moving position\n\n\n if (prevRect.left + prevRect.width / 2 === currentRect.left + currentRect.width / 2 && prevRect.top + prevRect.height / 2 === currentRect.top + currentRect.height / 2) return;\n\n _css(target, 'transition', 'none');\n\n _css(target, 'transform', 'translate3d(' + (prevRect.left - currentRect.left) + 'px,' + (prevRect.top - currentRect.top) + 'px,0)');\n\n forRepaintDummy = target.offsetWidth; // repaint\n\n _css(target, 'transition', 'all ' + ms + 'ms');\n\n _css(target, 'transform', 'translate3d(0,0,0)');\n\n clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n _css(target, 'transition', '');\n\n _css(target, 'transform', '');\n\n target.animated = false;\n }, ms);\n }\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n\n _off(document, 'touchmove', _preventScroll);\n\n _off(document, 'touchmove', this._onTouchMove);\n\n _off(document, 'pointermove', this._onTouchMove);\n\n _off(ownerDocument, 'mouseup', this._onDrop);\n\n _off(ownerDocument, 'touchend', this._onDrop);\n\n _off(ownerDocument, 'pointerup', this._onDrop);\n\n _off(ownerDocument, 'touchcancel', this._onDrop);\n\n _off(ownerDocument, 'pointercancel', this._onDrop);\n\n _off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options;\n scrolling = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearInterval(pointerElemChangedInterval);\n\n _clearAutoScrolls();\n\n _cancelThrottle();\n\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this._cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n _off(document, 'mousemove', this._onTouchMove);\n\n if (this.nativeDraggable) {\n _off(document, 'drop', this);\n\n _off(el, 'dragstart', this._onDragStart);\n\n _off(document, 'dragover', this._handleAutoScroll);\n\n _off(document, 'dragover', _checkAlignment);\n }\n\n this._offUpEvents();\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n _off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove class's\n\n _toggleClass(dragEl, this.options.ghostClass, false);\n\n _toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n\n _dispatchEvent(this, rootEl, 'unchoose', dragEl, parentEl, rootEl, oldIndex, null, evt);\n\n if (rootEl !== parentEl) {\n newIndex = _index(dragEl, options.draggable);\n\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent(null, parentEl, 'add', dragEl, parentEl, rootEl, oldIndex, newIndex, evt); // Remove event\n\n\n _dispatchEvent(this, rootEl, 'remove', dragEl, parentEl, rootEl, oldIndex, newIndex, evt); // drag from one list and drop into another\n\n\n _dispatchEvent(null, parentEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex, evt);\n\n _dispatchEvent(this, rootEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex, evt);\n }\n\n putSortable && putSortable.save();\n } else {\n if (dragEl.nextSibling !== nextEl) {\n // Get the index of the dragged element within its parent\n newIndex = _index(dragEl, options.draggable);\n\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent(this, rootEl, 'update', dragEl, parentEl, rootEl, oldIndex, newIndex, evt);\n\n _dispatchEvent(this, rootEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex, evt);\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n }\n\n _dispatchEvent(this, rootEl, 'end', dragEl, parentEl, rootEl, oldIndex, newIndex, evt); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = scrollEl = scrollParentEl = autoScrolls.length = pointerElemChangedInterval = lastPointerElemX = lastPointerElemY = tapEvt = touchEvt = moved = newIndex = oldIndex = lastTarget = lastDirection = forRepaintDummy = realDragElRect = putSortable = activeGroup = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (_closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (_closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest(el, selector) {\n return _closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n options[name] = value;\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n var el = this.el;\n el[expando] = null;\n\n _off(el, 'mousedown', this._onTapStart);\n\n _off(el, 'touchstart', this._onTapStart);\n\n _off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n _off(el, 'dragover', this);\n\n _off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n touchDragOverListeners.splice(touchDragOverListeners.indexOf(this._onDragOver), 1);\n\n this._onDrop();\n\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneEl.cloneHidden) {\n _css(cloneEl, 'display', 'none');\n\n cloneEl.cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneEl.cloneHidden) {\n // show clone at dragEl or original position\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this._animate(dragEl, cloneEl);\n }\n\n _css(cloneEl, 'display', '');\n\n cloneEl.cloneHidden = false;\n }\n }\n };\n\n function _closest(\n /**HTMLElement*/\n el,\n /**String*/\n selector,\n /**HTMLElement*/\n ctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector === '>*' && el.parentNode === ctx || _matches(el, selector) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = _getParentOrHost(el));\n }\n\n return null;\n }\n\n function _getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n }\n\n function _globalDragOver(\n /**Event*/\n evt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n }\n\n function _on(el, event, fn) {\n el.addEventListener(event, fn, captureMode);\n }\n\n function _off(el, event, fn) {\n el.removeEventListener(event, fn, captureMode);\n }\n\n function _toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n }\n\n function _css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style)) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n }\n\n function _find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n }\n\n function _dispatchEvent(sortable, rootEl, name, targetEl, toEl, fromEl, startIndex, newIndex, originalEvt) {\n sortable = sortable || rootEl[expando];\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = startIndex;\n evt.newIndex = newIndex;\n evt.originalEvent = originalEvt;\n rootEl.dispatchEvent(evt);\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n }\n\n function _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvt, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || toEl.getBoundingClientRect();\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvt;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvt);\n }\n\n return retVal;\n }\n\n function _disableDraggable(el) {\n el.draggable = false;\n }\n\n function _unsilent() {\n _silent = false;\n }\n\n function _getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== ghostEl && children[i] !== dragEl && _closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n }\n\n function _lastChild(el) {\n var last = el.lastElementChild;\n\n if (last === ghostEl) {\n last = el.children[el.childElementCount - 2];\n }\n\n return last || null;\n }\n\n function _ghostIsLast(evt, axis, el) {\n var elRect = _lastChild(el).getBoundingClientRect(),\n mouseOnAxis = axis === 'vertical' ? evt.clientY : evt.clientX,\n mouseOnOppAxis = axis === 'vertical' ? evt.clientX : evt.clientY,\n targetS2 = axis === 'vertical' ? elRect.bottom : elRect.right,\n targetS1Opp = axis === 'vertical' ? elRect.left : elRect.top,\n targetS2Opp = axis === 'vertical' ? elRect.right : elRect.bottom;\n\n return mouseOnOppAxis > targetS1Opp && mouseOnOppAxis < targetS2Opp && mouseOnAxis > targetS2;\n }\n\n function _getSwapDirection(evt, target, axis, swapThreshold, invertedSwapThreshold, invertSwap, inside) {\n var targetRect = target.getBoundingClientRect(),\n mouseOnAxis = axis === 'vertical' ? evt.clientY : evt.clientX,\n targetLength = axis === 'vertical' ? targetRect.height : targetRect.width,\n targetS1 = axis === 'vertical' ? targetRect.top : targetRect.left,\n targetS2 = axis === 'vertical' ? targetRect.bottom : targetRect.right,\n dragRect = dragEl.getBoundingClientRect(),\n dragLength = axis === 'vertical' ? dragRect.height : dragRect.width,\n invert = false;\n\n var dragStyle = _css(dragEl);\n\n dragLength += parseInt(dragStyle.marginLeft) + parseInt(dragStyle.marginRight);\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when width causes mouse to move past the end of regular swapThreshold\n if (inside && dragLength < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n var dragS1 = axis === 'vertical' ? dragRect.top : dragRect.left,\n dragS2 = axis === 'vertical' ? dragRect.bottom : dragRect.right; // dragEl shadow\n\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + dragLength // over dragEl shadow\n : mouseOnAxis > targetS2 - dragLength) {\n return lastDirection * -1;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? -1 : 1;\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n }\n /**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\n\n\n function _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n }\n /**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\n function _index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n\n while (el && (el = el.previousElementSibling)) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && (selector === '>*' || _matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n }\n\n function _matches(\n /**HTMLElement*/\n el,\n /**String*/\n selector) {\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n }\n\n var _throttleTimeout;\n\n function _throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n _throttleTimeout = setTimeout(function () {\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n }\n\n function _cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n }\n\n function _extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n }\n\n function _clone(el) {\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n }\n\n function _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n }\n\n function _nextTick(fn) {\n return setTimeout(fn, 0);\n }\n\n function _cancelNextTick(id) {\n return clearTimeout(id);\n }\n\n function _preventScroll(evt) {\n if (Sortable.active && evt.cancelable) {\n evt.preventDefault();\n }\n } // Export utils\n\n\n Sortable.utils = {\n on: _on,\n off: _off,\n css: _css,\n find: _find,\n is: function is(el, selector) {\n return !!_closest(el, selector, el, false);\n },\n extend: _extend,\n throttle: _throttle,\n closest: _closest,\n toggleClass: _toggleClass,\n clone: _clone,\n index: _index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: _getChild\n };\n /**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n Sortable.create = function (el, options) {\n return new Sortable(el, options);\n }; // Export\n\n\n Sortable.version = '1.8.0-rc1';\n return Sortable;\n});","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","var map = {\n\t\"./card_list_toggle_controller.js\": 7,\n\t\"./conditional_questions_controller.js\": 8,\n\t\"./datepicker_controller.js\": 9,\n\t\"./download_controller.js\": 10,\n\t\"./scroll_controller.js\": 11,\n\t\"./select2_controller.js\": 12,\n\t\"./sortable_controller.js\": 13,\n\t\"./toggle_visibility_controller.js\": 14\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6;","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n connect() {\n $(this.element).children('.list-display').show()\n $(this.element).children('.grid-display').hide()\n }\n\n toggle() {\n var $cardList = $(this.element).siblings('.iris-card-list')\n if ($cardList.hasClass('column')) {\n $cardList.removeClass('column')\n $(this.element).children('.list-display').show()\n $(this.element).children('.grid-display').hide()\n } else {\n $cardList.addClass('column')\n $(this.element).children('.list-display').hide()\n $(this.element).children('.grid-display').show()\n }\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"conditionalQuestionsWrapper\", \"mainQuestions\", \"question\" ]\n connect() {\n this.questionTargets.forEach(item => {\n item.style.display = \"none\"\n })\n this.conditionalQuestionsWrapperTarget.style.display = \"none\"\n this.attachChangeListeners(\"input\", this.toggleCheckboxConditionals)\n this.attachChangeListeners(\"select\", this.toggleSelectConditionals)\n this.determineWrapperDisplay()\n }\n\n attachChangeListeners(selectors, listener) {\n let list = this.mainQuestionsTarget.querySelectorAll(selectors)\n list.forEach(item => {\n listener.call(this, list)\n item.addEventListener(\"change\", event => {\n listener.call(this, list)\n this.determineWrapperDisplay()\n })\n })\n }\n\n setShowing(element, showing) {\n if (showing) {\n element.style.display = \"block\"\n element.querySelector(\".destroy-input\").value = \"0\"\n } else {\n element.style.display = \"none\"\n element.querySelector(\".destroy-input\").value = \"1\"\n }\n }\n\n toggleCheckboxConditionals(targets) {\n let targetsList = Array.from(targets)\n let selectedTargets = targetsList.filter(target=>{return target.checked})\n let choiceIds = selectedTargets.map((element) => parseInt(element.dataset.choiceId))\n this.questionTargets.forEach(item => {\n let intersect = JSON.parse(item.dataset.parentChoiceIds).filter(x => choiceIds.includes(x))\n this.setShowing(item, intersect.length !== 0)\n })\n }\n\n toggleSelectConditionals(targets) {\n let targetsList = Array.from(targets)\n let choiceIds = targetsList.map((element) => parseInt(element.selectedOptions[0].dataset.choiceId))\n this.questionTargets.forEach(item => {\n let intersect = JSON.parse(item.dataset.parentChoiceIds).filter(x => choiceIds.includes(x))\n this.setShowing(item, intersect.length !== 0)\n })\n }\n\n determineWrapperDisplay() {\n this.conditionalQuestionsWrapperTarget.style.display = this.questionTargets.some(x => getComputedStyle(x).display === \"block\") ? \"block\" : \"none\"\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static hiddenFieldFormat = 'yy-mm-dd'\n static userFacingFieldFormat = 'mm-dd-yy'\n\n connect() {\n let $this = $(this.element)\n // Set up a hidden field to actually submit our data\n let $hiddenField = $('')\n $hiddenField.attr('name', $this.attr('name'))\n if ($this.attr('value')) {\n let currentDate = $.datepicker.parseDate(this.constructor.hiddenFieldFormat, $this.attr('value'))\n $hiddenField.attr('value', $this.attr('value'))\n $this.attr('value', $.datepicker.formatDate(this.constructor.userFacingFieldFormat, currentDate))\n }\n\n $this.attr('name', '') // Reset the name attribute on the visible field so we don't get a double submission\n $hiddenField.insertBefore($this)\n\n $this.datepicker({\n dateFormat: this.constructor.userFacingFieldFormat,\n altField: $hiddenField,\n altFormat: this.constructor.hiddenFieldFormat\n })\n }\n}\n","import { Controller } from \"stimulus\"\nimport Swal from 'sweetalert2'\n\nexport default class extends Controller {\n connect() {\n $(this.element).on('ajax:before', this.beforeAjax.bind(this))\n $(this.element).on('ajax:success', this.handleAjax.bind(this))\n $(this.element).on('ajax:error', this.showError.bind(this))\n }\n\n disconnect() {\n $(this.element).off('ajax:before', this.beforeAjax)\n $(this.element).off('ajax:success', this.handleAjax)\n $(this.element).off('ajax:error', this.showError)\n }\n\n beforeAjax(e) {\n let isAdmin = this.data.get('isAdminValue') === \"true\"\n let text;\n if(isAdmin){\n text = 'Your report is generating, and you will receive an email notification when it is complete. You may now exit this screen.'\n } else {\n text = 'Generating your report...'\n } \n Swal.fire({\n title: 'Processing!',\n text: text,\n type: 'info',\n showConfirmButton: isAdmin\n })\n Swal.showLoading()\n }\n\n handleAjax(e, data, status, xhr) {\n const subscription = Cable.subscriptions.create({ channel: \"DownloadsChannel\", download_id: data.download_id }, {\n received: (data) => {\n Swal.hideLoading()\n if (data.error) {\n this.showError()\n } else {\n Swal.fire({\n title: 'Finished!',\n text: 'Your download is ready',\n type: 'success',\n showConfirmButton: true,\n confirmButtonText: \"Download\"\n }).then(() => {\n if (typeof Trestle != 'undefined') {\n Trestle.visit(data.url)\n } else {\n Turbolinks.visit(data.url)\n }\n })\n }\n\n subscription.unsubscribe()\n }\n })\n }\n\n showError() {\n Swal.hideLoading()\n Swal.update({\n title: \"Error!\",\n text: \"There was an issue generating your download\",\n type: \"error\",\n showConfirmButton: true\n })\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n scrollTop() {\n window.scrollTo(0, 0);\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n connect() {\n let $this = $(this.element)\n let minimumInputLength = parseInt($this.data('min-input')) || 0\n let isTagging = $this.data('select2-tagging') != undefined\n let allowsClear = $this.data('allows-clear') != undefined\n let ensureLastUser = $this.data('organization-ids-with-only-one-user-left') != undefined\n let width = $this.data('width') || 'resolve'\n $this.select2({\n placeholder: $this.data('placeholder'),\n allowClear: allowsClear,\n minimumInputLength: minimumInputLength,\n tags: isTagging,\n width: width,\n })\n\n if (ensureLastUser){\n $this.on('select2:unselecting', function (e) {\n if($this.data('organization-ids-with-only-one-user-left').includes(parseInt(e.params.args.data.id))) {\n e.preventDefault();\n dataConfirmModal.confirm({\n text: $this.data('last-organization-message'),\n commit: \"Deactivate User\",\n onConfirm: function() {\n $(e.params.args.data.element).prop(\"selected\", false)\n $(e.currentTarget).trigger(\"change.select2\")\n },\n })\n }\n });\n }\n }\n\n disconnect() {\n $(this.element).select2('destroy')\n }\n}","import { Controller } from \"stimulus\"\nimport Sortable from \"sortablejs/Sortable\"\n\nexport default class extends Controller {\n connect() {\n this.sortable = Sortable.create(this.element, {\n handle: this.element.getAttribute('data-sortable-handle'),\n animation: 150\n })\n }\n\n disconnect() {\n this.sortable.destroy()\n this.sortable = null\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"trigger\", \"show\"]\n\n toggle() {\n if (this.triggerTarget.value === this.element.dataset.toggleVisibilityOtherValue) {\n this.showTarget.classList.add(\"d-block\")\n this.showTarget.classList.remove(\"d-none\")\n } else {\n this.showTarget.classList.remove(\"d-block\")\n this.showTarget.classList.add(\"d-none\")\n }\n }\n}","function _wrapNativeSuper2(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper2 = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction2(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct2(Class, arguments, _getPrototypeOf2(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf2(Wrapper, Class); }; return _wrapNativeSuper2(Class); }\n\nfunction _construct2(Parent, args, Class) { if (_isNativeReflectConstruct2()) { _construct2 = Reflect.construct; } else { _construct2 = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf2(instance, Class.prototype); return instance; }; } return _construct2.apply(null, arguments); }\n\nfunction _isNativeFunction2(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _toArray2(arr) { return _arrayWithHoles2(arr) || _iterableToArray2(arr) || _unsupportedIterableToArray2(arr) || _nonIterableRest2(); }\n\nfunction _createForOfIteratorHelper2(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray2(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e4) { throw _e4; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e5) { didErr = true; err = _e5; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _get2() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get2 = Reflect.get; } else { _get2 = function _get(target, property, receiver) { var base = _superPropBase2(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get2.apply(this, arguments); }\n\nfunction _superPropBase2(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf2(object); if (object === null) break; } return object; }\n\nfunction _slicedToArray2(arr, i) { return _arrayWithHoles2(arr) || _iterableToArrayLimit2(arr, i) || _unsupportedIterableToArray2(arr, i) || _nonIterableRest2(); }\n\nfunction _nonIterableRest2() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit2(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles2(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray2(arr) { return _arrayWithoutHoles2(arr) || _iterableToArray2(arr) || _unsupportedIterableToArray2(arr) || _nonIterableSpread2(); }\n\nfunction _nonIterableSpread2() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray2(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray2(o, minLen); }\n\nfunction _iterableToArray2(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles2(arr) { if (Array.isArray(arr)) return _arrayLikeToArray2(arr); }\n\nfunction _arrayLikeToArray2(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _inherits2(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } Object.defineProperty(subClass, \"prototype\", { value: Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }), writable: false }); if (superClass) _setPrototypeOf2(subClass, superClass); }\n\nfunction _setPrototypeOf2(o, p) { _setPrototypeOf2 = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf2(o, p); }\n\nfunction _createSuper2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct2(); return function _createSuperInternal() { var Super = _getPrototypeOf2(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf2(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn2(this, result); }; }\n\nfunction _possibleConstructorReturn2(self, call) { if (call && (_typeof2(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized2(self); }\n\nfunction _assertThisInitialized2(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf2(o) { _getPrototypeOf2 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf2(o); }\n\nfunction _classCallCheck2(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction __defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass2(Constructor, protoProps, staticProps) { if (protoProps) __defineProperties(Constructor.prototype, protoProps); if (staticProps) __defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _typeof2(obj) { \"@babel/helpers - typeof\"; return _typeof2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof2(obj); }\n\n/*\nTrix 2.0.0-alpha.1\nCopyright © 2022 Basecamp, LLC\n */\nvar name = \"trix\";\nvar version = \"2.0.0-alpha.1\";\nvar description = \"A rich text editor for everyday writing\";\nvar main = \"dist/trix.umd.js\";\nvar module = \"dist/trix.js\";\nvar style = \"dist/trix.css\";\nvar files = [\"dist/*.css\", \"dist/*.js\"];\nvar repository = {\n type: \"git\",\n url: \"git+https://github.com/basecamp/trix.git\"\n};\nvar keywords = [\"rich text\", \"wysiwyg\", \"editor\"];\nvar author = \"Basecamp, LLC\";\nvar license = \"MIT\";\nvar bugs = {\n url: \"https://github.com/basecamp/trix/issues\"\n};\nvar homepage = \"https://trix-editor.org/\";\nvar devDependencies = {\n \"@babel/core\": \"^7.16.0\",\n \"@babel/preset-env\": \"^7.16.4\",\n \"@rollup/plugin-babel\": \"^5.3.0\",\n \"@rollup/plugin-json\": \"^4.1.0\",\n \"babel-eslint\": \"^10.1.0\",\n eslint: \"^7.32.0\",\n esm: \"^3.2.25\",\n karma: \"5.0.2\",\n \"karma-chrome-launcher\": \"3.1.0\",\n \"karma-qunit\": \"^4.1.2\",\n \"karma-sauce-launcher\": \"^4.3.6\",\n \"node-sass\": \"^7.0.1\",\n qunit: \"2.9.3\",\n rangy: \"^1.3.0\",\n rollup: \"^2.56.3\",\n \"rollup-plugin-commonjs\": \"^10.1.0\",\n \"rollup-plugin-includepaths\": \"^0.2.4\",\n \"rollup-plugin-node-resolve\": \"^5.2.0\",\n \"rollup-plugin-terser\": \"^7.0.2\",\n svgo: \"^2.8.0\"\n};\nvar scripts = {\n \"build-css\": \"node-sass --functions=./assets/trix/stylesheets/functions assets/trix.scss dist/trix.css\",\n \"build-js\": \"rollup -c\",\n \"build-assets\": \"cp -f assets/*.html dist/\",\n build: \"yarn run build-js && yarn run build-css && yarn run build-assets\",\n watch: \"rollup -c -w\",\n lint: \"eslint .\",\n pretest: \"yarn run lint && yarn run build\",\n test: \"karma start\",\n postversion: \"git push && git push --tags\",\n release: \"yarn test && npm adduser && yarn version && npm publish\"\n};\nvar dependencies = {};\nvar _package = {\n name: name,\n version: version,\n description: description,\n main: main,\n module: module,\n style: style,\n files: files,\n repository: repository,\n keywords: keywords,\n author: author,\n license: license,\n bugs: bugs,\n homepage: homepage,\n devDependencies: devDependencies,\n scripts: scripts,\n dependencies: dependencies\n};\nvar attachmentSelector = \"[data-trix-attachment]\";\nvar attachments = {\n preview: {\n presentation: \"gallery\",\n caption: {\n name: true,\n size: true\n }\n },\n file: {\n caption: {\n size: true\n }\n }\n};\nvar attributes = {\n \"default\": {\n tagName: \"div\",\n parse: false\n },\n quote: {\n tagName: \"blockquote\",\n nestable: true\n },\n heading1: {\n tagName: \"h1\",\n terminal: true,\n breakOnReturn: true,\n group: false\n },\n code: {\n tagName: \"pre\",\n terminal: true,\n text: {\n plaintext: true\n }\n },\n bulletList: {\n tagName: \"ul\",\n parse: false\n },\n bullet: {\n tagName: \"li\",\n listAttribute: \"bulletList\",\n group: false,\n nestable: true,\n test: function test(element) {\n return tagName$1(element.parentNode) === attributes[this.listAttribute].tagName;\n }\n },\n numberList: {\n tagName: \"ol\",\n parse: false\n },\n number: {\n tagName: \"li\",\n listAttribute: \"numberList\",\n group: false,\n nestable: true,\n test: function test(element) {\n return tagName$1(element.parentNode) === attributes[this.listAttribute].tagName;\n }\n },\n attachmentGallery: {\n tagName: \"div\",\n exclusive: true,\n terminal: true,\n parse: false,\n group: false\n }\n};\n\nvar tagName$1 = function tagName$1(element) {\n var _element$tagName;\n\n return element === null || element === void 0 ? void 0 : (_element$tagName = element.tagName) === null || _element$tagName === void 0 ? void 0 : _element$tagName.toLowerCase();\n};\n\nvar browser$1 = {\n // Android emits composition events when moving the cursor through existing text\n // Introduced in Chrome 65: https://bugs.chromium.org/p/chromium/issues/detail?id=764439#c9\n composesExistingText: /Android.*Chrome/.test(navigator.userAgent),\n // IE 11 activates resizing handles on editable elements that have \"layout\"\n forcesObjectResizing: /Trident.*rv:11/.test(navigator.userAgent),\n // https://www.w3.org/TR/input-events-1/ + https://www.w3.org/TR/input-events-2/\n supportsInputEvents: function () {\n if (typeof InputEvent === \"undefined\") {\n return false;\n }\n\n for (var _i2 = 0, _arr2 = [\"data\", \"getTargetRanges\", \"inputType\"]; _i2 < _arr2.length; _i2++) {\n var property = _arr2[_i2];\n\n if (!(property in InputEvent.prototype)) {\n return false;\n }\n }\n\n return true;\n }()\n};\nvar css$3 = {\n attachment: \"attachment\",\n attachmentCaption: \"attachment__caption\",\n attachmentCaptionEditor: \"attachment__caption-editor\",\n attachmentMetadata: \"attachment__metadata\",\n attachmentMetadataContainer: \"attachment__metadata-container\",\n attachmentName: \"attachment__name\",\n attachmentProgress: \"attachment__progress\",\n attachmentSize: \"attachment__size\",\n attachmentToolbar: \"attachment__toolbar\",\n attachmentGallery: \"attachment-gallery\"\n};\nvar lang$1 = {\n attachFiles: \"Attach Files\",\n bold: \"Bold\",\n bullets: \"Bullets\",\n \"byte\": \"Byte\",\n bytes: \"Bytes\",\n captionPlaceholder: \"Add a caption…\",\n code: \"Code\",\n heading1: \"Heading\",\n indent: \"Increase Level\",\n italic: \"Italic\",\n link: \"Link\",\n numbers: \"Numbers\",\n outdent: \"Decrease Level\",\n quote: \"Quote\",\n redo: \"Redo\",\n remove: \"Remove\",\n strike: \"Strikethrough\",\n undo: \"Undo\",\n unlink: \"Unlink\",\n url: \"URL\",\n urlPlaceholder: \"Enter a URL…\",\n GB: \"GB\",\n KB: \"KB\",\n MB: \"MB\",\n PB: \"PB\",\n TB: \"TB\"\n};\n/* eslint-disable\n no-case-declarations,\n*/\n\nvar sizes = [lang$1.bytes, lang$1.KB, lang$1.MB, lang$1.GB, lang$1.TB, lang$1.PB];\nvar fileSize = {\n prefix: \"IEC\",\n precision: 2,\n formatter: function formatter(number) {\n switch (number) {\n case 0:\n return \"0 \".concat(lang$1.bytes);\n\n case 1:\n return \"1 \".concat(lang$1[\"byte\"]);\n\n default:\n var base;\n\n if (this.prefix === \"SI\") {\n base = 1000;\n } else if (this.prefix === \"IEC\") {\n base = 1024;\n }\n\n var exp = Math.floor(Math.log(number) / Math.log(base));\n var humanSize = number / Math.pow(base, exp);\n var string = humanSize.toFixed(this.precision);\n var withoutInsignificantZeros = string.replace(/0*$/, \"\").replace(/\\.$/, \"\");\n return \"\".concat(withoutInsignificantZeros, \" \").concat(sizes[exp]);\n }\n }\n};\nvar ZERO_WIDTH_SPACE = \"\\uFEFF\";\nvar NON_BREAKING_SPACE = \"\\xA0\";\nvar OBJECT_REPLACEMENT_CHARACTER = \"\\uFFFC\";\n\nvar extend = function extend(properties) {\n for (var key in properties) {\n var value = properties[key];\n this[key] = value;\n }\n\n return this;\n};\n\nvar html = document.documentElement;\nvar match = html.matches;\n\nvar handleEvent = function handleEvent(eventName) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n onElement = _ref2.onElement,\n matchingSelector = _ref2.matchingSelector,\n withCallback = _ref2.withCallback,\n inPhase = _ref2.inPhase,\n preventDefault = _ref2.preventDefault,\n times = _ref2.times;\n\n var element = onElement ? onElement : html;\n var selector = matchingSelector;\n var useCapture = inPhase === \"capturing\";\n\n var handler = function handler(event) {\n if (times != null && --times === 0) {\n handler.destroy();\n }\n\n var target = findClosestElementFromNode(event.target, {\n matchingSelector: selector\n });\n\n if (target != null) {\n withCallback === null || withCallback === void 0 ? void 0 : withCallback.call(target, event, target);\n\n if (preventDefault) {\n event.preventDefault();\n }\n }\n };\n\n handler.destroy = function () {\n return element.removeEventListener(eventName, handler, useCapture);\n };\n\n element.addEventListener(eventName, handler, useCapture);\n return handler;\n};\n\nvar handleEventOnce = function handleEventOnce(eventName) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options.times = 1;\n return handleEvent(eventName, options);\n};\n\nvar triggerEvent = function triggerEvent(eventName) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n onElement = _ref3.onElement,\n bubbles = _ref3.bubbles,\n cancelable = _ref3.cancelable,\n attributes = _ref3.attributes;\n\n var element = onElement != null ? onElement : html;\n bubbles = bubbles !== false;\n cancelable = cancelable !== false;\n var event = document.createEvent(\"Events\");\n event.initEvent(eventName, bubbles, cancelable);\n\n if (attributes != null) {\n extend.call(event, attributes);\n }\n\n return element.dispatchEvent(event);\n};\n\nvar elementMatchesSelector = function elementMatchesSelector(element, selector) {\n if ((element === null || element === void 0 ? void 0 : element.nodeType) === 1) {\n return match.call(element, selector);\n }\n};\n\nvar findClosestElementFromNode = function findClosestElementFromNode(node) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n matchingSelector = _ref4.matchingSelector,\n untilNode = _ref4.untilNode;\n\n while (node && node.nodeType !== Node.ELEMENT_NODE) {\n node = node.parentNode;\n }\n\n if (node == null) {\n return;\n }\n\n if (matchingSelector != null) {\n if (node.closest && untilNode == null) {\n return node.closest(matchingSelector);\n } else {\n while (node && node !== untilNode) {\n if (elementMatchesSelector(node, matchingSelector)) {\n return node;\n }\n\n node = node.parentNode;\n }\n }\n } else {\n return node;\n }\n};\n\nvar findInnerElement = function findInnerElement(element) {\n while ((_element = element) !== null && _element !== void 0 && _element.firstElementChild) {\n var _element;\n\n element = element.firstElementChild;\n }\n\n return element;\n};\n\nvar innerElementIsActive = function innerElementIsActive(element) {\n return document.activeElement !== element && elementContainsNode(element, document.activeElement);\n};\n\nvar elementContainsNode = function elementContainsNode(element, node) {\n if (!element || !node) {\n return;\n }\n\n while (node) {\n if (node === element) {\n return true;\n }\n\n node = node.parentNode;\n }\n};\n\nvar findNodeFromContainerAndOffset = function findNodeFromContainerAndOffset(container, offset) {\n if (!container) {\n return;\n }\n\n if (container.nodeType === Node.TEXT_NODE) {\n return container;\n } else if (offset === 0) {\n return container.firstChild != null ? container.firstChild : container;\n } else {\n return container.childNodes.item(offset - 1);\n }\n};\n\nvar findElementFromContainerAndOffset = function findElementFromContainerAndOffset(container, offset) {\n var node = findNodeFromContainerAndOffset(container, offset);\n return findClosestElementFromNode(node);\n};\n\nvar findChildIndexOfNode = function findChildIndexOfNode(node) {\n var _node;\n\n if (!((_node = node) !== null && _node !== void 0 && _node.parentNode)) {\n return;\n }\n\n var childIndex = 0;\n node = node.previousSibling;\n\n while (node) {\n childIndex++;\n node = node.previousSibling;\n }\n\n return childIndex;\n};\n\nvar removeNode = function removeNode(node) {\n var _node$parentNode;\n\n return node === null || node === void 0 ? void 0 : (_node$parentNode = node.parentNode) === null || _node$parentNode === void 0 ? void 0 : _node$parentNode.removeChild(node);\n};\n\nvar walkTree = function walkTree(tree) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n onlyNodesOfType = _ref5.onlyNodesOfType,\n usingFilter = _ref5.usingFilter,\n expandEntityReferences = _ref5.expandEntityReferences;\n\n var whatToShow = function () {\n switch (onlyNodesOfType) {\n case \"element\":\n return NodeFilter.SHOW_ELEMENT;\n\n case \"text\":\n return NodeFilter.SHOW_TEXT;\n\n case \"comment\":\n return NodeFilter.SHOW_COMMENT;\n\n default:\n return NodeFilter.SHOW_ALL;\n }\n }();\n\n return document.createTreeWalker(tree, whatToShow, usingFilter != null ? usingFilter : null, expandEntityReferences === true);\n};\n\nvar tagName = function tagName(element) {\n var _element$tagName;\n\n return element === null || element === void 0 ? void 0 : (_element$tagName = element.tagName) === null || _element$tagName === void 0 ? void 0 : _element$tagName.toLowerCase();\n};\n\nvar makeElement = function makeElement(tag) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var key, value;\n\n if (_typeof2(tag) === \"object\") {\n options = tag;\n tag = options.tagName;\n } else {\n options = {\n attributes: options\n };\n }\n\n var element = document.createElement(tag);\n\n if (options.editable != null) {\n if (options.attributes == null) {\n options.attributes = {};\n }\n\n options.attributes.contenteditable = options.editable;\n }\n\n if (options.attributes) {\n for (key in options.attributes) {\n value = options.attributes[key];\n element.setAttribute(key, value);\n }\n }\n\n if (options.style) {\n for (key in options.style) {\n value = options.style[key];\n element.style[key] = value;\n }\n }\n\n if (options.data) {\n for (key in options.data) {\n value = options.data[key];\n element.dataset[key] = value;\n }\n }\n\n if (options.className) {\n options.className.split(\" \").forEach(function (className) {\n element.classList.add(className);\n });\n }\n\n if (options.textContent) {\n element.textContent = options.textContent;\n }\n\n if (options.childNodes) {\n [].concat(options.childNodes).forEach(function (childNode) {\n element.appendChild(childNode);\n });\n }\n\n return element;\n};\n\nvar blockTagNames = undefined;\n\nvar getBlockTagNames = function getBlockTagNames() {\n if (blockTagNames != null) {\n return blockTagNames;\n }\n\n blockTagNames = [];\n\n for (var key in attributes) {\n var attributes$1 = attributes[key];\n\n if (attributes$1.tagName) {\n blockTagNames.push(attributes$1.tagName);\n }\n }\n\n return blockTagNames;\n};\n\nvar nodeIsBlockContainer = function nodeIsBlockContainer(node) {\n return nodeIsBlockStartComment(node === null || node === void 0 ? void 0 : node.firstChild);\n};\n\nvar nodeProbablyIsBlockContainer = function nodeProbablyIsBlockContainer(node) {\n return getBlockTagNames().includes(tagName(node)) && !getBlockTagNames().includes(tagName(node.firstChild));\n};\n\nvar nodeIsBlockStart = function nodeIsBlockStart(node) {\n var _ref6 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n strict: true\n },\n strict = _ref6.strict;\n\n if (strict) {\n return nodeIsBlockStartComment(node);\n } else {\n return nodeIsBlockStartComment(node) || !nodeIsBlockStartComment(node.firstChild) && nodeProbablyIsBlockContainer(node);\n }\n};\n\nvar nodeIsBlockStartComment = function nodeIsBlockStartComment(node) {\n return nodeIsCommentNode(node) && (node === null || node === void 0 ? void 0 : node.data) === \"block\";\n};\n\nvar nodeIsCommentNode = function nodeIsCommentNode(node) {\n return (node === null || node === void 0 ? void 0 : node.nodeType) === Node.COMMENT_NODE;\n};\n\nvar nodeIsCursorTarget = function nodeIsCursorTarget(node) {\n var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n name = _ref7.name;\n\n if (!node) {\n return;\n }\n\n if (nodeIsTextNode(node)) {\n if (node.data === ZERO_WIDTH_SPACE) {\n if (name) {\n return node.parentNode.dataset.trixCursorTarget === name;\n } else {\n return true;\n }\n }\n } else {\n return nodeIsCursorTarget(node.firstChild);\n }\n};\n\nvar nodeIsAttachmentElement = function nodeIsAttachmentElement(node) {\n return elementMatchesSelector(node, attachmentSelector);\n};\n\nvar nodeIsEmptyTextNode = function nodeIsEmptyTextNode(node) {\n return nodeIsTextNode(node) && (node === null || node === void 0 ? void 0 : node.data) === \"\";\n};\n\nvar nodeIsTextNode = function nodeIsTextNode(node) {\n return (node === null || node === void 0 ? void 0 : node.nodeType) === Node.TEXT_NODE;\n};\n\nvar input = {\n level2Enabled: true,\n getLevel: function getLevel() {\n if (this.level2Enabled && browser$1.supportsInputEvents) {\n return 2;\n } else {\n return 0;\n }\n },\n pickFiles: function pickFiles(callback) {\n var input = makeElement(\"input\", {\n type: \"file\",\n multiple: true,\n hidden: true,\n id: this.fileInputId\n });\n input.addEventListener(\"change\", function () {\n callback(input.files);\n removeNode(input);\n });\n removeNode(document.getElementById(this.fileInputId));\n document.body.appendChild(input);\n input.click();\n }\n};\nvar keyNames$2 = {\n 8: \"backspace\",\n 9: \"tab\",\n 13: \"return\",\n 27: \"escape\",\n 37: \"left\",\n 39: \"right\",\n 46: \"delete\",\n 68: \"d\",\n 72: \"h\",\n 79: \"o\"\n};\nvar textAttributes = {\n bold: {\n tagName: \"strong\",\n inheritable: true,\n parser: function parser(element) {\n var style = window.getComputedStyle(element);\n return style.fontWeight === \"bold\" || style.fontWeight >= 600;\n }\n },\n italic: {\n tagName: \"em\",\n inheritable: true,\n parser: function parser(element) {\n var style = window.getComputedStyle(element);\n return style.fontStyle === \"italic\";\n }\n },\n href: {\n groupTagName: \"a\",\n parser: function parser(element) {\n var matchingSelector = \"a:not(\".concat(attachmentSelector, \")\");\n var link = element.closest(matchingSelector);\n\n if (link) {\n return link.getAttribute(\"href\");\n }\n }\n },\n strike: {\n tagName: \"del\",\n inheritable: true\n },\n frozen: {\n style: {\n backgroundColor: \"highlight\"\n }\n }\n};\nvar toolbar = {\n getDefaultHTML: function getDefaultHTML() {\n return \"
\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n
\");\n }\n};\nvar undoInterval = 5000;\nvar config = {\n attachments: attachments,\n blockAttributes: attributes,\n browser: browser$1,\n css: css$3,\n fileSize: fileSize,\n input: input,\n keyNames: keyNames$2,\n lang: lang$1,\n textAttributes: textAttributes,\n toolbar: toolbar,\n undoInterval: undoInterval\n};\n\nfunction createMetadataMethodsForProperty(metadataMap, kind, property, decoratorFinishedRef) {\n return {\n getMetadata: function getMetadata(key) {\n assertNotFinished(decoratorFinishedRef, \"getMetadata\"), assertMetadataKey(key);\n var metadataForKey = metadataMap[key];\n if (void 0 !== metadataForKey) if (1 === kind) {\n var pub = metadataForKey[\"public\"];\n if (void 0 !== pub) return pub[property];\n } else if (2 === kind) {\n var priv = metadataForKey[\"private\"];\n if (void 0 !== priv) return priv.get(property);\n } else if (Object.hasOwnProperty.call(metadataForKey, \"constructor\")) return metadataForKey.constructor;\n },\n setMetadata: function setMetadata(key, value) {\n assertNotFinished(decoratorFinishedRef, \"setMetadata\"), assertMetadataKey(key);\n var metadataForKey = metadataMap[key];\n\n if (void 0 === metadataForKey && (metadataForKey = metadataMap[key] = {}), 1 === kind) {\n var pub = metadataForKey[\"public\"];\n void 0 === pub && (pub = metadataForKey[\"public\"] = {}), pub[property] = value;\n } else if (2 === kind) {\n var priv = metadataForKey.priv;\n void 0 === priv && (priv = metadataForKey[\"private\"] = new Map()), priv.set(property, value);\n } else metadataForKey.constructor = value;\n }\n };\n}\n\nfunction convertMetadataMapToFinal(obj, metadataMap) {\n var parentMetadataMap = obj[Symbol.metadata || Symbol[\"for\"](\"Symbol.metadata\")],\n metadataKeys = Object.getOwnPropertySymbols(metadataMap);\n\n if (0 !== metadataKeys.length) {\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i],\n metaForKey = metadataMap[key],\n parentMetaForKey = parentMetadataMap ? parentMetadataMap[key] : null,\n pub = metaForKey[\"public\"],\n parentPub = parentMetaForKey ? parentMetaForKey[\"public\"] : null;\n pub && parentPub && Object.setPrototypeOf(pub, parentPub);\n var priv = metaForKey[\"private\"];\n\n if (priv) {\n var privArr = Array.from(priv.values()),\n parentPriv = parentMetaForKey ? parentMetaForKey[\"private\"] : null;\n parentPriv && (privArr = privArr.concat(parentPriv)), metaForKey[\"private\"] = privArr;\n }\n\n parentMetaForKey && Object.setPrototypeOf(metaForKey, parentMetaForKey);\n }\n\n parentMetadataMap && Object.setPrototypeOf(metadataMap, parentMetadataMap), obj[Symbol.metadata || Symbol[\"for\"](\"Symbol.metadata\")] = metadataMap;\n }\n}\n\nfunction createAddInitializerMethod(initializers, decoratorFinishedRef) {\n return function (initializer) {\n assertNotFinished(decoratorFinishedRef, \"addInitializer\"), assertCallable(initializer, \"An initializer\"), initializers.push(initializer);\n };\n}\n\nfunction memberDec(dec, name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value) {\n var kindStr;\n\n switch (kind) {\n case 1:\n kindStr = \"accessor\";\n break;\n\n case 2:\n kindStr = \"method\";\n break;\n\n case 3:\n kindStr = \"getter\";\n break;\n\n case 4:\n kindStr = \"setter\";\n break;\n\n default:\n kindStr = \"field\";\n }\n\n var metadataKind,\n metadataName,\n ctx = {\n kind: kindStr,\n name: isPrivate ? \"#\" + name : name,\n isStatic: isStatic,\n isPrivate: isPrivate\n },\n decoratorFinishedRef = {\n v: !1\n };\n\n if (0 !== kind && (ctx.addInitializer = createAddInitializerMethod(initializers, decoratorFinishedRef)), isPrivate) {\n metadataKind = 2, metadataName = Symbol(name);\n var access = {};\n 0 === kind ? (access.get = desc.get, access.set = desc.set) : 2 === kind ? access.get = function () {\n return desc.value;\n } : (1 !== kind && 3 !== kind || (access.get = function () {\n return desc.get.call(this);\n }), 1 !== kind && 4 !== kind || (access.set = function (v) {\n desc.set.call(this, v);\n })), ctx.access = access;\n } else metadataKind = 1, metadataName = name;\n\n try {\n return dec(value, Object.assign(ctx, createMetadataMethodsForProperty(metadataMap, metadataKind, metadataName, decoratorFinishedRef)));\n } finally {\n decoratorFinishedRef.v = !0;\n }\n}\n\nfunction assertNotFinished(decoratorFinishedRef, fnName) {\n if (decoratorFinishedRef.v) throw new Error(\"attempted to call \" + fnName + \" after decoration was finished\");\n}\n\nfunction assertMetadataKey(key) {\n if (\"symbol\" != _typeof2(key)) throw new TypeError(\"Metadata keys must be symbols, received: \" + key);\n}\n\nfunction assertCallable(fn, hint) {\n if (\"function\" != typeof fn) throw new TypeError(hint + \" must be a function\");\n}\n\nfunction assertValidReturnValue(kind, value) {\n var type = _typeof2(value);\n\n if (1 === kind) {\n if (\"object\" !== type || null === value) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");\n void 0 !== value.get && assertCallable(value.get, \"accessor.get\"), void 0 !== value.set && assertCallable(value.set, \"accessor.set\"), void 0 !== value.init && assertCallable(value.init, \"accessor.init\"), void 0 !== value.initializer && assertCallable(value.initializer, \"accessor.initializer\");\n } else if (\"function\" !== type) {\n var hint;\n throw hint = 0 === kind ? \"field\" : 10 === kind ? \"class\" : \"method\", new TypeError(hint + \" decorators must return a function or void 0\");\n }\n}\n\nfunction getInit(desc) {\n var initializer;\n return null == (initializer = desc.init) && (initializer = desc.initializer) && \"undefined\" != typeof console && console.warn(\".initializer has been renamed to .init as of March 2022\"), initializer;\n}\n\nfunction applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, metadataMap, initializers) {\n var desc,\n initializer,\n value,\n newValue,\n get,\n set,\n decs = decInfo[0];\n if (isPrivate ? desc = 0 === kind || 1 === kind ? {\n get: decInfo[3],\n set: decInfo[4]\n } : 3 === kind ? {\n get: decInfo[3]\n } : 4 === kind ? {\n set: decInfo[3]\n } : {\n value: decInfo[3]\n } : 0 !== kind && (desc = Object.getOwnPropertyDescriptor(base, name)), 1 === kind ? value = {\n get: desc.get,\n set: desc.set\n } : 2 === kind ? value = desc.value : 3 === kind ? value = desc.get : 4 === kind && (value = desc.set), \"function\" == typeof decs) void 0 !== (newValue = memberDec(decs, name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value)) && (assertValidReturnValue(kind, newValue), 0 === kind ? initializer = newValue : 1 === kind ? (initializer = getInit(newValue), get = newValue.get || value.get, set = newValue.set || value.set, value = {\n get: get,\n set: set\n }) : value = newValue);else for (var i = decs.length - 1; i >= 0; i--) {\n var newInit;\n if (void 0 !== (newValue = memberDec(decs[i], name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value))) assertValidReturnValue(kind, newValue), 0 === kind ? newInit = newValue : 1 === kind ? (newInit = getInit(newValue), get = newValue.get || value.get, set = newValue.set || value.set, value = {\n get: get,\n set: set\n }) : value = newValue, void 0 !== newInit && (void 0 === initializer ? initializer = newInit : \"function\" == typeof initializer ? initializer = [initializer, newInit] : initializer.push(newInit));\n }\n\n if (0 === kind || 1 === kind) {\n if (void 0 === initializer) initializer = function initializer(instance, init) {\n return init;\n };else if (\"function\" != typeof initializer) {\n var ownInitializers = initializer;\n\n initializer = function initializer(instance, init) {\n for (var value = init, i = 0; i < ownInitializers.length; i++) {\n value = ownInitializers[i].call(instance, value);\n }\n\n return value;\n };\n } else {\n var originalInitializer = initializer;\n\n initializer = function initializer(instance, init) {\n return originalInitializer.call(instance, init);\n };\n }\n ret.push(initializer);\n }\n\n 0 !== kind && (1 === kind ? (desc.get = value.get, desc.set = value.set) : 2 === kind ? desc.value = value : 3 === kind ? desc.get = value : 4 === kind && (desc.set = value), isPrivate ? 1 === kind ? (ret.push(function (instance, args) {\n return value.get.call(instance, args);\n }), ret.push(function (instance, args) {\n return value.set.call(instance, args);\n })) : 2 === kind ? ret.push(value) : ret.push(function (instance, args) {\n return value.call(instance, args);\n }) : Object.defineProperty(base, name, desc));\n}\n\nfunction applyMemberDecs(ret, Class, protoMetadataMap, staticMetadataMap, decInfos) {\n for (var protoInitializers, staticInitializers, existingProtoNonFields = new Map(), existingStaticNonFields = new Map(), i = 0; i < decInfos.length; i++) {\n var decInfo = decInfos[i];\n\n if (Array.isArray(decInfo)) {\n var base,\n metadataMap,\n initializers,\n kind = decInfo[1],\n name = decInfo[2],\n isPrivate = decInfo.length > 3,\n isStatic = kind >= 5;\n\n if (isStatic ? (base = Class, metadataMap = staticMetadataMap, 0 !== (kind -= 5) && (initializers = staticInitializers = staticInitializers || [])) : (base = Class.prototype, metadataMap = protoMetadataMap, 0 !== kind && (initializers = protoInitializers = protoInitializers || [])), 0 !== kind && !isPrivate) {\n var existingNonFields = isStatic ? existingStaticNonFields : existingProtoNonFields,\n existingKind = existingNonFields.get(name) || 0;\n if (!0 === existingKind || 3 === existingKind && 4 !== kind || 4 === existingKind && 3 !== kind) throw new Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \" + name);\n !existingKind && kind > 2 ? existingNonFields.set(name, kind) : existingNonFields.set(name, !0);\n }\n\n applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, metadataMap, initializers);\n }\n }\n\n pushInitializers(ret, protoInitializers), pushInitializers(ret, staticInitializers);\n}\n\nfunction pushInitializers(ret, initializers) {\n initializers && ret.push(function (instance) {\n for (var i = 0; i < initializers.length; i++) {\n initializers[i].call(instance);\n }\n\n return instance;\n });\n}\n\nfunction applyClassDecs(ret, targetClass, metadataMap, classDecs) {\n if (classDecs.length > 0) {\n for (var initializers = [], newClass = targetClass, name = targetClass.name, i = classDecs.length - 1; i >= 0; i--) {\n var decoratorFinishedRef = {\n v: !1\n };\n\n try {\n var ctx = Object.assign({\n kind: \"class\",\n name: name,\n addInitializer: createAddInitializerMethod(initializers, decoratorFinishedRef)\n }, createMetadataMethodsForProperty(metadataMap, 0, name, decoratorFinishedRef)),\n nextNewClass = classDecs[i](newClass, ctx);\n } finally {\n decoratorFinishedRef.v = !0;\n }\n\n void 0 !== nextNewClass && (assertValidReturnValue(10, nextNewClass), newClass = nextNewClass);\n }\n\n ret.push(newClass, function () {\n for (var i = 0; i < initializers.length; i++) {\n initializers[i].call(newClass);\n }\n });\n }\n}\n\nfunction _applyDecs(targetClass, memberDecs, classDecs) {\n var ret = [],\n staticMetadataMap = {},\n protoMetadataMap = {};\n return applyMemberDecs(ret, targetClass, protoMetadataMap, staticMetadataMap, memberDecs), convertMetadataMapToFinal(targetClass.prototype, protoMetadataMap), applyClassDecs(ret, targetClass, staticMetadataMap, classDecs), convertMetadataMapToFinal(targetClass, staticMetadataMap), ret;\n}\n\nfunction _asyncIterator(iterable) {\n var method,\n async,\n sync,\n retry = 2;\n\n for (\"undefined\" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) {\n if (async && null != (method = iterable[async])) return method.call(iterable);\n if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable));\n async = \"@@asyncIterator\", sync = \"@@iterator\";\n }\n\n throw new TypeError(\"Object is not async iterable\");\n}\n\nfunction AsyncFromSyncIterator(s) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n var done = r.done;\n return Promise.resolve(r.value).then(function (value) {\n return {\n value: value,\n done: done\n };\n });\n }\n\n return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) {\n this.s = s, this.n = s.next;\n }, AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function next() {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n \"return\": function _return(value) {\n var ret = this.s[\"return\"];\n return void 0 === ret ? Promise.resolve({\n value: value,\n done: !0\n }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));\n },\n \"throw\": function _throw(value) {\n var thr = this.s[\"return\"];\n return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));\n }\n }, new AsyncFromSyncIterator(s);\n}\n\nvar REACT_ELEMENT_TYPE;\n\nfunction _jsx(type, props, key, children) {\n REACT_ELEMENT_TYPE || (REACT_ELEMENT_TYPE = \"function\" == typeof Symbol && Symbol[\"for\"] && Symbol[\"for\"](\"react.element\") || 60103);\n var defaultProps = type && type.defaultProps,\n childrenLength = arguments.length - 3;\n if (props || 0 === childrenLength || (props = {\n children: void 0\n }), 1 === childrenLength) props.children = children;else if (childrenLength > 1) {\n for (var childArray = new Array(childrenLength), i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n\n props.children = childArray;\n }\n if (props && defaultProps) for (var propName in defaultProps) {\n void 0 === props[propName] && (props[propName] = defaultProps[propName]);\n } else props || (props = defaultProps || {});\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: void 0 === key ? null : \"\" + key,\n ref: null,\n props: props,\n _owner: null\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function _wrapRegExp(re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != _typeof2(args[args.length - 1]) && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _AwaitValue(value) {\n this.wrapped = value;\n}\n\nfunction _AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof _AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {\n if (wrappedAwait) {\n resume(key === \"return\" ? \"return\" : \"next\", arg);\n return;\n }\n\n settle(result.done ? \"return\" : \"normal\", arg);\n }, function (err) {\n resume(\"throw\", err);\n });\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen[\"return\"] !== \"function\") {\n this[\"return\"] = undefined;\n }\n}\n\n_AsyncGenerator.prototype[typeof Symbol === \"function\" && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n};\n\n_AsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n};\n\n_AsyncGenerator.prototype[\"throw\"] = function (arg) {\n return this._invoke(\"throw\", arg);\n};\n\n_AsyncGenerator.prototype[\"return\"] = function (arg) {\n return this._invoke(\"return\", arg);\n};\n\nfunction _wrapAsyncGenerator(fn) {\n return function () {\n return new _AsyncGenerator(fn.apply(this, arguments));\n };\n}\n\nfunction _awaitAsyncGenerator(value) {\n return new _AwaitValue(value);\n}\n\nfunction _asyncGeneratorDelegate(inner, awaitWrap) {\n var iter = {},\n waiting = false;\n\n function pump(key, value) {\n waiting = true;\n value = new Promise(function (resolve) {\n resolve(inner[key](value));\n });\n return {\n done: false,\n value: awaitWrap(value)\n };\n }\n\n ;\n\n iter[typeof Symbol !== \"undefined\" && Symbol.iterator || \"@@iterator\"] = function () {\n return this;\n };\n\n iter.next = function (value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n\n return pump(\"next\", value);\n };\n\n if (typeof inner[\"throw\"] === \"function\") {\n iter[\"throw\"] = function (value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n\n return pump(\"throw\", value);\n };\n }\n\n if (typeof inner[\"return\"] === \"function\") {\n iter[\"return\"] = function (value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n\n return pump(\"return\", value);\n };\n }\n\n return iter;\n}\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineEnumerableProperties(obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if (\"value\" in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n\n if (Object.getOwnPropertySymbols) {\n var objectSymbols = Object.getOwnPropertySymbols(descs);\n\n for (var i = 0; i < objectSymbols.length; i++) {\n var sym = objectSymbols[i];\n var desc = descs[sym];\n desc.configurable = desc.enumerable = true;\n if (\"value\" in desc) desc.writable = true;\n Object.defineProperty(obj, sym, desc);\n }\n }\n\n return obj;\n}\n\nfunction _defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n\n return obj;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof2(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\n\nfunction _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof2(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}\n\nfunction set(target, property, value, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n}\n\nfunction _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n}\n\nfunction _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\n\nfunction _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n}\n\nfunction _readOnlyError(name) {\n throw new TypeError(\"\\\"\" + name + \"\\\" is read-only\");\n}\n\nfunction _writeOnlyError(name) {\n throw new TypeError(\"\\\"\" + name + \"\\\" is write-only\");\n}\n\nfunction _classNameTDZError(name) {\n throw new Error(\"Class \\\"\" + name + \"\\\" cannot be referenced in computed property keys.\");\n}\n\nfunction _temporalUndefined() {}\n\nfunction _tdz(name) {\n throw new ReferenceError(name + \" is not defined - temporal dead zone\");\n}\n\nfunction _temporalRef(val, name) {\n return val === _temporalUndefined ? _tdz(name) : val;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _slicedToArrayLoose(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toArray(arr) {\n return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _maybeArrayLike(next, arr, i) {\n if (arr && !Array.isArray(arr) && typeof arr.length === \"number\") {\n var len = arr.length;\n return _arrayLikeToArray(arr, i !== void 0 && i < len ? i : len);\n }\n\n return next(arr, i);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _iterableToArrayLimitLoose(arr, i) {\n var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n if (_i == null) return;\n var _arr = [];\n\n for (_i = _i.call(arr), _step; !(_step = _i.next()).done;) {\n _arr.push(_step.value);\n\n if (i && _arr.length === i) break;\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e2) {\n throw _e2;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e3) {\n didErr = true;\n err = _e3;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _skipFirstGeneratorNext(fn) {\n return function () {\n var it = fn.apply(this, arguments);\n it.next();\n return it;\n };\n}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof2(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof2(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return _typeof2(key) === \"symbol\" ? key : String(key);\n}\n\nfunction _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.');\n}\n\nfunction _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n}\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}\n\nvar id$2 = 0;\n\nfunction _classPrivateFieldLooseKey(name) {\n return \"__private_\" + id$2++ + \"_\" + name;\n}\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n\n return receiver;\n}\n\nfunction _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\");\n\n return _classApplyDescriptorGet(receiver, descriptor);\n}\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\");\n\n _classApplyDescriptorSet(receiver, descriptor, value);\n\n return value;\n}\n\nfunction _classPrivateFieldDestructureSet(receiver, privateMap) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\");\n\n return _classApplyDescriptorDestructureSet(receiver, descriptor);\n}\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\n\nfunction _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n\n _classCheckPrivateStaticFieldDescriptor(descriptor, \"get\");\n\n return _classApplyDescriptorGet(receiver, descriptor);\n}\n\nfunction _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n\n _classCheckPrivateStaticFieldDescriptor(descriptor, \"set\");\n\n _classApplyDescriptorSet(receiver, descriptor, value);\n\n return value;\n}\n\nfunction _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n\n return method;\n}\n\nfunction _classStaticPrivateMethodSet() {\n throw new TypeError(\"attempted to set read only static private field\");\n}\n\nfunction _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n}\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n\n descriptor.value = value;\n }\n}\n\nfunction _classApplyDescriptorDestructureSet(receiver, descriptor) {\n if (descriptor.set) {\n if (!(\"__destrObj\" in descriptor)) {\n descriptor.__destrObj = {\n set value(v) {\n descriptor.set.call(receiver, v);\n }\n\n };\n }\n\n return descriptor.__destrObj;\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n\n return descriptor;\n }\n}\n\nfunction _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n\n _classCheckPrivateStaticFieldDescriptor(descriptor, \"set\");\n\n return _classApplyDescriptorDestructureSet(receiver, descriptor);\n}\n\nfunction _classCheckPrivateStaticAccess(receiver, classConstructor) {\n if (receiver !== classConstructor) {\n throw new TypeError(\"Private static access of wrong provenance\");\n }\n}\n\nfunction _classCheckPrivateStaticFieldDescriptor(descriptor, action) {\n if (descriptor === undefined) {\n throw new TypeError(\"attempted to \" + action + \" private static field before its declaration\");\n }\n}\n\nfunction _decorate(decorators, factory, superClass, mixins) {\n var api = _getDecoratorsApi();\n\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n api = mixins[i](api);\n }\n }\n\n var r = factory(function initialize(O) {\n api.initializeInstanceElements(O, decorated.elements);\n }, superClass);\n var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators);\n api.initializeClassElements(r.F, decorated.elements);\n return api.runClassFinishers(r.F, decorated.finishers);\n}\n\nfunction _getDecoratorsApi() {\n _getDecoratorsApi = function _getDecoratorsApi() {\n return api;\n };\n\n var api = {\n elementsDefinitionOrder: [[\"method\"], [\"field\"]],\n initializeInstanceElements: function initializeInstanceElements(O, elements) {\n [\"method\", \"field\"].forEach(function (kind) {\n elements.forEach(function (element) {\n if (element.kind === kind && element.placement === \"own\") {\n this.defineClassElement(O, element);\n }\n }, this);\n }, this);\n },\n initializeClassElements: function initializeClassElements(F, elements) {\n var proto = F.prototype;\n [\"method\", \"field\"].forEach(function (kind) {\n elements.forEach(function (element) {\n var placement = element.placement;\n\n if (element.kind === kind && (placement === \"static\" || placement === \"prototype\")) {\n var receiver = placement === \"static\" ? F : proto;\n this.defineClassElement(receiver, element);\n }\n }, this);\n }, this);\n },\n defineClassElement: function defineClassElement(receiver, element) {\n var descriptor = element.descriptor;\n\n if (element.kind === \"field\") {\n var initializer = element.initializer;\n descriptor = {\n enumerable: descriptor.enumerable,\n writable: descriptor.writable,\n configurable: descriptor.configurable,\n value: initializer === void 0 ? void 0 : initializer.call(receiver)\n };\n }\n\n Object.defineProperty(receiver, element.key, descriptor);\n },\n decorateClass: function decorateClass(elements, decorators) {\n var newElements = [];\n var finishers = [];\n var placements = {\n \"static\": [],\n prototype: [],\n own: []\n };\n elements.forEach(function (element) {\n this.addElementPlacement(element, placements);\n }, this);\n elements.forEach(function (element) {\n if (!_hasDecorators(element)) return newElements.push(element);\n var elementFinishersExtras = this.decorateElement(element, placements);\n newElements.push(elementFinishersExtras.element);\n newElements.push.apply(newElements, elementFinishersExtras.extras);\n finishers.push.apply(finishers, elementFinishersExtras.finishers);\n }, this);\n\n if (!decorators) {\n return {\n elements: newElements,\n finishers: finishers\n };\n }\n\n var result = this.decorateConstructor(newElements, decorators);\n finishers.push.apply(finishers, result.finishers);\n result.finishers = finishers;\n return result;\n },\n addElementPlacement: function addElementPlacement(element, placements, silent) {\n var keys = placements[element.placement];\n\n if (!silent && keys.indexOf(element.key) !== -1) {\n throw new TypeError(\"Duplicated element (\" + element.key + \")\");\n }\n\n keys.push(element.key);\n },\n decorateElement: function decorateElement(element, placements) {\n var extras = [];\n var finishers = [];\n\n for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {\n var keys = placements[element.placement];\n keys.splice(keys.indexOf(element.key), 1);\n var elementObject = this.fromElementDescriptor(element);\n var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);\n element = elementFinisherExtras.element;\n this.addElementPlacement(element, placements);\n\n if (elementFinisherExtras.finisher) {\n finishers.push(elementFinisherExtras.finisher);\n }\n\n var newExtras = elementFinisherExtras.extras;\n\n if (newExtras) {\n for (var j = 0; j < newExtras.length; j++) {\n this.addElementPlacement(newExtras[j], placements);\n }\n\n extras.push.apply(extras, newExtras);\n }\n }\n\n return {\n element: element,\n finishers: finishers,\n extras: extras\n };\n },\n decorateConstructor: function decorateConstructor(elements, decorators) {\n var finishers = [];\n\n for (var i = decorators.length - 1; i >= 0; i--) {\n var obj = this.fromClassDescriptor(elements);\n var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj);\n\n if (elementsAndFinisher.finisher !== undefined) {\n finishers.push(elementsAndFinisher.finisher);\n }\n\n if (elementsAndFinisher.elements !== undefined) {\n elements = elementsAndFinisher.elements;\n\n for (var j = 0; j < elements.length - 1; j++) {\n for (var k = j + 1; k < elements.length; k++) {\n if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) {\n throw new TypeError(\"Duplicated element (\" + elements[j].key + \")\");\n }\n }\n }\n }\n }\n\n return {\n elements: elements,\n finishers: finishers\n };\n },\n fromElementDescriptor: function fromElementDescriptor(element) {\n var obj = {\n kind: element.kind,\n key: element.key,\n placement: element.placement,\n descriptor: element.descriptor\n };\n var desc = {\n value: \"Descriptor\",\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n if (element.kind === \"field\") obj.initializer = element.initializer;\n return obj;\n },\n toElementDescriptors: function toElementDescriptors(elementObjects) {\n if (elementObjects === undefined) return;\n return _toArray(elementObjects).map(function (elementObject) {\n var element = this.toElementDescriptor(elementObject);\n this.disallowProperty(elementObject, \"finisher\", \"An element descriptor\");\n this.disallowProperty(elementObject, \"extras\", \"An element descriptor\");\n return element;\n }, this);\n },\n toElementDescriptor: function toElementDescriptor(elementObject) {\n var kind = String(elementObject.kind);\n\n if (kind !== \"method\" && kind !== \"field\") {\n throw new TypeError('An element descriptor\\'s .kind property must be either \"method\" or' + ' \"field\", but a decorator created an element descriptor with' + ' .kind \"' + kind + '\"');\n }\n\n var key = _toPropertyKey(elementObject.key);\n\n var placement = String(elementObject.placement);\n\n if (placement !== \"static\" && placement !== \"prototype\" && placement !== \"own\") {\n throw new TypeError('An element descriptor\\'s .placement property must be one of \"static\",' + ' \"prototype\" or \"own\", but a decorator created an element descriptor' + ' with .placement \"' + placement + '\"');\n }\n\n var descriptor = elementObject.descriptor;\n this.disallowProperty(elementObject, \"elements\", \"An element descriptor\");\n var element = {\n kind: kind,\n key: key,\n placement: placement,\n descriptor: Object.assign({}, descriptor)\n };\n\n if (kind !== \"field\") {\n this.disallowProperty(elementObject, \"initializer\", \"A method descriptor\");\n } else {\n this.disallowProperty(descriptor, \"get\", \"The property descriptor of a field descriptor\");\n this.disallowProperty(descriptor, \"set\", \"The property descriptor of a field descriptor\");\n this.disallowProperty(descriptor, \"value\", \"The property descriptor of a field descriptor\");\n element.initializer = elementObject.initializer;\n }\n\n return element;\n },\n toElementFinisherExtras: function toElementFinisherExtras(elementObject) {\n var element = this.toElementDescriptor(elementObject);\n\n var finisher = _optionalCallableProperty(elementObject, \"finisher\");\n\n var extras = this.toElementDescriptors(elementObject.extras);\n return {\n element: element,\n finisher: finisher,\n extras: extras\n };\n },\n fromClassDescriptor: function fromClassDescriptor(elements) {\n var obj = {\n kind: \"class\",\n elements: elements.map(this.fromElementDescriptor, this)\n };\n var desc = {\n value: \"Descriptor\",\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n return obj;\n },\n toClassDescriptor: function toClassDescriptor(obj) {\n var kind = String(obj.kind);\n\n if (kind !== \"class\") {\n throw new TypeError('A class descriptor\\'s .kind property must be \"class\", but a decorator' + ' created a class descriptor with .kind \"' + kind + '\"');\n }\n\n this.disallowProperty(obj, \"key\", \"A class descriptor\");\n this.disallowProperty(obj, \"placement\", \"A class descriptor\");\n this.disallowProperty(obj, \"descriptor\", \"A class descriptor\");\n this.disallowProperty(obj, \"initializer\", \"A class descriptor\");\n this.disallowProperty(obj, \"extras\", \"A class descriptor\");\n\n var finisher = _optionalCallableProperty(obj, \"finisher\");\n\n var elements = this.toElementDescriptors(obj.elements);\n return {\n elements: elements,\n finisher: finisher\n };\n },\n runClassFinishers: function runClassFinishers(constructor, finishers) {\n for (var i = 0; i < finishers.length; i++) {\n var newConstructor = (0, finishers[i])(constructor);\n\n if (newConstructor !== undefined) {\n if (typeof newConstructor !== \"function\") {\n throw new TypeError(\"Finishers must return a constructor.\");\n }\n\n constructor = newConstructor;\n }\n }\n\n return constructor;\n },\n disallowProperty: function disallowProperty(obj, name, objectType) {\n if (obj[name] !== undefined) {\n throw new TypeError(objectType + \" can't have a .\" + name + \" property.\");\n }\n }\n };\n return api;\n}\n\nfunction _createElementDescriptor(def) {\n var key = _toPropertyKey(def.key);\n\n var descriptor;\n\n if (def.kind === \"method\") {\n descriptor = {\n value: def.value,\n writable: true,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === \"get\") {\n descriptor = {\n get: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === \"set\") {\n descriptor = {\n set: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === \"field\") {\n descriptor = {\n configurable: true,\n writable: true,\n enumerable: true\n };\n }\n\n var element = {\n kind: def.kind === \"field\" ? \"field\" : \"method\",\n key: key,\n placement: def[\"static\"] ? \"static\" : def.kind === \"field\" ? \"own\" : \"prototype\",\n descriptor: descriptor\n };\n if (def.decorators) element.decorators = def.decorators;\n if (def.kind === \"field\") element.initializer = def.value;\n return element;\n}\n\nfunction _coalesceGetterSetter(element, other) {\n if (element.descriptor.get !== undefined) {\n other.descriptor.get = element.descriptor.get;\n } else {\n other.descriptor.set = element.descriptor.set;\n }\n}\n\nfunction _coalesceClassElements(elements) {\n var newElements = [];\n\n var isSameElement = function isSameElement(other) {\n return other.kind === \"method\" && other.key === element.key && other.placement === element.placement;\n };\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var other;\n\n if (element.kind === \"method\" && (other = newElements.find(isSameElement))) {\n if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {\n if (_hasDecorators(element) || _hasDecorators(other)) {\n throw new ReferenceError(\"Duplicated methods (\" + element.key + \") can't be decorated.\");\n }\n\n other.descriptor = element.descriptor;\n } else {\n if (_hasDecorators(element)) {\n if (_hasDecorators(other)) {\n throw new ReferenceError(\"Decorators can't be placed on different accessors with for \" + \"the same property (\" + element.key + \").\");\n }\n\n other.decorators = element.decorators;\n }\n\n _coalesceGetterSetter(element, other);\n }\n } else {\n newElements.push(element);\n }\n }\n\n return newElements;\n}\n\nfunction _hasDecorators(element) {\n return element.decorators && element.decorators.length;\n}\n\nfunction _isDataDescriptor(desc) {\n return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);\n}\n\nfunction _optionalCallableProperty(obj, name) {\n var value = obj[name];\n\n if (value !== undefined && typeof value !== \"function\") {\n throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n }\n\n return value;\n}\n\nfunction _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return fn;\n}\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) {\n _checkPrivateRedeclaration(obj, privateMap);\n\n privateMap.set(obj, value);\n}\n\nfunction _classPrivateMethodInitSpec(obj, privateSet) {\n _checkPrivateRedeclaration(obj, privateSet);\n\n privateSet.add(obj);\n}\n\nfunction _classPrivateMethodSet() {\n throw new TypeError(\"attempted to reassign private method\");\n}\n\nfunction _identity(x) {\n return x;\n}\n\nvar BasicObject = /*#__PURE__*/function () {\n function BasicObject() {\n _classCallCheck2(this, BasicObject);\n }\n\n _createClass2(BasicObject, null, [{\n key: \"proxyMethod\",\n value: function proxyMethod(expression) {\n var _parseProxyMethodExpr = parseProxyMethodExpression(expression),\n name = _parseProxyMethodExpr.name,\n toMethod = _parseProxyMethodExpr.toMethod,\n toProperty = _parseProxyMethodExpr.toProperty,\n optional = _parseProxyMethodExpr.optional;\n\n this.prototype[name] = function () {\n var subject;\n var object;\n\n if (toMethod) {\n if (optional) {\n var _this$toMethod;\n\n object = (_this$toMethod = this[toMethod]) === null || _this$toMethod === void 0 ? void 0 : _this$toMethod.call(this);\n } else {\n object = this[toMethod]();\n }\n } else if (toProperty) {\n object = this[toProperty];\n }\n\n if (optional) {\n var _object;\n\n subject = (_object = object) === null || _object === void 0 ? void 0 : _object[name];\n\n if (subject) {\n return apply.call(subject, object, arguments);\n }\n } else {\n subject = object[name];\n return apply.call(subject, object, arguments);\n }\n };\n }\n }]);\n\n return BasicObject;\n}();\n\nvar parseProxyMethodExpression = function parseProxyMethodExpression(expression) {\n var match = expression.match(proxyMethodExpressionPattern);\n\n if (!match) {\n throw new Error(\"can't parse @proxyMethod expression: \".concat(expression));\n }\n\n var args = {\n name: match[4]\n };\n\n if (match[2] != null) {\n args.toMethod = match[1];\n } else {\n args.toProperty = match[1];\n }\n\n if (match[3] != null) {\n args.optional = true;\n }\n\n return args;\n};\n\nvar apply = Function.prototype.apply;\nvar proxyMethodExpressionPattern = new RegExp(\"\\\n^\\\n(.+?)\\\n(\\\\(\\\\))?\\\n(\\\\?)?\\\n\\\\.\\\n(.+?)\\\n$\\\n\");\n\nvar _Array$from, _$codePointAt$1, _$1, _String$fromCodePoint;\n\nvar UTF16String = /*#__PURE__*/function (_BasicObject) {\n _inherits2(UTF16String, _BasicObject);\n\n var _super2 = _createSuper2(UTF16String);\n\n function UTF16String(ucs2String, codepoints) {\n var _this2;\n\n _classCallCheck2(this, UTF16String);\n\n _this2 = _super2.apply(this, arguments);\n _this2.ucs2String = ucs2String;\n _this2.codepoints = codepoints;\n _this2.length = _this2.codepoints.length;\n _this2.ucs2Length = _this2.ucs2String.length;\n return _this2;\n }\n\n _createClass2(UTF16String, [{\n key: \"offsetToUCS2Offset\",\n value: function offsetToUCS2Offset(offset) {\n return ucs2encode(this.codepoints.slice(0, Math.max(0, offset))).length;\n }\n }, {\n key: \"offsetFromUCS2Offset\",\n value: function offsetFromUCS2Offset(ucs2Offset) {\n return ucs2decode(this.ucs2String.slice(0, Math.max(0, ucs2Offset))).length;\n }\n }, {\n key: \"slice\",\n value: function slice() {\n var _this$codepoints;\n\n return this.constructor.fromCodepoints((_this$codepoints = this.codepoints).slice.apply(_this$codepoints, arguments));\n }\n }, {\n key: \"charAt\",\n value: function charAt(offset) {\n return this.slice(offset, offset + 1);\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(value) {\n return this.constructor.box(value).ucs2String === this.ucs2String;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.ucs2String;\n }\n }, {\n key: \"getCacheKey\",\n value: function getCacheKey() {\n return this.ucs2String;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.ucs2String;\n }\n }], [{\n key: \"box\",\n value: function box() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n\n if (value instanceof this) {\n return value;\n } else {\n return this.fromUCS2String(value === null || value === void 0 ? void 0 : value.toString());\n }\n }\n }, {\n key: \"fromUCS2String\",\n value: function fromUCS2String(ucs2String) {\n return new this(ucs2String, ucs2decode(ucs2String));\n }\n }, {\n key: \"fromCodepoints\",\n value: function fromCodepoints(codepoints) {\n return new this(ucs2encode(codepoints), codepoints);\n }\n }]);\n\n return UTF16String;\n}(BasicObject);\n\nvar hasArrayFrom = ((_Array$from = Array.from) === null || _Array$from === void 0 ? void 0 : _Array$from.call(Array, \"\\uD83D\\uDC7C\").length) === 1;\nvar hasStringCodePointAt$1 = ((_$codePointAt$1 = (_$1 = \" \").codePointAt) === null || _$codePointAt$1 === void 0 ? void 0 : _$codePointAt$1.call(_$1, 0)) != null;\nvar hasStringFromCodePoint = ((_String$fromCodePoint = String.fromCodePoint) === null || _String$fromCodePoint === void 0 ? void 0 : _String$fromCodePoint.call(String, 32, 128124)) === \" \\uD83D\\uDC7C\"; // UCS-2 conversion helpers ported from Mathias Bynens' Punycode.js:\n// https://github.com/bestiejs/punycode.js#punycodeucs2\n\nvar ucs2decode, ucs2encode; // Creates an array containing the numeric code points of each Unicode\n// character in the string. While JavaScript uses UCS-2 internally,\n// this function will convert a pair of surrogate halves (each of which\n// UCS-2 exposes as separate characters) into a single code point,\n// matching UTF-16.\n\nif (hasArrayFrom && hasStringCodePointAt$1) {\n ucs2decode = function ucs2decode(string) {\n return Array.from(string).map(function (_char) {\n return _char.codePointAt(0);\n });\n };\n} else {\n ucs2decode = function ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (0xd800 <= value && value <= 0xdbff && counter < length) {\n // high surrogate, and there is a next character\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xfc00) === 0xdc00) {\n // low surrogate\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n } else {\n // unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair\n counter--;\n }\n }\n\n output.push(value);\n }\n\n return output;\n };\n} // Creates a string based on an array of numeric code points.\n\n\nif (hasStringFromCodePoint) {\n ucs2encode = function ucs2encode(array) {\n return String.fromCodePoint.apply(String, _toConsumableArray2(Array.from(array || [])));\n };\n} else {\n ucs2encode = function ucs2encode(array) {\n var characters = function () {\n var result = [];\n Array.from(array).forEach(function (value) {\n var output = \"\";\n\n if (value > 0xffff) {\n value -= 0x10000;\n output += String.fromCharCode(value >>> 10 & 0x3ff | 0xd800);\n value = 0xdc00 | value & 0x3ff;\n }\n\n result.push(output + String.fromCharCode(value));\n });\n return result;\n }();\n\n return characters.join(\"\");\n };\n}\n\nvar id$1 = 0;\n\nvar TrixObject = /*#__PURE__*/function (_BasicObject2) {\n _inherits2(TrixObject, _BasicObject2);\n\n var _super3 = _createSuper2(TrixObject);\n\n function TrixObject() {\n var _this3;\n\n _classCallCheck2(this, TrixObject);\n\n _this3 = _super3.apply(this, arguments);\n _this3.id = ++id$1;\n return _this3;\n }\n\n _createClass2(TrixObject, [{\n key: \"hasSameConstructorAs\",\n value: function hasSameConstructorAs(object) {\n return this.constructor === (object === null || object === void 0 ? void 0 : object.constructor);\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(object) {\n return this === object;\n }\n }, {\n key: \"inspect\",\n value: function inspect() {\n var parts = [];\n var contents = this.contentsForInspection() || {};\n\n for (var key in contents) {\n var value = contents[key];\n parts.push(\"\".concat(key, \"=\").concat(value));\n }\n\n return \"#<\".concat(this.constructor.name, \":\").concat(this.id).concat(parts.length ? \" \".concat(parts.join(\", \")) : \"\", \">\");\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {}\n }, {\n key: \"toJSONString\",\n value: function toJSONString() {\n return JSON.stringify(this);\n }\n }, {\n key: \"toUTF16String\",\n value: function toUTF16String() {\n return UTF16String.box(this);\n }\n }, {\n key: \"getCacheKey\",\n value: function getCacheKey() {\n return this.id.toString();\n }\n }], [{\n key: \"fromJSONString\",\n value: function fromJSONString(jsonString) {\n return this.fromJSON(JSON.parse(jsonString));\n }\n }]);\n\n return TrixObject;\n}(BasicObject);\n/* eslint-disable\n id-length,\n*/\n\n\nvar arraysAreEqual = function arraysAreEqual() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (var index = 0; index < a.length; index++) {\n var value = a[index];\n\n if (value !== b[index]) {\n return false;\n }\n }\n\n return true;\n};\n\nvar arrayStartsWith = function arrayStartsWith() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return arraysAreEqual(a.slice(0, b.length), b);\n};\n\nvar spliceArray = function spliceArray(array) {\n var result = array.slice(0);\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 result.splice.apply(result, args);\n return result;\n};\n\nvar summarizeArrayChange = function summarizeArrayChange() {\n var oldArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var newArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var added = [];\n var removed = [];\n var existingValues = new Set();\n oldArray.forEach(function (value) {\n existingValues.add(value);\n });\n var currentValues = new Set();\n newArray.forEach(function (value) {\n currentValues.add(value);\n\n if (!existingValues.has(value)) {\n added.push(value);\n }\n });\n oldArray.forEach(function (value) {\n if (!currentValues.has(value)) {\n removed.push(value);\n }\n });\n return {\n added: added,\n removed: removed\n };\n};\n\nvar RTL_PATTERN = /[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/;\n\nvar _getDirection = function () {\n var input = makeElement(\"input\", {\n dir: \"auto\",\n name: \"x\",\n dirName: \"x.dir\"\n });\n var form = makeElement(\"form\");\n form.appendChild(input);\n\n var supportsDirName = function () {\n try {\n return new FormData(form).has(input.dirName);\n } catch (error) {\n return false;\n }\n }();\n\n var supportsDirSelector = function () {\n try {\n return input.matches(\":dir(ltr),:dir(rtl)\");\n } catch (error) {\n return false;\n }\n }();\n\n if (supportsDirName) {\n return function (string) {\n input.value = string;\n return new FormData(form).get(input.dirName);\n };\n } else if (supportsDirSelector) {\n return function (string) {\n input.value = string;\n\n if (input.matches(\":dir(rtl)\")) {\n return \"rtl\";\n } else {\n return \"ltr\";\n }\n };\n } else {\n return function (string) {\n var _char2 = string.trim().charAt(0);\n\n if (RTL_PATTERN.test(_char2)) {\n return \"rtl\";\n } else {\n return \"ltr\";\n }\n };\n }\n}();\n\nvar allAttributeNames = null;\nvar blockAttributeNames = null;\nvar textAttributeNames = null;\nvar listAttributeNames = null;\n\nvar getAllAttributeNames = function getAllAttributeNames() {\n if (!allAttributeNames) {\n allAttributeNames = getTextAttributeNames().concat(getBlockAttributeNames());\n }\n\n return allAttributeNames;\n};\n\nvar getBlockConfig = function getBlockConfig(attributeName) {\n return config.blockAttributes[attributeName];\n};\n\nvar getBlockAttributeNames = function getBlockAttributeNames() {\n if (!blockAttributeNames) {\n blockAttributeNames = Object.keys(config.blockAttributes);\n }\n\n return blockAttributeNames;\n};\n\nvar getTextConfig = function getTextConfig(attributeName) {\n return config.textAttributes[attributeName];\n};\n\nvar getTextAttributeNames = function getTextAttributeNames() {\n if (!textAttributeNames) {\n textAttributeNames = Object.keys(config.textAttributes);\n }\n\n return textAttributeNames;\n};\n\nvar getListAttributeNames = function getListAttributeNames() {\n if (!listAttributeNames) {\n listAttributeNames = [];\n\n for (var key in config.blockAttributes) {\n var listAttribute = config.blockAttributes[key].listAttribute;\n\n if (listAttribute != null) {\n listAttributeNames.push(listAttribute);\n }\n }\n }\n\n return listAttributeNames;\n};\n/* eslint-disable\n*/\n\n\nvar installDefaultCSSForTagName = function installDefaultCSSForTagName(tagName, defaultCSS) {\n var styleElement = insertStyleElementForTagName(tagName);\n styleElement.textContent = defaultCSS.replace(/%t/g, tagName);\n};\n\nvar insertStyleElementForTagName = function insertStyleElementForTagName(tagName) {\n var element = document.createElement(\"style\");\n element.setAttribute(\"type\", \"text/css\");\n element.setAttribute(\"data-tag-name\", tagName.toLowerCase());\n var nonce = getCSPNonce();\n\n if (nonce) {\n element.setAttribute(\"nonce\", nonce);\n }\n\n document.head.insertBefore(element, document.head.firstChild);\n return element;\n};\n\nvar getCSPNonce = function getCSPNonce() {\n var element = getMetaElement(\"trix-csp-nonce\") || getMetaElement(\"csp-nonce\");\n\n if (element) {\n return element.getAttribute(\"content\");\n }\n};\n\nvar getMetaElement = function getMetaElement(name) {\n return document.head.querySelector(\"meta[name=\".concat(name, \"]\"));\n};\n\nvar testTransferData = {\n \"application/x-trix-feature-detection\": \"test\"\n};\n\nvar dataTransferIsPlainText = function dataTransferIsPlainText(dataTransfer) {\n var text = dataTransfer.getData(\"text/plain\");\n var html = dataTransfer.getData(\"text/html\");\n\n if (text && html) {\n var _DOMParser$parseFromS = new DOMParser().parseFromString(html, \"text/html\"),\n body = _DOMParser$parseFromS.body;\n\n if (body.textContent === text) {\n return !body.querySelector(\"*\");\n }\n } else {\n return text === null || text === void 0 ? void 0 : text.length;\n }\n};\n\nvar dataTransferIsWritable = function dataTransferIsWritable(dataTransfer) {\n if (!(dataTransfer !== null && dataTransfer !== void 0 && dataTransfer.setData)) return false;\n\n for (var key in testTransferData) {\n var value = testTransferData[key];\n\n try {\n dataTransfer.setData(key, value);\n if (!dataTransfer.getData(key) === value) return false;\n } catch (error) {\n return false;\n }\n }\n\n return true;\n};\n\nvar keyEventIsKeyboardCommand = function () {\n if (/Mac|^iP/.test(navigator.platform)) {\n return function (event) {\n return event.metaKey;\n };\n } else {\n return function (event) {\n return event.ctrlKey;\n };\n }\n}();\n\nvar defer = function defer(fn) {\n return setTimeout(fn, 1);\n};\n/* eslint-disable\n id-length,\n*/\n\n\nvar copyObject = function copyObject() {\n var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var result = {};\n\n for (var key in object) {\n var value = object[key];\n result[key] = value;\n }\n\n return result;\n};\n\nvar objectsAreEqual = function objectsAreEqual() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n\n for (var key in a) {\n var value = a[key];\n\n if (value !== b[key]) {\n return false;\n }\n }\n\n return true;\n};\n\nvar normalizeRange = function normalizeRange(range) {\n if (range == null) return;\n\n if (!Array.isArray(range)) {\n range = [range, range];\n }\n\n return [copyValue(range[0]), copyValue(range[1] != null ? range[1] : range[0])];\n};\n\nvar rangeIsCollapsed = function rangeIsCollapsed(range) {\n if (range == null) return;\n\n var _normalizeRange = normalizeRange(range),\n _normalizeRange2 = _slicedToArray2(_normalizeRange, 2),\n start = _normalizeRange2[0],\n end = _normalizeRange2[1];\n\n return rangeValuesAreEqual(start, end);\n};\n\nvar rangesAreEqual = function rangesAreEqual(leftRange, rightRange) {\n if (leftRange == null || rightRange == null) return;\n\n var _normalizeRange3 = normalizeRange(leftRange),\n _normalizeRange4 = _slicedToArray2(_normalizeRange3, 2),\n leftStart = _normalizeRange4[0],\n leftEnd = _normalizeRange4[1];\n\n var _normalizeRange5 = normalizeRange(rightRange),\n _normalizeRange6 = _slicedToArray2(_normalizeRange5, 2),\n rightStart = _normalizeRange6[0],\n rightEnd = _normalizeRange6[1];\n\n return rangeValuesAreEqual(leftStart, rightStart) && rangeValuesAreEqual(leftEnd, rightEnd);\n};\n\nvar copyValue = function copyValue(value) {\n if (typeof value === \"number\") {\n return value;\n } else {\n return copyObject(value);\n }\n};\n\nvar rangeValuesAreEqual = function rangeValuesAreEqual(left, right) {\n if (typeof left === \"number\") {\n return left === right;\n } else {\n return objectsAreEqual(left, right);\n }\n};\n/* eslint-disable\n id-length,\n*/\n\n\nvar SelectionChangeObserver = /*#__PURE__*/function (_BasicObject3) {\n _inherits2(SelectionChangeObserver, _BasicObject3);\n\n var _super4 = _createSuper2(SelectionChangeObserver);\n\n function SelectionChangeObserver() {\n var _this4;\n\n _classCallCheck2(this, SelectionChangeObserver);\n\n _this4 = _super4.apply(this, arguments);\n _this4.update = _this4.update.bind(_assertThisInitialized2(_this4));\n _this4.run = _this4.run.bind(_assertThisInitialized2(_this4));\n _this4.selectionManagers = [];\n return _this4;\n }\n\n _createClass2(SelectionChangeObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n\n if (\"onselectionchange\" in document) {\n return document.addEventListener(\"selectionchange\", this.update, true);\n } else {\n return this.run();\n }\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.started = false;\n return document.removeEventListener(\"selectionchange\", this.update, true);\n }\n }\n }, {\n key: \"registerSelectionManager\",\n value: function registerSelectionManager(selectionManager) {\n if (!this.selectionManagers.includes(selectionManager)) {\n this.selectionManagers.push(selectionManager);\n return this.start();\n }\n }\n }, {\n key: \"unregisterSelectionManager\",\n value: function unregisterSelectionManager(selectionManager) {\n this.selectionManagers = this.selectionManagers.filter(function (s) {\n return s !== selectionManager;\n });\n\n if (this.selectionManagers.length === 0) {\n return this.stop();\n }\n }\n }, {\n key: \"notifySelectionManagersOfSelectionChange\",\n value: function notifySelectionManagersOfSelectionChange() {\n return this.selectionManagers.map(function (selectionManager) {\n return selectionManager.selectionDidChange();\n });\n }\n }, {\n key: \"update\",\n value: function update() {\n var domRange = getDOMRange();\n\n if (!domRangesAreEqual(domRange, this.domRange)) {\n this.domRange = domRange;\n return this.notifySelectionManagersOfSelectionChange();\n }\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.domRange = null;\n return this.update();\n } // Private\n\n }, {\n key: \"run\",\n value: function run() {\n if (this.started) {\n this.update();\n return requestAnimationFrame(this.run);\n }\n }\n }]);\n\n return SelectionChangeObserver;\n}(BasicObject);\n\nvar domRangesAreEqual = function domRangesAreEqual(left, right) {\n return (left === null || left === void 0 ? void 0 : left.startContainer) === (right === null || right === void 0 ? void 0 : right.startContainer) && (left === null || left === void 0 ? void 0 : left.startOffset) === (right === null || right === void 0 ? void 0 : right.startOffset) && (left === null || left === void 0 ? void 0 : left.endContainer) === (right === null || right === void 0 ? void 0 : right.endContainer) && (left === null || left === void 0 ? void 0 : left.endOffset) === (right === null || right === void 0 ? void 0 : right.endOffset);\n};\n\nvar selectionChangeObserver = new SelectionChangeObserver();\n\nvar getDOMSelection = function getDOMSelection() {\n var selection = window.getSelection();\n\n if (selection.rangeCount > 0) {\n return selection;\n }\n};\n\nvar getDOMRange = function getDOMRange() {\n var _getDOMSelection;\n\n var domRange = (_getDOMSelection = getDOMSelection()) === null || _getDOMSelection === void 0 ? void 0 : _getDOMSelection.getRangeAt(0);\n\n if (domRange) {\n if (!domRangeIsPrivate(domRange)) {\n return domRange;\n }\n }\n};\n\nvar setDOMRange = function setDOMRange(domRange) {\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(domRange);\n return selectionChangeObserver.update();\n}; // In Firefox, clicking certain elements changes the selection to a\n// private element used to draw its UI. Attempting to access properties of those\n// elements throws an error.\n// https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n\n\nvar domRangeIsPrivate = function domRangeIsPrivate(domRange) {\n return nodeIsPrivate(domRange.startContainer) || nodeIsPrivate(domRange.endContainer);\n};\n\nvar nodeIsPrivate = function nodeIsPrivate(node) {\n return !Object.getPrototypeOf(node);\n};\n/* eslint-disable\n id-length,\n no-useless-escape,\n*/\n\n\nvar normalizeSpaces = function normalizeSpaces(string) {\n return string.replace(new RegExp(\"\".concat(ZERO_WIDTH_SPACE), \"g\"), \"\").replace(new RegExp(\"\".concat(NON_BREAKING_SPACE), \"g\"), \" \");\n};\n\nvar normalizeNewlines = function normalizeNewlines(string) {\n return string.replace(/\\r\\n/g, \"\\n\");\n};\n\nvar breakableWhitespacePattern = new RegExp(\"[^\\\\S\".concat(NON_BREAKING_SPACE, \"]\"));\n\nvar squishBreakableWhitespace = function squishBreakableWhitespace(string) {\n return string // Replace all breakable whitespace characters with a space\n .replace(new RegExp(\"\".concat(breakableWhitespacePattern.source), \"g\"), \" \") // Replace two or more spaces with a single space\n .replace(/\\ {2,}/g, \" \");\n};\n\nvar summarizeStringChange = function summarizeStringChange(oldString, newString) {\n var added, removed;\n oldString = UTF16String.box(oldString);\n newString = UTF16String.box(newString);\n\n if (newString.length < oldString.length) {\n var _utf16StringDifferenc = utf16StringDifferences(oldString, newString);\n\n var _utf16StringDifferenc2 = _slicedToArray2(_utf16StringDifferenc, 2);\n\n removed = _utf16StringDifferenc2[0];\n added = _utf16StringDifferenc2[1];\n } else {\n var _utf16StringDifferenc3 = utf16StringDifferences(newString, oldString);\n\n var _utf16StringDifferenc4 = _slicedToArray2(_utf16StringDifferenc3, 2);\n\n added = _utf16StringDifferenc4[0];\n removed = _utf16StringDifferenc4[1];\n }\n\n return {\n added: added,\n removed: removed\n };\n};\n\nvar utf16StringDifferences = function utf16StringDifferences(a, b) {\n if (a.isEqualTo(b)) {\n return [\"\", \"\"];\n }\n\n var diffA = utf16StringDifference(a, b);\n var length = diffA.utf16String.length;\n var diffB;\n\n if (length) {\n var offset = diffA.offset;\n var codepoints = a.codepoints.slice(0, offset).concat(a.codepoints.slice(offset + length));\n diffB = utf16StringDifference(b, UTF16String.fromCodepoints(codepoints));\n } else {\n diffB = utf16StringDifference(b, a);\n }\n\n return [diffA.utf16String.toString(), diffB.utf16String.toString()];\n};\n\nvar utf16StringDifference = function utf16StringDifference(a, b) {\n var leftIndex = 0;\n var rightIndexA = a.length;\n var rightIndexB = b.length;\n\n while (leftIndex < rightIndexA && a.charAt(leftIndex).isEqualTo(b.charAt(leftIndex))) {\n leftIndex++;\n }\n\n while (rightIndexA > leftIndex + 1 && a.charAt(rightIndexA - 1).isEqualTo(b.charAt(rightIndexB - 1))) {\n rightIndexA--;\n rightIndexB--;\n }\n\n return {\n utf16String: a.slice(leftIndex, rightIndexA),\n offset: leftIndex\n };\n};\n\nvar Hash = /*#__PURE__*/function (_TrixObject) {\n _inherits2(Hash, _TrixObject);\n\n var _super5 = _createSuper2(Hash);\n\n function Hash() {\n var _this5;\n\n _classCallCheck2(this, Hash);\n\n var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _this5 = _super5.apply(this, arguments);\n _this5.values = copy(values);\n return _this5;\n }\n\n _createClass2(Hash, [{\n key: \"add\",\n value: function add(key, value) {\n return this.merge(object(key, value));\n }\n }, {\n key: \"remove\",\n value: function remove(key) {\n return new Hash(copy(this.values, key));\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this.values[key];\n }\n }, {\n key: \"has\",\n value: function has(key) {\n return key in this.values;\n }\n }, {\n key: \"merge\",\n value: function merge(values) {\n return new Hash(_merge(this.values, unbox(values)));\n }\n }, {\n key: \"slice\",\n value: function slice(keys) {\n var _this6 = this;\n\n var values = {};\n keys.forEach(function (key) {\n if (_this6.has(key)) {\n values[key] = _this6.values[key];\n }\n });\n return new Hash(values);\n }\n }, {\n key: \"getKeys\",\n value: function getKeys() {\n return Object.keys(this.values);\n }\n }, {\n key: \"getKeysCommonToHash\",\n value: function getKeysCommonToHash(hash) {\n var _this7 = this;\n\n hash = _box(hash);\n return this.getKeys().filter(function (key) {\n return _this7.values[key] === hash.values[key];\n });\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(values) {\n return arraysAreEqual(this.toArray(), _box(values).toArray());\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n return this.getKeys().length === 0;\n }\n }, {\n key: \"toArray\",\n value: function toArray() {\n if (!this.array) {\n var result = [];\n\n for (var key in this.values) {\n var value = this.values[key];\n result.push(result.push(key, value));\n }\n\n this.array = result.slice(0);\n }\n\n return this.array;\n }\n }, {\n key: \"toObject\",\n value: function toObject() {\n return copy(this.values);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.toObject();\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {\n return {\n values: JSON.stringify(this.values)\n };\n }\n }], [{\n key: \"fromCommonAttributesOfObjects\",\n value: function fromCommonAttributesOfObjects() {\n var objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (!objects.length) {\n return new this();\n }\n\n var hash = _box(objects[0]);\n\n var keys = hash.getKeys();\n objects.slice(1).forEach(function (object) {\n keys = hash.getKeysCommonToHash(_box(object));\n hash = hash.slice(keys);\n });\n return hash;\n }\n }, {\n key: \"box\",\n value: function box(values) {\n return _box(values);\n }\n }]);\n\n return Hash;\n}(TrixObject);\n\nvar object = function object(key, value) {\n var result = {};\n result[key] = value;\n return result;\n};\n\nvar _merge = function _merge(object, values) {\n var result = copy(object);\n\n for (var key in values) {\n var value = values[key];\n result[key] = value;\n }\n\n return result;\n};\n\nvar copy = function copy(object, keyToRemove) {\n var result = {};\n var sortedKeys = Object.keys(object).sort();\n sortedKeys.forEach(function (key) {\n if (key !== keyToRemove) {\n result[key] = object[key];\n }\n });\n return result;\n};\n\nvar _box = function _box(object) {\n if (object instanceof Hash) {\n return object;\n } else {\n return new Hash(object);\n }\n};\n\nvar unbox = function unbox(object) {\n if (object instanceof Hash) {\n return object.values;\n } else {\n return object;\n }\n};\n\nvar Operation = /*#__PURE__*/function (_BasicObject4) {\n _inherits2(Operation, _BasicObject4);\n\n var _super6 = _createSuper2(Operation);\n\n function Operation() {\n _classCallCheck2(this, Operation);\n\n return _super6.apply(this, arguments);\n }\n\n _createClass2(Operation, [{\n key: \"isPerforming\",\n value: function isPerforming() {\n return this.performing === true;\n }\n }, {\n key: \"hasPerformed\",\n value: function hasPerformed() {\n return this.performed === true;\n }\n }, {\n key: \"hasSucceeded\",\n value: function hasSucceeded() {\n return this.performed && this.succeeded;\n }\n }, {\n key: \"hasFailed\",\n value: function hasFailed() {\n return this.performed && !this.succeeded;\n }\n }, {\n key: \"getPromise\",\n value: function getPromise() {\n var _this8 = this;\n\n if (!this.promise) {\n this.promise = new Promise(function (resolve, reject) {\n _this8.performing = true;\n return _this8.perform(function (succeeded, result) {\n _this8.succeeded = succeeded;\n _this8.performing = false;\n _this8.performed = true;\n\n if (_this8.succeeded) {\n resolve(result);\n } else {\n reject(result);\n }\n });\n });\n }\n\n return this.promise;\n }\n }, {\n key: \"perform\",\n value: function perform(callback) {\n return callback(false);\n }\n }, {\n key: \"release\",\n value: function release() {\n var _this$promise, _this$promise$cancel;\n\n (_this$promise = this.promise) === null || _this$promise === void 0 ? void 0 : (_this$promise$cancel = _this$promise.cancel) === null || _this$promise$cancel === void 0 ? void 0 : _this$promise$cancel.call(_this$promise);\n this.promise = null;\n this.performing = null;\n this.performed = null;\n this.succeeded = null;\n }\n }]);\n\n return Operation;\n}(BasicObject);\n\nOperation.proxyMethod(\"getPromise().then\");\nOperation.proxyMethod(\"getPromise().catch\");\n\nvar ImagePreloadOperation = /*#__PURE__*/function (_Operation) {\n _inherits2(ImagePreloadOperation, _Operation);\n\n var _super7 = _createSuper2(ImagePreloadOperation);\n\n function ImagePreloadOperation(url) {\n var _this9;\n\n _classCallCheck2(this, ImagePreloadOperation);\n\n _this9 = _super7.apply(this, arguments);\n _this9.url = url;\n return _this9;\n }\n\n _createClass2(ImagePreloadOperation, [{\n key: \"perform\",\n value: function perform(callback) {\n var _this10 = this;\n\n var image = new Image();\n\n image.onload = function () {\n image.width = _this10.width = image.naturalWidth;\n image.height = _this10.height = image.naturalHeight;\n return callback(true, image);\n };\n\n image.onerror = function () {\n return callback(false);\n };\n\n image.src = this.url;\n }\n }]);\n\n return ImagePreloadOperation;\n}(Operation);\n\nvar Attachment = /*#__PURE__*/function (_TrixObject2) {\n _inherits2(Attachment, _TrixObject2);\n\n var _super8 = _createSuper2(Attachment);\n\n function Attachment() {\n var _this11;\n\n _classCallCheck2(this, Attachment);\n\n var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _this11 = _super8.call(this, attributes);\n _this11.releaseFile = _this11.releaseFile.bind(_assertThisInitialized2(_this11));\n _this11.attributes = Hash.box(attributes);\n\n _this11.didChangeAttributes();\n\n return _this11;\n }\n\n _createClass2(Attachment, [{\n key: \"getAttribute\",\n value: function getAttribute(attribute) {\n return this.attributes.get(attribute);\n }\n }, {\n key: \"hasAttribute\",\n value: function hasAttribute(attribute) {\n return this.attributes.has(attribute);\n }\n }, {\n key: \"getAttributes\",\n value: function getAttributes() {\n return this.attributes.toObject();\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes() {\n var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var newAttributes = this.attributes.merge(attributes);\n\n if (!this.attributes.isEqualTo(newAttributes)) {\n var _this$previewDelegate, _this$previewDelegate2, _this$delegate, _this$delegate$attach;\n\n this.attributes = newAttributes;\n this.didChangeAttributes();\n (_this$previewDelegate = this.previewDelegate) === null || _this$previewDelegate === void 0 ? void 0 : (_this$previewDelegate2 = _this$previewDelegate.attachmentDidChangeAttributes) === null || _this$previewDelegate2 === void 0 ? void 0 : _this$previewDelegate2.call(_this$previewDelegate, this);\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$attach = _this$delegate.attachmentDidChangeAttributes) === null || _this$delegate$attach === void 0 ? void 0 : _this$delegate$attach.call(_this$delegate, this);\n }\n }\n }, {\n key: \"didChangeAttributes\",\n value: function didChangeAttributes() {\n if (this.isPreviewable()) {\n return this.preloadURL();\n }\n }\n }, {\n key: \"isPending\",\n value: function isPending() {\n return this.file != null && !(this.getURL() || this.getHref());\n }\n }, {\n key: \"isPreviewable\",\n value: function isPreviewable() {\n if (this.attributes.has(\"previewable\")) {\n return this.attributes.get(\"previewable\");\n } else {\n return Attachment.previewablePattern.test(this.getContentType());\n }\n }\n }, {\n key: \"getType\",\n value: function getType() {\n if (this.hasContent()) {\n return \"content\";\n } else if (this.isPreviewable()) {\n return \"preview\";\n } else {\n return \"file\";\n }\n }\n }, {\n key: \"getURL\",\n value: function getURL() {\n return this.attributes.get(\"url\");\n }\n }, {\n key: \"getHref\",\n value: function getHref() {\n return this.attributes.get(\"href\");\n }\n }, {\n key: \"getFilename\",\n value: function getFilename() {\n return this.attributes.get(\"filename\") || \"\";\n }\n }, {\n key: \"getFilesize\",\n value: function getFilesize() {\n return this.attributes.get(\"filesize\");\n }\n }, {\n key: \"getFormattedFilesize\",\n value: function getFormattedFilesize() {\n var filesize = this.attributes.get(\"filesize\");\n\n if (typeof filesize === \"number\") {\n return config.fileSize.formatter(filesize);\n } else {\n return \"\";\n }\n }\n }, {\n key: \"getExtension\",\n value: function getExtension() {\n var _this$getFilename$mat;\n\n return (_this$getFilename$mat = this.getFilename().match(/\\.(\\w+)$/)) === null || _this$getFilename$mat === void 0 ? void 0 : _this$getFilename$mat[1].toLowerCase();\n }\n }, {\n key: \"getContentType\",\n value: function getContentType() {\n return this.attributes.get(\"contentType\");\n }\n }, {\n key: \"hasContent\",\n value: function hasContent() {\n return this.attributes.has(\"content\");\n }\n }, {\n key: \"getContent\",\n value: function getContent() {\n return this.attributes.get(\"content\");\n }\n }, {\n key: \"getWidth\",\n value: function getWidth() {\n return this.attributes.get(\"width\");\n }\n }, {\n key: \"getHeight\",\n value: function getHeight() {\n return this.attributes.get(\"height\");\n }\n }, {\n key: \"getFile\",\n value: function getFile() {\n return this.file;\n }\n }, {\n key: \"setFile\",\n value: function setFile(file) {\n this.file = file;\n\n if (this.isPreviewable()) {\n return this.preloadFile();\n }\n }\n }, {\n key: \"releaseFile\",\n value: function releaseFile() {\n this.releasePreloadedFile();\n this.file = null;\n }\n }, {\n key: \"getUploadProgress\",\n value: function getUploadProgress() {\n return this.uploadProgress != null ? this.uploadProgress : 0;\n }\n }, {\n key: \"setUploadProgress\",\n value: function setUploadProgress(value) {\n if (this.uploadProgress !== value) {\n var _this$uploadProgressD, _this$uploadProgressD2;\n\n this.uploadProgress = value;\n return (_this$uploadProgressD = this.uploadProgressDelegate) === null || _this$uploadProgressD === void 0 ? void 0 : (_this$uploadProgressD2 = _this$uploadProgressD.attachmentDidChangeUploadProgress) === null || _this$uploadProgressD2 === void 0 ? void 0 : _this$uploadProgressD2.call(_this$uploadProgressD, this);\n }\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.getAttributes();\n }\n }, {\n key: \"getCacheKey\",\n value: function getCacheKey() {\n return [_get2(_getPrototypeOf2(Attachment.prototype), \"getCacheKey\", this).apply(this, arguments), this.attributes.getCacheKey(), this.getPreviewURL()].join(\"/\");\n } // Previewable\n\n }, {\n key: \"getPreviewURL\",\n value: function getPreviewURL() {\n return this.previewURL || this.preloadingURL;\n }\n }, {\n key: \"setPreviewURL\",\n value: function setPreviewURL(url) {\n if (url !== this.getPreviewURL()) {\n var _this$previewDelegate3, _this$previewDelegate4, _this$delegate2, _this$delegate2$attac;\n\n this.previewURL = url;\n (_this$previewDelegate3 = this.previewDelegate) === null || _this$previewDelegate3 === void 0 ? void 0 : (_this$previewDelegate4 = _this$previewDelegate3.attachmentDidChangeAttributes) === null || _this$previewDelegate4 === void 0 ? void 0 : _this$previewDelegate4.call(_this$previewDelegate3, this);\n return (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : (_this$delegate2$attac = _this$delegate2.attachmentDidChangePreviewURL) === null || _this$delegate2$attac === void 0 ? void 0 : _this$delegate2$attac.call(_this$delegate2, this);\n }\n }\n }, {\n key: \"preloadURL\",\n value: function preloadURL() {\n return this.preload(this.getURL(), this.releaseFile);\n }\n }, {\n key: \"preloadFile\",\n value: function preloadFile() {\n if (this.file) {\n this.fileObjectURL = URL.createObjectURL(this.file);\n return this.preload(this.fileObjectURL);\n }\n }\n }, {\n key: \"releasePreloadedFile\",\n value: function releasePreloadedFile() {\n if (this.fileObjectURL) {\n URL.revokeObjectURL(this.fileObjectURL);\n this.fileObjectURL = null;\n }\n }\n }, {\n key: \"preload\",\n value: function preload(url, callback) {\n var _this12 = this;\n\n if (url && url !== this.getPreviewURL()) {\n this.preloadingURL = url;\n var operation = new ImagePreloadOperation(url);\n return operation.then(function (_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n if (!_this12.getWidth() || !_this12.getHeight()) {\n _this12.setAttributes({\n width: width,\n height: height\n });\n }\n\n _this12.preloadingURL = null;\n\n _this12.setPreviewURL(url);\n\n return callback === null || callback === void 0 ? void 0 : callback();\n })[\"catch\"](function () {\n _this12.preloadingURL = null;\n return callback === null || callback === void 0 ? void 0 : callback();\n });\n }\n }\n }], [{\n key: \"attachmentForFile\",\n value: function attachmentForFile(file) {\n var attributes = this.attributesForFile(file);\n var attachment = new this(attributes);\n attachment.setFile(file);\n return attachment;\n }\n }, {\n key: \"attributesForFile\",\n value: function attributesForFile(file) {\n return new Hash({\n filename: file.name,\n filesize: file.size,\n contentType: file.type\n });\n }\n }, {\n key: \"fromJSON\",\n value: function fromJSON(attachmentJSON) {\n return new this(attachmentJSON);\n }\n }]);\n\n return Attachment;\n}(TrixObject);\n\n_defineProperty(Attachment, \"previewablePattern\", /^image(\\/(gif|png|jpe?g)|$)/);\n\nvar ManagedAttachment = /*#__PURE__*/function (_BasicObject5) {\n _inherits2(ManagedAttachment, _BasicObject5);\n\n var _super9 = _createSuper2(ManagedAttachment);\n\n function ManagedAttachment(attachmentManager, attachment) {\n var _this13;\n\n _classCallCheck2(this, ManagedAttachment);\n\n _this13 = _super9.apply(this, arguments);\n _this13.attachmentManager = attachmentManager;\n _this13.attachment = attachment;\n _this13.id = _this13.attachment.id;\n _this13.file = _this13.attachment.file;\n return _this13;\n }\n\n _createClass2(ManagedAttachment, [{\n key: \"remove\",\n value: function remove() {\n return this.attachmentManager.requestRemovalOfAttachment(this.attachment);\n }\n }]);\n\n return ManagedAttachment;\n}(BasicObject);\n\nManagedAttachment.proxyMethod(\"attachment.getAttribute\");\nManagedAttachment.proxyMethod(\"attachment.hasAttribute\");\nManagedAttachment.proxyMethod(\"attachment.setAttribute\");\nManagedAttachment.proxyMethod(\"attachment.getAttributes\");\nManagedAttachment.proxyMethod(\"attachment.setAttributes\");\nManagedAttachment.proxyMethod(\"attachment.isPending\");\nManagedAttachment.proxyMethod(\"attachment.isPreviewable\");\nManagedAttachment.proxyMethod(\"attachment.getURL\");\nManagedAttachment.proxyMethod(\"attachment.getHref\");\nManagedAttachment.proxyMethod(\"attachment.getFilename\");\nManagedAttachment.proxyMethod(\"attachment.getFilesize\");\nManagedAttachment.proxyMethod(\"attachment.getFormattedFilesize\");\nManagedAttachment.proxyMethod(\"attachment.getExtension\");\nManagedAttachment.proxyMethod(\"attachment.getContentType\");\nManagedAttachment.proxyMethod(\"attachment.getFile\");\nManagedAttachment.proxyMethod(\"attachment.setFile\");\nManagedAttachment.proxyMethod(\"attachment.releaseFile\");\nManagedAttachment.proxyMethod(\"attachment.getUploadProgress\");\nManagedAttachment.proxyMethod(\"attachment.setUploadProgress\");\n\nvar AttachmentManager = /*#__PURE__*/function (_BasicObject6) {\n _inherits2(AttachmentManager, _BasicObject6);\n\n var _super10 = _createSuper2(AttachmentManager);\n\n function AttachmentManager() {\n var _this14;\n\n _classCallCheck2(this, AttachmentManager);\n\n var attachments = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n _this14 = _super10.apply(this, arguments);\n _this14.managedAttachments = {};\n Array.from(attachments).forEach(function (attachment) {\n _this14.manageAttachment(attachment);\n });\n return _this14;\n }\n\n _createClass2(AttachmentManager, [{\n key: \"getAttachments\",\n value: function getAttachments() {\n var result = [];\n\n for (var _id in this.managedAttachments) {\n var attachment = this.managedAttachments[_id];\n result.push(attachment);\n }\n\n return result;\n }\n }, {\n key: \"manageAttachment\",\n value: function manageAttachment(attachment) {\n if (!this.managedAttachments[attachment.id]) {\n this.managedAttachments[attachment.id] = new ManagedAttachment(this, attachment);\n }\n\n return this.managedAttachments[attachment.id];\n }\n }, {\n key: \"attachmentIsManaged\",\n value: function attachmentIsManaged(attachment) {\n return attachment.id in this.managedAttachments;\n }\n }, {\n key: \"requestRemovalOfAttachment\",\n value: function requestRemovalOfAttachment(attachment) {\n if (this.attachmentIsManaged(attachment)) {\n var _this$delegate, _this$delegate$attach;\n\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$attach = _this$delegate.attachmentManagerDidRequestRemovalOfAttachment) === null || _this$delegate$attach === void 0 ? void 0 : _this$delegate$attach.call(_this$delegate, attachment);\n }\n }\n }, {\n key: \"unmanageAttachment\",\n value: function unmanageAttachment(attachment) {\n var managedAttachment = this.managedAttachments[attachment.id];\n delete this.managedAttachments[attachment.id];\n return managedAttachment;\n }\n }]);\n\n return AttachmentManager;\n}(BasicObject);\n\nvar Piece = /*#__PURE__*/function (_TrixObject3) {\n _inherits2(Piece, _TrixObject3);\n\n var _super11 = _createSuper2(Piece);\n\n function Piece(value) {\n var _this15;\n\n _classCallCheck2(this, Piece);\n\n var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _this15 = _super11.apply(this, arguments);\n _this15.attributes = Hash.box(attributes);\n return _this15;\n }\n\n _createClass2(Piece, [{\n key: \"copyWithAttributes\",\n value: function copyWithAttributes(attributes) {\n return new this.constructor(this.getValue(), attributes);\n }\n }, {\n key: \"copyWithAdditionalAttributes\",\n value: function copyWithAdditionalAttributes(attributes) {\n return this.copyWithAttributes(this.attributes.merge(attributes));\n }\n }, {\n key: \"copyWithoutAttribute\",\n value: function copyWithoutAttribute(attribute) {\n return this.copyWithAttributes(this.attributes.remove(attribute));\n }\n }, {\n key: \"copy\",\n value: function copy() {\n return this.copyWithAttributes(this.attributes);\n }\n }, {\n key: \"getAttribute\",\n value: function getAttribute(attribute) {\n return this.attributes.get(attribute);\n }\n }, {\n key: \"getAttributesHash\",\n value: function getAttributesHash() {\n return this.attributes;\n }\n }, {\n key: \"getAttributes\",\n value: function getAttributes() {\n return this.attributes.toObject();\n }\n }, {\n key: \"hasAttribute\",\n value: function hasAttribute(attribute) {\n return this.attributes.has(attribute);\n }\n }, {\n key: \"hasSameStringValueAsPiece\",\n value: function hasSameStringValueAsPiece(piece) {\n return piece && this.toString() === piece.toString();\n }\n }, {\n key: \"hasSameAttributesAsPiece\",\n value: function hasSameAttributesAsPiece(piece) {\n return piece && (this.attributes === piece.attributes || this.attributes.isEqualTo(piece.attributes));\n }\n }, {\n key: \"isBlockBreak\",\n value: function isBlockBreak() {\n return false;\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(piece) {\n return _get2(_getPrototypeOf2(Piece.prototype), \"isEqualTo\", this).apply(this, arguments) || this.hasSameConstructorAs(piece) && this.hasSameStringValueAsPiece(piece) && this.hasSameAttributesAsPiece(piece);\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n return this.length === 0;\n }\n }, {\n key: \"isSerializable\",\n value: function isSerializable() {\n return true;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n type: this.constructor.type,\n attributes: this.getAttributes()\n };\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {\n return {\n type: this.constructor.type,\n attributes: this.attributes.inspect()\n };\n } // Grouping\n\n }, {\n key: \"canBeGrouped\",\n value: function canBeGrouped() {\n return this.hasAttribute(\"href\");\n }\n }, {\n key: \"canBeGroupedWith\",\n value: function canBeGroupedWith(piece) {\n return this.getAttribute(\"href\") === piece.getAttribute(\"href\");\n } // Splittable\n\n }, {\n key: \"getLength\",\n value: function getLength() {\n return this.length;\n }\n }, {\n key: \"canBeConsolidatedWith\",\n value: function canBeConsolidatedWith(piece) {\n return false;\n }\n }], [{\n key: \"registerType\",\n value: function registerType(type, constructor) {\n constructor.type = type;\n this.types[type] = constructor;\n }\n }, {\n key: \"fromJSON\",\n value: function fromJSON(pieceJSON) {\n var constructor = this.types[pieceJSON.type];\n\n if (constructor) {\n return constructor.fromJSON(pieceJSON);\n }\n }\n }]);\n\n return Piece;\n}(TrixObject);\n\n_defineProperty(Piece, \"types\", {});\n\nvar AttachmentPiece = /*#__PURE__*/function (_Piece) {\n _inherits2(AttachmentPiece, _Piece);\n\n var _super12 = _createSuper2(AttachmentPiece);\n\n function AttachmentPiece(attachment) {\n var _this16;\n\n _classCallCheck2(this, AttachmentPiece);\n\n _this16 = _super12.apply(this, arguments);\n _this16.attachment = attachment;\n _this16.length = 1;\n\n _this16.ensureAttachmentExclusivelyHasAttribute(\"href\");\n\n if (!_this16.attachment.hasContent()) {\n _this16.removeProhibitedAttributes();\n }\n\n return _this16;\n }\n\n _createClass2(AttachmentPiece, [{\n key: \"ensureAttachmentExclusivelyHasAttribute\",\n value: function ensureAttachmentExclusivelyHasAttribute(attribute) {\n if (this.hasAttribute(attribute)) {\n if (!this.attachment.hasAttribute(attribute)) {\n this.attachment.setAttributes(this.attributes.slice(attribute));\n }\n\n this.attributes = this.attributes.remove(attribute);\n }\n }\n }, {\n key: \"removeProhibitedAttributes\",\n value: function removeProhibitedAttributes() {\n var attributes = this.attributes.slice(AttachmentPiece.permittedAttributes);\n\n if (!attributes.isEqualTo(this.attributes)) {\n this.attributes = attributes;\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue() {\n return this.attachment;\n }\n }, {\n key: \"isSerializable\",\n value: function isSerializable() {\n return !this.attachment.isPending();\n }\n }, {\n key: \"getCaption\",\n value: function getCaption() {\n return this.attributes.get(\"caption\") || \"\";\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(piece) {\n var _piece$attachment;\n\n return _get2(_getPrototypeOf2(AttachmentPiece.prototype), \"isEqualTo\", this).call(this, piece) && this.attachment.id === (piece === null || piece === void 0 ? void 0 : (_piece$attachment = piece.attachment) === null || _piece$attachment === void 0 ? void 0 : _piece$attachment.id);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return OBJECT_REPLACEMENT_CHARACTER;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var json = _get2(_getPrototypeOf2(AttachmentPiece.prototype), \"toJSON\", this).apply(this, arguments);\n\n json.attachment = this.attachment;\n return json;\n }\n }, {\n key: \"getCacheKey\",\n value: function getCacheKey() {\n return [_get2(_getPrototypeOf2(AttachmentPiece.prototype), \"getCacheKey\", this).apply(this, arguments), this.attachment.getCacheKey()].join(\"/\");\n }\n }, {\n key: \"toConsole\",\n value: function toConsole() {\n return JSON.stringify(this.toString());\n }\n }], [{\n key: \"fromJSON\",\n value: function fromJSON(pieceJSON) {\n return new this(Attachment.fromJSON(pieceJSON.attachment), pieceJSON.attributes);\n }\n }]);\n\n return AttachmentPiece;\n}(Piece);\n\n_defineProperty(AttachmentPiece, \"permittedAttributes\", [\"caption\", \"presentation\"]);\n\nPiece.registerType(\"attachment\", AttachmentPiece);\n\nvar StringPiece = /*#__PURE__*/function (_Piece2) {\n _inherits2(StringPiece, _Piece2);\n\n var _super13 = _createSuper2(StringPiece);\n\n function StringPiece(string) {\n var _this17;\n\n _classCallCheck2(this, StringPiece);\n\n _this17 = _super13.apply(this, arguments);\n _this17.string = normalizeNewlines(string);\n _this17.length = _this17.string.length;\n return _this17;\n }\n\n _createClass2(StringPiece, [{\n key: \"getValue\",\n value: function getValue() {\n return this.string;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.string.toString();\n }\n }, {\n key: \"isBlockBreak\",\n value: function isBlockBreak() {\n return this.toString() === \"\\n\" && this.getAttribute(\"blockBreak\") === true;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = _get2(_getPrototypeOf2(StringPiece.prototype), \"toJSON\", this).apply(this, arguments);\n\n result.string = this.string;\n return result;\n } // Splittable\n\n }, {\n key: \"canBeConsolidatedWith\",\n value: function canBeConsolidatedWith(piece) {\n return piece && this.hasSameConstructorAs(piece) && this.hasSameAttributesAsPiece(piece);\n }\n }, {\n key: \"consolidateWith\",\n value: function consolidateWith(piece) {\n return new this.constructor(this.toString() + piece.toString(), this.attributes);\n }\n }, {\n key: \"splitAtOffset\",\n value: function splitAtOffset(offset) {\n var left, right;\n\n if (offset === 0) {\n left = null;\n right = this;\n } else if (offset === this.length) {\n left = this;\n right = null;\n } else {\n left = new this.constructor(this.string.slice(0, offset), this.attributes);\n right = new this.constructor(this.string.slice(offset), this.attributes);\n }\n\n return [left, right];\n }\n }, {\n key: \"toConsole\",\n value: function toConsole() {\n var string = this.string;\n\n if (string.length > 15) {\n string = string.slice(0, 14) + \"…\";\n }\n\n return JSON.stringify(string.toString());\n }\n }], [{\n key: \"fromJSON\",\n value: function fromJSON(pieceJSON) {\n return new this(pieceJSON.string, pieceJSON.attributes);\n }\n }]);\n\n return StringPiece;\n}(Piece);\n\nPiece.registerType(\"string\", StringPiece);\n/* eslint-disable\n prefer-const,\n*/\n\nvar SplittableList = /*#__PURE__*/function (_TrixObject4) {\n _inherits2(SplittableList, _TrixObject4);\n\n var _super14 = _createSuper2(SplittableList);\n\n function SplittableList() {\n var _this18;\n\n _classCallCheck2(this, SplittableList);\n\n var objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n _this18 = _super14.apply(this, arguments);\n _this18.objects = objects.slice(0);\n _this18.length = _this18.objects.length;\n return _this18;\n }\n\n _createClass2(SplittableList, [{\n key: \"indexOf\",\n value: function indexOf(object) {\n return this.objects.indexOf(object);\n }\n }, {\n key: \"splice\",\n value: function splice() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return new this.constructor(spliceArray.apply(void 0, [this.objects].concat(args)));\n }\n }, {\n key: \"eachObject\",\n value: function eachObject(callback) {\n return this.objects.map(function (object, index) {\n return callback(object, index);\n });\n }\n }, {\n key: \"insertObjectAtIndex\",\n value: function insertObjectAtIndex(object, index) {\n return this.splice(index, 0, object);\n }\n }, {\n key: \"insertSplittableListAtIndex\",\n value: function insertSplittableListAtIndex(splittableList, index) {\n return this.splice.apply(this, [index, 0].concat(_toConsumableArray2(splittableList.objects)));\n }\n }, {\n key: \"insertSplittableListAtPosition\",\n value: function insertSplittableListAtPosition(splittableList, position) {\n var _this$splitObjectAtPo = this.splitObjectAtPosition(position),\n _this$splitObjectAtPo2 = _slicedToArray2(_this$splitObjectAtPo, 2),\n objects = _this$splitObjectAtPo2[0],\n index = _this$splitObjectAtPo2[1];\n\n return new this.constructor(objects).insertSplittableListAtIndex(splittableList, index);\n }\n }, {\n key: \"editObjectAtIndex\",\n value: function editObjectAtIndex(index, callback) {\n return this.replaceObjectAtIndex(callback(this.objects[index]), index);\n }\n }, {\n key: \"replaceObjectAtIndex\",\n value: function replaceObjectAtIndex(object, index) {\n return this.splice(index, 1, object);\n }\n }, {\n key: \"removeObjectAtIndex\",\n value: function removeObjectAtIndex(index) {\n return this.splice(index, 1);\n }\n }, {\n key: \"getObjectAtIndex\",\n value: function getObjectAtIndex(index) {\n return this.objects[index];\n }\n }, {\n key: \"getSplittableListInRange\",\n value: function getSplittableListInRange(range) {\n var _this$splitObjectsAtR = this.splitObjectsAtRange(range),\n _this$splitObjectsAtR2 = _slicedToArray2(_this$splitObjectsAtR, 3),\n objects = _this$splitObjectsAtR2[0],\n leftIndex = _this$splitObjectsAtR2[1],\n rightIndex = _this$splitObjectsAtR2[2];\n\n return new this.constructor(objects.slice(leftIndex, rightIndex + 1));\n }\n }, {\n key: \"selectSplittableList\",\n value: function selectSplittableList(test) {\n var objects = this.objects.filter(function (object) {\n return test(object);\n });\n return new this.constructor(objects);\n }\n }, {\n key: \"removeObjectsInRange\",\n value: function removeObjectsInRange(range) {\n var _this$splitObjectsAtR3 = this.splitObjectsAtRange(range),\n _this$splitObjectsAtR4 = _slicedToArray2(_this$splitObjectsAtR3, 3),\n objects = _this$splitObjectsAtR4[0],\n leftIndex = _this$splitObjectsAtR4[1],\n rightIndex = _this$splitObjectsAtR4[2];\n\n return new this.constructor(objects).splice(leftIndex, rightIndex - leftIndex + 1);\n }\n }, {\n key: \"transformObjectsInRange\",\n value: function transformObjectsInRange(range, transform) {\n var _this$splitObjectsAtR5 = this.splitObjectsAtRange(range),\n _this$splitObjectsAtR6 = _slicedToArray2(_this$splitObjectsAtR5, 3),\n objects = _this$splitObjectsAtR6[0],\n leftIndex = _this$splitObjectsAtR6[1],\n rightIndex = _this$splitObjectsAtR6[2];\n\n var transformedObjects = objects.map(function (object, index) {\n return leftIndex <= index && index <= rightIndex ? transform(object) : object;\n });\n return new this.constructor(transformedObjects);\n }\n }, {\n key: \"splitObjectsAtRange\",\n value: function splitObjectsAtRange(range) {\n var rightOuterIndex;\n\n var _this$splitObjectAtPo3 = this.splitObjectAtPosition(startOfRange(range)),\n _this$splitObjectAtPo4 = _slicedToArray2(_this$splitObjectAtPo3, 3),\n objects = _this$splitObjectAtPo4[0],\n leftInnerIndex = _this$splitObjectAtPo4[1],\n offset = _this$splitObjectAtPo4[2];\n\n var _this$constructor$spl = new this.constructor(objects).splitObjectAtPosition(endOfRange(range) + offset);\n\n var _this$constructor$spl2 = _slicedToArray2(_this$constructor$spl, 2);\n\n objects = _this$constructor$spl2[0];\n rightOuterIndex = _this$constructor$spl2[1];\n return [objects, leftInnerIndex, rightOuterIndex - 1];\n }\n }, {\n key: \"getObjectAtPosition\",\n value: function getObjectAtPosition(position) {\n var _this$findIndexAndOff = this.findIndexAndOffsetAtPosition(position),\n index = _this$findIndexAndOff.index;\n\n return this.objects[index];\n }\n }, {\n key: \"splitObjectAtPosition\",\n value: function splitObjectAtPosition(position) {\n var splitIndex, splitOffset;\n\n var _this$findIndexAndOff2 = this.findIndexAndOffsetAtPosition(position),\n index = _this$findIndexAndOff2.index,\n offset = _this$findIndexAndOff2.offset;\n\n var objects = this.objects.slice(0);\n\n if (index != null) {\n if (offset === 0) {\n splitIndex = index;\n splitOffset = 0;\n } else {\n var _object2 = this.getObjectAtIndex(index);\n\n var _object2$splitAtOffse = _object2.splitAtOffset(offset),\n _object2$splitAtOffse2 = _slicedToArray2(_object2$splitAtOffse, 2),\n leftObject = _object2$splitAtOffse2[0],\n rightObject = _object2$splitAtOffse2[1];\n\n objects.splice(index, 1, leftObject, rightObject);\n splitIndex = index + 1;\n splitOffset = leftObject.getLength() - offset;\n }\n } else {\n splitIndex = objects.length;\n splitOffset = 0;\n }\n\n return [objects, splitIndex, splitOffset];\n }\n }, {\n key: \"consolidate\",\n value: function consolidate() {\n var objects = [];\n var pendingObject = this.objects[0];\n this.objects.slice(1).forEach(function (object) {\n var _pendingObject$canBeC, _pendingObject;\n\n if ((_pendingObject$canBeC = (_pendingObject = pendingObject).canBeConsolidatedWith) !== null && _pendingObject$canBeC !== void 0 && _pendingObject$canBeC.call(_pendingObject, object)) {\n pendingObject = pendingObject.consolidateWith(object);\n } else {\n objects.push(pendingObject);\n pendingObject = object;\n }\n });\n\n if (pendingObject) {\n objects.push(pendingObject);\n }\n\n return new this.constructor(objects);\n }\n }, {\n key: \"consolidateFromIndexToIndex\",\n value: function consolidateFromIndexToIndex(startIndex, endIndex) {\n var objects = this.objects.slice(0);\n var objectsInRange = objects.slice(startIndex, endIndex + 1);\n var consolidatedInRange = new this.constructor(objectsInRange).consolidate().toArray();\n return this.splice.apply(this, [startIndex, objectsInRange.length].concat(_toConsumableArray2(consolidatedInRange)));\n }\n }, {\n key: \"findIndexAndOffsetAtPosition\",\n value: function findIndexAndOffsetAtPosition(position) {\n var index;\n var currentPosition = 0;\n\n for (index = 0; index < this.objects.length; index++) {\n var _object3 = this.objects[index];\n\n var nextPosition = currentPosition + _object3.getLength();\n\n if (currentPosition <= position && position < nextPosition) {\n return {\n index: index,\n offset: position - currentPosition\n };\n }\n\n currentPosition = nextPosition;\n }\n\n return {\n index: null,\n offset: null\n };\n }\n }, {\n key: \"findPositionAtIndexAndOffset\",\n value: function findPositionAtIndexAndOffset(index, offset) {\n var position = 0;\n\n for (var currentIndex = 0; currentIndex < this.objects.length; currentIndex++) {\n var _object4 = this.objects[currentIndex];\n\n if (currentIndex < index) {\n position += _object4.getLength();\n } else if (currentIndex === index) {\n position += offset;\n break;\n }\n }\n\n return position;\n }\n }, {\n key: \"getEndPosition\",\n value: function getEndPosition() {\n var _this19 = this;\n\n if (this.endPosition == null) {\n this.endPosition = 0;\n this.objects.forEach(function (object) {\n return _this19.endPosition += object.getLength();\n });\n }\n\n return this.endPosition;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.objects.join(\"\");\n }\n }, {\n key: \"toArray\",\n value: function toArray() {\n return this.objects.slice(0);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.toArray();\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(splittableList) {\n return _get2(_getPrototypeOf2(SplittableList.prototype), \"isEqualTo\", this).apply(this, arguments) || objectArraysAreEqual(this.objects, splittableList === null || splittableList === void 0 ? void 0 : splittableList.objects);\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {\n return {\n objects: \"[\".concat(this.objects.map(function (object) {\n return object.inspect();\n }).join(\", \"), \"]\")\n };\n }\n }], [{\n key: \"box\",\n value: function box(objects) {\n if (objects instanceof this) {\n return objects;\n } else {\n return new this(objects);\n }\n }\n }]);\n\n return SplittableList;\n}(TrixObject);\n\nvar objectArraysAreEqual = function objectArraysAreEqual(left) {\n var right = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n if (left.length !== right.length) {\n return false;\n }\n\n var result = true;\n\n for (var index = 0; index < left.length; index++) {\n var _object5 = left[index];\n\n if (result && !_object5.isEqualTo(right[index])) {\n result = false;\n }\n }\n\n return result;\n};\n\nvar startOfRange = function startOfRange(range) {\n return range[0];\n};\n\nvar endOfRange = function endOfRange(range) {\n return range[1];\n};\n\nvar Text = /*#__PURE__*/function (_TrixObject5) {\n _inherits2(Text, _TrixObject5);\n\n var _super15 = _createSuper2(Text);\n\n function Text() {\n var _this20;\n\n _classCallCheck2(this, Text);\n\n var pieces = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n _this20 = _super15.apply(this, arguments);\n var notEmpty = pieces.filter(function (piece) {\n return !piece.isEmpty();\n });\n _this20.pieceList = new SplittableList(notEmpty);\n return _this20;\n }\n\n _createClass2(Text, [{\n key: \"copy\",\n value: function copy() {\n return this.copyWithPieceList(this.pieceList);\n }\n }, {\n key: \"copyWithPieceList\",\n value: function copyWithPieceList(pieceList) {\n return new this.constructor(pieceList.consolidate().toArray());\n }\n }, {\n key: \"copyUsingObjectMap\",\n value: function copyUsingObjectMap(objectMap) {\n var pieces = this.getPieces().map(function (piece) {\n return objectMap.find(piece) || piece;\n });\n return new this.constructor(pieces);\n }\n }, {\n key: \"appendText\",\n value: function appendText(text) {\n return this.insertTextAtPosition(text, this.getLength());\n }\n }, {\n key: \"insertTextAtPosition\",\n value: function insertTextAtPosition(text, position) {\n return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(text.pieceList, position));\n }\n }, {\n key: \"removeTextAtRange\",\n value: function removeTextAtRange(range) {\n return this.copyWithPieceList(this.pieceList.removeObjectsInRange(range));\n }\n }, {\n key: \"replaceTextAtRange\",\n value: function replaceTextAtRange(text, range) {\n return this.removeTextAtRange(range).insertTextAtPosition(text, range[0]);\n }\n }, {\n key: \"moveTextFromRangeToPosition\",\n value: function moveTextFromRangeToPosition(range, position) {\n if (range[0] <= position && position <= range[1]) return;\n var text = this.getTextAtRange(range);\n var length = text.getLength();\n\n if (range[0] < position) {\n position -= length;\n }\n\n return this.removeTextAtRange(range).insertTextAtPosition(text, position);\n }\n }, {\n key: \"addAttributeAtRange\",\n value: function addAttributeAtRange(attribute, value, range) {\n var attributes = {};\n attributes[attribute] = value;\n return this.addAttributesAtRange(attributes, range);\n }\n }, {\n key: \"addAttributesAtRange\",\n value: function addAttributesAtRange(attributes, range) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(range, function (piece) {\n return piece.copyWithAdditionalAttributes(attributes);\n }));\n }\n }, {\n key: \"removeAttributeAtRange\",\n value: function removeAttributeAtRange(attribute, range) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(range, function (piece) {\n return piece.copyWithoutAttribute(attribute);\n }));\n }\n }, {\n key: \"setAttributesAtRange\",\n value: function setAttributesAtRange(attributes, range) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(range, function (piece) {\n return piece.copyWithAttributes(attributes);\n }));\n }\n }, {\n key: \"getAttributesAtPosition\",\n value: function getAttributesAtPosition(position) {\n var _this$pieceList$getOb;\n\n return ((_this$pieceList$getOb = this.pieceList.getObjectAtPosition(position)) === null || _this$pieceList$getOb === void 0 ? void 0 : _this$pieceList$getOb.getAttributes()) || {};\n }\n }, {\n key: \"getCommonAttributes\",\n value: function getCommonAttributes() {\n var objects = Array.from(this.pieceList.toArray()).map(function (piece) {\n return piece.getAttributes();\n });\n return Hash.fromCommonAttributesOfObjects(objects).toObject();\n }\n }, {\n key: \"getCommonAttributesAtRange\",\n value: function getCommonAttributesAtRange(range) {\n return this.getTextAtRange(range).getCommonAttributes() || {};\n }\n }, {\n key: \"getExpandedRangeForAttributeAtOffset\",\n value: function getExpandedRangeForAttributeAtOffset(attributeName, offset) {\n var right;\n var left = right = offset;\n var length = this.getLength();\n\n while (left > 0 && this.getCommonAttributesAtRange([left - 1, right])[attributeName]) {\n left--;\n }\n\n while (right < length && this.getCommonAttributesAtRange([offset, right + 1])[attributeName]) {\n right++;\n }\n\n return [left, right];\n }\n }, {\n key: \"getTextAtRange\",\n value: function getTextAtRange(range) {\n return this.copyWithPieceList(this.pieceList.getSplittableListInRange(range));\n }\n }, {\n key: \"getStringAtRange\",\n value: function getStringAtRange(range) {\n return this.pieceList.getSplittableListInRange(range).toString();\n }\n }, {\n key: \"getStringAtPosition\",\n value: function getStringAtPosition(position) {\n return this.getStringAtRange([position, position + 1]);\n }\n }, {\n key: \"startsWithString\",\n value: function startsWithString(string) {\n return this.getStringAtRange([0, string.length]) === string;\n }\n }, {\n key: \"endsWithString\",\n value: function endsWithString(string) {\n var length = this.getLength();\n return this.getStringAtRange([length - string.length, length]) === string;\n }\n }, {\n key: \"getAttachmentPieces\",\n value: function getAttachmentPieces() {\n return this.pieceList.toArray().filter(function (piece) {\n return !!piece.attachment;\n });\n }\n }, {\n key: \"getAttachments\",\n value: function getAttachments() {\n return this.getAttachmentPieces().map(function (piece) {\n return piece.attachment;\n });\n }\n }, {\n key: \"getAttachmentAndPositionById\",\n value: function getAttachmentAndPositionById(attachmentId) {\n var position = 0;\n\n var _iterator = _createForOfIteratorHelper2(this.pieceList.toArray()),\n _step2;\n\n try {\n for (_iterator.s(); !(_step2 = _iterator.n()).done;) {\n var piece = _step2.value;\n\n var _piece$attachment;\n\n if (((_piece$attachment = piece.attachment) === null || _piece$attachment === void 0 ? void 0 : _piece$attachment.id) === attachmentId) {\n return {\n attachment: piece.attachment,\n position: position\n };\n }\n\n position += piece.length;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return {\n attachment: null,\n position: null\n };\n }\n }, {\n key: \"getAttachmentById\",\n value: function getAttachmentById(attachmentId) {\n var _this$getAttachmentAn = this.getAttachmentAndPositionById(attachmentId),\n attachment = _this$getAttachmentAn.attachment;\n\n return attachment;\n }\n }, {\n key: \"getRangeOfAttachment\",\n value: function getRangeOfAttachment(attachment) {\n var attachmentAndPosition = this.getAttachmentAndPositionById(attachment.id);\n var position = attachmentAndPosition.position;\n attachment = attachmentAndPosition.attachment;\n\n if (attachment) {\n return [position, position + 1];\n }\n }\n }, {\n key: \"updateAttributesForAttachment\",\n value: function updateAttributesForAttachment(attributes, attachment) {\n var range = this.getRangeOfAttachment(attachment);\n\n if (range) {\n return this.addAttributesAtRange(attributes, range);\n } else {\n return this;\n }\n }\n }, {\n key: \"getLength\",\n value: function getLength() {\n return this.pieceList.getEndPosition();\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n return this.getLength() === 0;\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(text) {\n var _text$pieceList;\n\n return _get2(_getPrototypeOf2(Text.prototype), \"isEqualTo\", this).call(this, text) || (text === null || text === void 0 ? void 0 : (_text$pieceList = text.pieceList) === null || _text$pieceList === void 0 ? void 0 : _text$pieceList.isEqualTo(this.pieceList));\n }\n }, {\n key: \"isBlockBreak\",\n value: function isBlockBreak() {\n return this.getLength() === 1 && this.pieceList.getObjectAtIndex(0).isBlockBreak();\n }\n }, {\n key: \"eachPiece\",\n value: function eachPiece(callback) {\n return this.pieceList.eachObject(callback);\n }\n }, {\n key: \"getPieces\",\n value: function getPieces() {\n return this.pieceList.toArray();\n }\n }, {\n key: \"getPieceAtPosition\",\n value: function getPieceAtPosition(position) {\n return this.pieceList.getObjectAtPosition(position);\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {\n return {\n pieceList: this.pieceList.inspect()\n };\n }\n }, {\n key: \"toSerializableText\",\n value: function toSerializableText() {\n var pieceList = this.pieceList.selectSplittableList(function (piece) {\n return piece.isSerializable();\n });\n return this.copyWithPieceList(pieceList);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.pieceList.toString();\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.pieceList.toJSON();\n }\n }, {\n key: \"toConsole\",\n value: function toConsole() {\n return JSON.stringify(this.pieceList.toArray().map(function (piece) {\n return JSON.parse(piece.toConsole());\n }));\n } // BIDI\n\n }, {\n key: \"getDirection\",\n value: function getDirection() {\n return _getDirection(this.toString());\n }\n }, {\n key: \"isRTL\",\n value: function isRTL() {\n return this.getDirection() === \"rtl\";\n }\n }], [{\n key: \"textForAttachmentWithAttributes\",\n value: function textForAttachmentWithAttributes(attachment, attributes) {\n var piece = new AttachmentPiece(attachment, attributes);\n return new this([piece]);\n }\n }, {\n key: \"textForStringWithAttributes\",\n value: function textForStringWithAttributes(string, attributes) {\n var piece = new StringPiece(string, attributes);\n return new this([piece]);\n }\n }, {\n key: \"fromJSON\",\n value: function fromJSON(textJSON) {\n var pieces = Array.from(textJSON).map(function (pieceJSON) {\n return Piece.fromJSON(pieceJSON);\n });\n return new this(pieces);\n }\n }]);\n\n return Text;\n}(TrixObject);\n\nvar Block = /*#__PURE__*/function (_TrixObject6) {\n _inherits2(Block, _TrixObject6);\n\n var _super16 = _createSuper2(Block);\n\n function Block(text, attributes) {\n var _this21;\n\n _classCallCheck2(this, Block);\n\n _this21 = _super16.apply(this, arguments);\n _this21.text = applyBlockBreakToText(text || new Text());\n _this21.attributes = attributes || [];\n return _this21;\n }\n\n _createClass2(Block, [{\n key: \"isEmpty\",\n value: function isEmpty() {\n return this.text.isBlockBreak();\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(block) {\n if (_get2(_getPrototypeOf2(Block.prototype), \"isEqualTo\", this).call(this, block)) return true;\n return this.text.isEqualTo(block === null || block === void 0 ? void 0 : block.text) && arraysAreEqual(this.attributes, block === null || block === void 0 ? void 0 : block.attributes);\n }\n }, {\n key: \"copyWithText\",\n value: function copyWithText(text) {\n return new Block(text, this.attributes);\n }\n }, {\n key: \"copyWithoutText\",\n value: function copyWithoutText() {\n return this.copyWithText(null);\n }\n }, {\n key: \"copyWithAttributes\",\n value: function copyWithAttributes(attributes) {\n return new Block(this.text, attributes);\n }\n }, {\n key: \"copyWithoutAttributes\",\n value: function copyWithoutAttributes() {\n return this.copyWithAttributes(null);\n }\n }, {\n key: \"copyUsingObjectMap\",\n value: function copyUsingObjectMap(objectMap) {\n var mappedText = objectMap.find(this.text);\n\n if (mappedText) {\n return this.copyWithText(mappedText);\n } else {\n return this.copyWithText(this.text.copyUsingObjectMap(objectMap));\n }\n }\n }, {\n key: \"addAttribute\",\n value: function addAttribute(attribute) {\n var attributes = this.attributes.concat(expandAttribute(attribute));\n return this.copyWithAttributes(attributes);\n }\n }, {\n key: \"removeAttribute\",\n value: function removeAttribute(attribute) {\n var _getBlockConfig4 = getBlockConfig(attribute),\n listAttribute = _getBlockConfig4.listAttribute;\n\n var attributes = removeLastValue(removeLastValue(this.attributes, attribute), listAttribute);\n return this.copyWithAttributes(attributes);\n }\n }, {\n key: \"removeLastAttribute\",\n value: function removeLastAttribute() {\n return this.removeAttribute(this.getLastAttribute());\n }\n }, {\n key: \"getLastAttribute\",\n value: function getLastAttribute() {\n return getLastElement(this.attributes);\n }\n }, {\n key: \"getAttributes\",\n value: function getAttributes() {\n return this.attributes.slice(0);\n }\n }, {\n key: \"getAttributeLevel\",\n value: function getAttributeLevel() {\n return this.attributes.length;\n }\n }, {\n key: \"getAttributeAtLevel\",\n value: function getAttributeAtLevel(level) {\n return this.attributes[level - 1];\n }\n }, {\n key: \"hasAttribute\",\n value: function hasAttribute(attributeName) {\n return this.attributes.includes(attributeName);\n }\n }, {\n key: \"hasAttributes\",\n value: function hasAttributes() {\n return this.getAttributeLevel() > 0;\n }\n }, {\n key: \"getLastNestableAttribute\",\n value: function getLastNestableAttribute() {\n return getLastElement(this.getNestableAttributes());\n }\n }, {\n key: \"getNestableAttributes\",\n value: function getNestableAttributes() {\n return this.attributes.filter(function (attribute) {\n return getBlockConfig(attribute).nestable;\n });\n }\n }, {\n key: \"getNestingLevel\",\n value: function getNestingLevel() {\n return this.getNestableAttributes().length;\n }\n }, {\n key: \"decreaseNestingLevel\",\n value: function decreaseNestingLevel() {\n var attribute = this.getLastNestableAttribute();\n\n if (attribute) {\n return this.removeAttribute(attribute);\n } else {\n return this;\n }\n }\n }, {\n key: \"increaseNestingLevel\",\n value: function increaseNestingLevel() {\n var attribute = this.getLastNestableAttribute();\n\n if (attribute) {\n var index = this.attributes.lastIndexOf(attribute);\n\n var _attributes = spliceArray.apply(void 0, [this.attributes, index + 1, 0].concat(_toConsumableArray2(expandAttribute(attribute))));\n\n return this.copyWithAttributes(_attributes);\n } else {\n return this;\n }\n }\n }, {\n key: \"getListItemAttributes\",\n value: function getListItemAttributes() {\n return this.attributes.filter(function (attribute) {\n return getBlockConfig(attribute).listAttribute;\n });\n }\n }, {\n key: \"isListItem\",\n value: function isListItem() {\n var _getBlockConfig;\n\n return (_getBlockConfig = getBlockConfig(this.getLastAttribute())) === null || _getBlockConfig === void 0 ? void 0 : _getBlockConfig.listAttribute;\n }\n }, {\n key: \"isTerminalBlock\",\n value: function isTerminalBlock() {\n var _getBlockConfig2;\n\n return (_getBlockConfig2 = getBlockConfig(this.getLastAttribute())) === null || _getBlockConfig2 === void 0 ? void 0 : _getBlockConfig2.terminal;\n }\n }, {\n key: \"breaksOnReturn\",\n value: function breaksOnReturn() {\n var _getBlockConfig3;\n\n return (_getBlockConfig3 = getBlockConfig(this.getLastAttribute())) === null || _getBlockConfig3 === void 0 ? void 0 : _getBlockConfig3.breakOnReturn;\n }\n }, {\n key: \"findLineBreakInDirectionFromPosition\",\n value: function findLineBreakInDirectionFromPosition(direction, position) {\n var string = this.toString();\n var result;\n\n switch (direction) {\n case \"forward\":\n result = string.indexOf(\"\\n\", position);\n break;\n\n case \"backward\":\n result = string.slice(0, position).lastIndexOf(\"\\n\");\n }\n\n if (result !== -1) {\n return result;\n }\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {\n return {\n text: this.text.inspect(),\n attributes: this.attributes\n };\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.text.toString();\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n text: this.text,\n attributes: this.attributes\n };\n } // BIDI\n\n }, {\n key: \"getDirection\",\n value: function getDirection() {\n return this.text.getDirection();\n }\n }, {\n key: \"isRTL\",\n value: function isRTL() {\n return this.text.isRTL();\n } // Splittable\n\n }, {\n key: \"getLength\",\n value: function getLength() {\n return this.text.getLength();\n }\n }, {\n key: \"canBeConsolidatedWith\",\n value: function canBeConsolidatedWith(block) {\n return !this.hasAttributes() && !block.hasAttributes() && this.getDirection() === block.getDirection();\n }\n }, {\n key: \"consolidateWith\",\n value: function consolidateWith(block) {\n var newlineText = Text.textForStringWithAttributes(\"\\n\");\n var text = this.getTextWithoutBlockBreak().appendText(newlineText);\n return this.copyWithText(text.appendText(block.text));\n }\n }, {\n key: \"splitAtOffset\",\n value: function splitAtOffset(offset) {\n var left, right;\n\n if (offset === 0) {\n left = null;\n right = this;\n } else if (offset === this.getLength()) {\n left = this;\n right = null;\n } else {\n left = this.copyWithText(this.text.getTextAtRange([0, offset]));\n right = this.copyWithText(this.text.getTextAtRange([offset, this.getLength()]));\n }\n\n return [left, right];\n }\n }, {\n key: \"getBlockBreakPosition\",\n value: function getBlockBreakPosition() {\n return this.text.getLength() - 1;\n }\n }, {\n key: \"getTextWithoutBlockBreak\",\n value: function getTextWithoutBlockBreak() {\n if (textEndsInBlockBreak(this.text)) {\n return this.text.getTextAtRange([0, this.getBlockBreakPosition()]);\n } else {\n return this.text.copy();\n }\n } // Grouping\n\n }, {\n key: \"canBeGrouped\",\n value: function canBeGrouped(depth) {\n return this.attributes[depth];\n }\n }, {\n key: \"canBeGroupedWith\",\n value: function canBeGroupedWith(otherBlock, depth) {\n var otherAttributes = otherBlock.getAttributes();\n var otherAttribute = otherAttributes[depth];\n var attribute = this.attributes[depth];\n return attribute === otherAttribute && !(getBlockConfig(attribute).group === false && !getListAttributeNames().includes(otherAttributes[depth + 1])) && (this.getDirection() === otherBlock.getDirection() || otherBlock.isEmpty());\n }\n }], [{\n key: \"fromJSON\",\n value: function fromJSON(blockJSON) {\n var text = Text.fromJSON(blockJSON.text);\n return new this(text, blockJSON.attributes);\n }\n }]);\n\n return Block;\n}(TrixObject); // Block breaks\n\n\nvar applyBlockBreakToText = function applyBlockBreakToText(text) {\n text = unmarkExistingInnerBlockBreaksInText(text);\n text = addBlockBreakToText(text);\n return text;\n};\n\nvar unmarkExistingInnerBlockBreaksInText = function unmarkExistingInnerBlockBreaksInText(text) {\n var modified = false;\n var pieces = text.getPieces();\n var innerPieces = pieces.slice(0, pieces.length - 1);\n var lastPiece = pieces[pieces.length - 1];\n if (!lastPiece) return text;\n innerPieces = innerPieces.map(function (piece) {\n if (piece.isBlockBreak()) {\n modified = true;\n return unmarkBlockBreakPiece(piece);\n } else {\n return piece;\n }\n });\n\n if (modified) {\n return new Text([].concat(_toConsumableArray2(innerPieces), [lastPiece]));\n } else {\n return text;\n }\n};\n\nvar blockBreakText = Text.textForStringWithAttributes(\"\\n\", {\n blockBreak: true\n});\n\nvar addBlockBreakToText = function addBlockBreakToText(text) {\n if (textEndsInBlockBreak(text)) {\n return text;\n } else {\n return text.appendText(blockBreakText);\n }\n};\n\nvar textEndsInBlockBreak = function textEndsInBlockBreak(text) {\n var length = text.getLength();\n\n if (length === 0) {\n return false;\n }\n\n var endText = text.getTextAtRange([length - 1, length]);\n return endText.isBlockBreak();\n};\n\nvar unmarkBlockBreakPiece = function unmarkBlockBreakPiece(piece) {\n return piece.copyWithoutAttribute(\"blockBreak\");\n}; // Attributes\n\n\nvar expandAttribute = function expandAttribute(attribute) {\n var _getBlockConfig5 = getBlockConfig(attribute),\n listAttribute = _getBlockConfig5.listAttribute;\n\n if (listAttribute) {\n return [listAttribute, attribute];\n } else {\n return [attribute];\n }\n}; // Array helpers\n\n\nvar getLastElement = function getLastElement(array) {\n return array.slice(-1)[0];\n};\n\nvar removeLastValue = function removeLastValue(array, value) {\n var index = array.lastIndexOf(value);\n\n if (index === -1) {\n return array;\n } else {\n return spliceArray(array, index, 1);\n }\n};\n\nvar ObjectMap = /*#__PURE__*/function (_BasicObject7) {\n _inherits2(ObjectMap, _BasicObject7);\n\n var _super17 = _createSuper2(ObjectMap);\n\n function ObjectMap() {\n var _this22;\n\n _classCallCheck2(this, ObjectMap);\n\n var objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n _this22 = _super17.apply(this, arguments);\n _this22.objects = {};\n Array.from(objects).forEach(function (object) {\n var hash = JSON.stringify(object);\n\n if (_this22.objects[hash] == null) {\n _this22.objects[hash] = object;\n }\n });\n return _this22;\n }\n\n _createClass2(ObjectMap, [{\n key: \"find\",\n value: function find(object) {\n var hash = JSON.stringify(object);\n return this.objects[hash];\n }\n }]);\n\n return ObjectMap;\n}(BasicObject);\n\nvar Document = /*#__PURE__*/function (_TrixObject7) {\n _inherits2(Document, _TrixObject7);\n\n var _super18 = _createSuper2(Document);\n\n function Document() {\n var _this23;\n\n _classCallCheck2(this, Document);\n\n var blocks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n _this23 = _super18.apply(this, arguments);\n\n if (blocks.length === 0) {\n blocks = [new Block()];\n }\n\n _this23.blockList = SplittableList.box(blocks);\n return _this23;\n }\n\n _createClass2(Document, [{\n key: \"isEmpty\",\n value: function isEmpty() {\n var block = this.getBlockAtIndex(0);\n return this.blockList.length === 1 && block.isEmpty() && !block.hasAttributes();\n }\n }, {\n key: \"copy\",\n value: function copy() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var blocks = options.consolidateBlocks ? this.blockList.consolidate().toArray() : this.blockList.toArray();\n return new this.constructor(blocks);\n }\n }, {\n key: \"copyUsingObjectsFromDocument\",\n value: function copyUsingObjectsFromDocument(sourceDocument) {\n var objectMap = new ObjectMap(sourceDocument.getObjects());\n return this.copyUsingObjectMap(objectMap);\n }\n }, {\n key: \"copyUsingObjectMap\",\n value: function copyUsingObjectMap(objectMap) {\n var blocks = this.getBlocks().map(function (block) {\n var mappedBlock = objectMap.find(block);\n return mappedBlock || block.copyUsingObjectMap(objectMap);\n });\n return new this.constructor(blocks);\n }\n }, {\n key: \"copyWithBaseBlockAttributes\",\n value: function copyWithBaseBlockAttributes() {\n var blockAttributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var blocks = this.getBlocks().map(function (block) {\n var attributes = blockAttributes.concat(block.getAttributes());\n return block.copyWithAttributes(attributes);\n });\n return new this.constructor(blocks);\n }\n }, {\n key: \"replaceBlock\",\n value: function replaceBlock(oldBlock, newBlock) {\n var index = this.blockList.indexOf(oldBlock);\n\n if (index === -1) {\n return this;\n }\n\n return new this.constructor(this.blockList.replaceObjectAtIndex(newBlock, index));\n }\n }, {\n key: \"insertDocumentAtRange\",\n value: function insertDocumentAtRange(document, range) {\n var blockList = document.blockList;\n range = normalizeRange(range);\n\n var _range = range,\n _range2 = _slicedToArray2(_range, 1),\n position = _range2[0];\n\n var _this$locationFromPos = this.locationFromPosition(position),\n index = _this$locationFromPos.index,\n offset = _this$locationFromPos.offset;\n\n var result = this;\n var block = this.getBlockAtPosition(position);\n\n if (rangeIsCollapsed(range) && block.isEmpty() && !block.hasAttributes()) {\n result = new this.constructor(result.blockList.removeObjectAtIndex(index));\n } else if (block.getBlockBreakPosition() === offset) {\n position++;\n }\n\n result = result.removeTextAtRange(range);\n return new this.constructor(result.blockList.insertSplittableListAtPosition(blockList, position));\n }\n }, {\n key: \"mergeDocumentAtRange\",\n value: function mergeDocumentAtRange(document, range) {\n var formattedDocument, result;\n range = normalizeRange(range);\n\n var _range3 = range,\n _range4 = _slicedToArray2(_range3, 1),\n startPosition = _range4[0];\n\n var startLocation = this.locationFromPosition(startPosition);\n var blockAttributes = this.getBlockAtIndex(startLocation.index).getAttributes();\n var baseBlockAttributes = document.getBaseBlockAttributes();\n var trailingBlockAttributes = blockAttributes.slice(-baseBlockAttributes.length);\n\n if (arraysAreEqual(baseBlockAttributes, trailingBlockAttributes)) {\n var leadingBlockAttributes = blockAttributes.slice(0, -baseBlockAttributes.length);\n formattedDocument = document.copyWithBaseBlockAttributes(leadingBlockAttributes);\n } else {\n formattedDocument = document.copy({\n consolidateBlocks: true\n }).copyWithBaseBlockAttributes(blockAttributes);\n }\n\n var blockCount = formattedDocument.getBlockCount();\n var firstBlock = formattedDocument.getBlockAtIndex(0);\n\n if (arraysAreEqual(blockAttributes, firstBlock.getAttributes())) {\n var firstText = firstBlock.getTextWithoutBlockBreak();\n result = this.insertTextAtRange(firstText, range);\n\n if (blockCount > 1) {\n formattedDocument = new this.constructor(formattedDocument.getBlocks().slice(1));\n var position = startPosition + firstText.getLength();\n result = result.insertDocumentAtRange(formattedDocument, position);\n }\n } else {\n result = this.insertDocumentAtRange(formattedDocument, range);\n }\n\n return result;\n }\n }, {\n key: \"insertTextAtRange\",\n value: function insertTextAtRange(text, range) {\n range = normalizeRange(range);\n\n var _range5 = range,\n _range6 = _slicedToArray2(_range5, 1),\n startPosition = _range6[0];\n\n var _this$locationFromPos2 = this.locationFromPosition(startPosition),\n index = _this$locationFromPos2.index,\n offset = _this$locationFromPos2.offset;\n\n var document = this.removeTextAtRange(range);\n return new this.constructor(document.blockList.editObjectAtIndex(index, function (block) {\n return block.copyWithText(block.text.insertTextAtPosition(text, offset));\n }));\n }\n }, {\n key: \"removeTextAtRange\",\n value: function removeTextAtRange(range) {\n var blocks;\n range = normalizeRange(range);\n\n var _range7 = range,\n _range8 = _slicedToArray2(_range7, 2),\n leftPosition = _range8[0],\n rightPosition = _range8[1];\n\n if (rangeIsCollapsed(range)) {\n return this;\n }\n\n var _Array$from2 = Array.from(this.locationRangeFromRange(range)),\n _Array$from3 = _slicedToArray2(_Array$from2, 2),\n leftLocation = _Array$from3[0],\n rightLocation = _Array$from3[1];\n\n var leftIndex = leftLocation.index;\n var leftOffset = leftLocation.offset;\n var leftBlock = this.getBlockAtIndex(leftIndex);\n var rightIndex = rightLocation.index;\n var rightOffset = rightLocation.offset;\n var rightBlock = this.getBlockAtIndex(rightIndex);\n var removeRightNewline = rightPosition - leftPosition === 1 && leftBlock.getBlockBreakPosition() === leftOffset && rightBlock.getBlockBreakPosition() !== rightOffset && rightBlock.text.getStringAtPosition(rightOffset) === \"\\n\";\n\n if (removeRightNewline) {\n blocks = this.blockList.editObjectAtIndex(rightIndex, function (block) {\n return block.copyWithText(block.text.removeTextAtRange([rightOffset, rightOffset + 1]));\n });\n } else {\n var block;\n var leftText = leftBlock.text.getTextAtRange([0, leftOffset]);\n var rightText = rightBlock.text.getTextAtRange([rightOffset, rightBlock.getLength()]);\n var text = leftText.appendText(rightText);\n var removingLeftBlock = leftIndex !== rightIndex && leftOffset === 0;\n var useRightBlock = removingLeftBlock && leftBlock.getAttributeLevel() >= rightBlock.getAttributeLevel();\n\n if (useRightBlock) {\n block = rightBlock.copyWithText(text);\n } else {\n block = leftBlock.copyWithText(text);\n }\n\n var affectedBlockCount = rightIndex + 1 - leftIndex;\n blocks = this.blockList.splice(leftIndex, affectedBlockCount, block);\n }\n\n return new this.constructor(blocks);\n }\n }, {\n key: \"moveTextFromRangeToPosition\",\n value: function moveTextFromRangeToPosition(range, position) {\n var text;\n range = normalizeRange(range);\n\n var _range9 = range,\n _range10 = _slicedToArray2(_range9, 2),\n startPosition = _range10[0],\n endPosition = _range10[1];\n\n if (startPosition <= position && position <= endPosition) {\n return this;\n }\n\n var document = this.getDocumentAtRange(range);\n var result = this.removeTextAtRange(range);\n var movingRightward = startPosition < position;\n\n if (movingRightward) {\n position -= document.getLength();\n }\n\n var _document$getBlocks = document.getBlocks(),\n _document$getBlocks2 = _toArray2(_document$getBlocks),\n firstBlock = _document$getBlocks2[0],\n blocks = _document$getBlocks2.slice(1);\n\n if (blocks.length === 0) {\n text = firstBlock.getTextWithoutBlockBreak();\n\n if (movingRightward) {\n position += 1;\n }\n } else {\n text = firstBlock.text;\n }\n\n result = result.insertTextAtRange(text, position);\n\n if (blocks.length === 0) {\n return result;\n }\n\n document = new this.constructor(blocks);\n position += text.getLength();\n return result.insertDocumentAtRange(document, position);\n }\n }, {\n key: \"addAttributeAtRange\",\n value: function addAttributeAtRange(attribute, value, range) {\n var blockList = this.blockList;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n return blockList = blockList.editObjectAtIndex(index, function () {\n if (getBlockConfig(attribute)) {\n return block.addAttribute(attribute, value);\n } else {\n if (textRange[0] === textRange[1]) {\n return block;\n } else {\n return block.copyWithText(block.text.addAttributeAtRange(attribute, value, textRange));\n }\n }\n });\n });\n return new this.constructor(blockList);\n }\n }, {\n key: \"addAttribute\",\n value: function addAttribute(attribute, value) {\n var blockList = this.blockList;\n this.eachBlock(function (block, index) {\n return blockList = blockList.editObjectAtIndex(index, function () {\n return block.addAttribute(attribute, value);\n });\n });\n return new this.constructor(blockList);\n }\n }, {\n key: \"removeAttributeAtRange\",\n value: function removeAttributeAtRange(attribute, range) {\n var blockList = this.blockList;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n if (getBlockConfig(attribute)) {\n blockList = blockList.editObjectAtIndex(index, function () {\n return block.removeAttribute(attribute);\n });\n } else if (textRange[0] !== textRange[1]) {\n blockList = blockList.editObjectAtIndex(index, function () {\n return block.copyWithText(block.text.removeAttributeAtRange(attribute, textRange));\n });\n }\n });\n return new this.constructor(blockList);\n }\n }, {\n key: \"updateAttributesForAttachment\",\n value: function updateAttributesForAttachment(attributes, attachment) {\n var range = this.getRangeOfAttachment(attachment);\n\n var _Array$from4 = Array.from(range),\n _Array$from5 = _slicedToArray2(_Array$from4, 1),\n startPosition = _Array$from5[0];\n\n var _this$locationFromPos3 = this.locationFromPosition(startPosition),\n index = _this$locationFromPos3.index;\n\n var text = this.getTextAtIndex(index);\n return new this.constructor(this.blockList.editObjectAtIndex(index, function (block) {\n return block.copyWithText(text.updateAttributesForAttachment(attributes, attachment));\n }));\n }\n }, {\n key: \"removeAttributeForAttachment\",\n value: function removeAttributeForAttachment(attribute, attachment) {\n var range = this.getRangeOfAttachment(attachment);\n return this.removeAttributeAtRange(attribute, range);\n }\n }, {\n key: \"insertBlockBreakAtRange\",\n value: function insertBlockBreakAtRange(range) {\n var blocks;\n range = normalizeRange(range);\n\n var _range11 = range,\n _range12 = _slicedToArray2(_range11, 1),\n startPosition = _range12[0];\n\n var _this$locationFromPos4 = this.locationFromPosition(startPosition),\n offset = _this$locationFromPos4.offset;\n\n var document = this.removeTextAtRange(range);\n\n if (offset === 0) {\n blocks = [new Block()];\n }\n\n return new this.constructor(document.blockList.insertSplittableListAtPosition(new SplittableList(blocks), startPosition));\n }\n }, {\n key: \"applyBlockAttributeAtRange\",\n value: function applyBlockAttributeAtRange(attributeName, value, range) {\n var expanded = this.expandRangeToLineBreaksAndSplitBlocks(range);\n var document = expanded.document;\n range = expanded.range;\n var blockConfig = getBlockConfig(attributeName);\n\n if (blockConfig.listAttribute) {\n document = document.removeLastListAttributeAtRange(range, {\n exceptAttributeName: attributeName\n });\n var converted = document.convertLineBreaksToBlockBreaksInRange(range);\n document = converted.document;\n range = converted.range;\n } else if (blockConfig.exclusive) {\n document = document.removeBlockAttributesAtRange(range);\n } else if (blockConfig.terminal) {\n document = document.removeLastTerminalAttributeAtRange(range);\n } else {\n document = document.consolidateBlocksAtRange(range);\n }\n\n return document.addAttributeAtRange(attributeName, value, range);\n }\n }, {\n key: \"removeLastListAttributeAtRange\",\n value: function removeLastListAttributeAtRange(range) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var blockList = this.blockList;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n var lastAttributeName = block.getLastAttribute();\n\n if (!lastAttributeName) {\n return;\n }\n\n if (!getBlockConfig(lastAttributeName).listAttribute) {\n return;\n }\n\n if (lastAttributeName === options.exceptAttributeName) {\n return;\n }\n\n blockList = blockList.editObjectAtIndex(index, function () {\n return block.removeAttribute(lastAttributeName);\n });\n });\n return new this.constructor(blockList);\n }\n }, {\n key: \"removeLastTerminalAttributeAtRange\",\n value: function removeLastTerminalAttributeAtRange(range) {\n var blockList = this.blockList;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n var lastAttributeName = block.getLastAttribute();\n\n if (!lastAttributeName) {\n return;\n }\n\n if (!getBlockConfig(lastAttributeName).terminal) {\n return;\n }\n\n blockList = blockList.editObjectAtIndex(index, function () {\n return block.removeAttribute(lastAttributeName);\n });\n });\n return new this.constructor(blockList);\n }\n }, {\n key: \"removeBlockAttributesAtRange\",\n value: function removeBlockAttributesAtRange(range) {\n var blockList = this.blockList;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n if (block.hasAttributes()) {\n blockList = blockList.editObjectAtIndex(index, function () {\n return block.copyWithoutAttributes();\n });\n }\n });\n return new this.constructor(blockList);\n }\n }, {\n key: \"expandRangeToLineBreaksAndSplitBlocks\",\n value: function expandRangeToLineBreaksAndSplitBlocks(range) {\n var position;\n range = normalizeRange(range);\n\n var _range13 = range,\n _range14 = _slicedToArray2(_range13, 2),\n startPosition = _range14[0],\n endPosition = _range14[1];\n\n var startLocation = this.locationFromPosition(startPosition);\n var endLocation = this.locationFromPosition(endPosition);\n var document = this;\n var startBlock = document.getBlockAtIndex(startLocation.index);\n startLocation.offset = startBlock.findLineBreakInDirectionFromPosition(\"backward\", startLocation.offset);\n\n if (startLocation.offset != null) {\n position = document.positionFromLocation(startLocation);\n document = document.insertBlockBreakAtRange([position, position + 1]);\n endLocation.index += 1;\n endLocation.offset -= document.getBlockAtIndex(startLocation.index).getLength();\n startLocation.index += 1;\n }\n\n startLocation.offset = 0;\n\n if (endLocation.offset === 0 && endLocation.index > startLocation.index) {\n endLocation.index -= 1;\n endLocation.offset = document.getBlockAtIndex(endLocation.index).getBlockBreakPosition();\n } else {\n var endBlock = document.getBlockAtIndex(endLocation.index);\n\n if (endBlock.text.getStringAtRange([endLocation.offset - 1, endLocation.offset]) === \"\\n\") {\n endLocation.offset -= 1;\n } else {\n endLocation.offset = endBlock.findLineBreakInDirectionFromPosition(\"forward\", endLocation.offset);\n }\n\n if (endLocation.offset !== endBlock.getBlockBreakPosition()) {\n position = document.positionFromLocation(endLocation);\n document = document.insertBlockBreakAtRange([position, position + 1]);\n }\n }\n\n startPosition = document.positionFromLocation(startLocation);\n endPosition = document.positionFromLocation(endLocation);\n range = normalizeRange([startPosition, endPosition]);\n return {\n document: document,\n range: range\n };\n }\n }, {\n key: \"convertLineBreaksToBlockBreaksInRange\",\n value: function convertLineBreaksToBlockBreaksInRange(range) {\n range = normalizeRange(range);\n\n var _range15 = range,\n _range16 = _slicedToArray2(_range15, 1),\n position = _range16[0];\n\n var string = this.getStringAtRange(range).slice(0, -1);\n var document = this;\n string.replace(/.*?\\n/g, function (match) {\n position += match.length;\n document = document.insertBlockBreakAtRange([position - 1, position]);\n });\n return {\n document: document,\n range: range\n };\n }\n }, {\n key: \"consolidateBlocksAtRange\",\n value: function consolidateBlocksAtRange(range) {\n range = normalizeRange(range);\n\n var _range17 = range,\n _range18 = _slicedToArray2(_range17, 2),\n startPosition = _range18[0],\n endPosition = _range18[1];\n\n var startIndex = this.locationFromPosition(startPosition).index;\n var endIndex = this.locationFromPosition(endPosition).index;\n return new this.constructor(this.blockList.consolidateFromIndexToIndex(startIndex, endIndex));\n }\n }, {\n key: \"getDocumentAtRange\",\n value: function getDocumentAtRange(range) {\n range = normalizeRange(range);\n var blocks = this.blockList.getSplittableListInRange(range).toArray();\n return new this.constructor(blocks);\n }\n }, {\n key: \"getStringAtRange\",\n value: function getStringAtRange(range) {\n var endIndex;\n var array = range = normalizeRange(range),\n endPosition = array[array.length - 1];\n\n if (endPosition !== this.getLength()) {\n endIndex = -1;\n }\n\n return this.getDocumentAtRange(range).toString().slice(0, endIndex);\n }\n }, {\n key: \"getBlockAtIndex\",\n value: function getBlockAtIndex(index) {\n return this.blockList.getObjectAtIndex(index);\n }\n }, {\n key: \"getBlockAtPosition\",\n value: function getBlockAtPosition(position) {\n var _this$locationFromPos5 = this.locationFromPosition(position),\n index = _this$locationFromPos5.index;\n\n return this.getBlockAtIndex(index);\n }\n }, {\n key: \"getTextAtIndex\",\n value: function getTextAtIndex(index) {\n var _this$getBlockAtIndex;\n\n return (_this$getBlockAtIndex = this.getBlockAtIndex(index)) === null || _this$getBlockAtIndex === void 0 ? void 0 : _this$getBlockAtIndex.text;\n }\n }, {\n key: \"getTextAtPosition\",\n value: function getTextAtPosition(position) {\n var _this$locationFromPos6 = this.locationFromPosition(position),\n index = _this$locationFromPos6.index;\n\n return this.getTextAtIndex(index);\n }\n }, {\n key: \"getPieceAtPosition\",\n value: function getPieceAtPosition(position) {\n var _this$locationFromPos7 = this.locationFromPosition(position),\n index = _this$locationFromPos7.index,\n offset = _this$locationFromPos7.offset;\n\n return this.getTextAtIndex(index).getPieceAtPosition(offset);\n }\n }, {\n key: \"getCharacterAtPosition\",\n value: function getCharacterAtPosition(position) {\n var _this$locationFromPos8 = this.locationFromPosition(position),\n index = _this$locationFromPos8.index,\n offset = _this$locationFromPos8.offset;\n\n return this.getTextAtIndex(index).getStringAtRange([offset, offset + 1]);\n }\n }, {\n key: \"getLength\",\n value: function getLength() {\n return this.blockList.getEndPosition();\n }\n }, {\n key: \"getBlocks\",\n value: function getBlocks() {\n return this.blockList.toArray();\n }\n }, {\n key: \"getBlockCount\",\n value: function getBlockCount() {\n return this.blockList.length;\n }\n }, {\n key: \"getEditCount\",\n value: function getEditCount() {\n return this.editCount;\n }\n }, {\n key: \"eachBlock\",\n value: function eachBlock(callback) {\n return this.blockList.eachObject(callback);\n }\n }, {\n key: \"eachBlockAtRange\",\n value: function eachBlockAtRange(range, callback) {\n var block, textRange;\n range = normalizeRange(range);\n\n var _range19 = range,\n _range20 = _slicedToArray2(_range19, 2),\n startPosition = _range20[0],\n endPosition = _range20[1];\n\n var startLocation = this.locationFromPosition(startPosition);\n var endLocation = this.locationFromPosition(endPosition);\n\n if (startLocation.index === endLocation.index) {\n block = this.getBlockAtIndex(startLocation.index);\n textRange = [startLocation.offset, endLocation.offset];\n return callback(block, textRange, startLocation.index);\n } else {\n for (var index = startLocation.index; index <= endLocation.index; index++) {\n block = this.getBlockAtIndex(index);\n\n if (block) {\n switch (index) {\n case startLocation.index:\n textRange = [startLocation.offset, block.text.getLength()];\n break;\n\n case endLocation.index:\n textRange = [0, endLocation.offset];\n break;\n\n default:\n textRange = [0, block.text.getLength()];\n }\n\n callback(block, textRange, index);\n }\n }\n }\n }\n }, {\n key: \"getCommonAttributesAtRange\",\n value: function getCommonAttributesAtRange(range) {\n range = normalizeRange(range);\n\n var _range21 = range,\n _range22 = _slicedToArray2(_range21, 1),\n startPosition = _range22[0];\n\n if (rangeIsCollapsed(range)) {\n return this.getCommonAttributesAtPosition(startPosition);\n } else {\n var _textAttributes = [];\n var blockAttributes = [];\n this.eachBlockAtRange(range, function (block, textRange) {\n if (textRange[0] !== textRange[1]) {\n _textAttributes.push(block.text.getCommonAttributesAtRange(textRange));\n\n return blockAttributes.push(attributesForBlock(block));\n }\n });\n return Hash.fromCommonAttributesOfObjects(_textAttributes).merge(Hash.fromCommonAttributesOfObjects(blockAttributes)).toObject();\n }\n }\n }, {\n key: \"getCommonAttributesAtPosition\",\n value: function getCommonAttributesAtPosition(position) {\n var key, value;\n\n var _this$locationFromPos9 = this.locationFromPosition(position),\n index = _this$locationFromPos9.index,\n offset = _this$locationFromPos9.offset;\n\n var block = this.getBlockAtIndex(index);\n\n if (!block) {\n return {};\n }\n\n var commonAttributes = attributesForBlock(block);\n var attributes = block.text.getAttributesAtPosition(offset);\n var attributesLeft = block.text.getAttributesAtPosition(offset - 1);\n var inheritableAttributes = Object.keys(config.textAttributes).filter(function (key) {\n return config.textAttributes[key].inheritable;\n });\n\n for (key in attributesLeft) {\n value = attributesLeft[key];\n\n if (value === attributes[key] || inheritableAttributes.includes(key)) {\n commonAttributes[key] = value;\n }\n }\n\n return commonAttributes;\n }\n }, {\n key: \"getRangeOfCommonAttributeAtPosition\",\n value: function getRangeOfCommonAttributeAtPosition(attributeName, position) {\n var _this$locationFromPos10 = this.locationFromPosition(position),\n index = _this$locationFromPos10.index,\n offset = _this$locationFromPos10.offset;\n\n var text = this.getTextAtIndex(index);\n\n var _Array$from6 = Array.from(text.getExpandedRangeForAttributeAtOffset(attributeName, offset)),\n _Array$from7 = _slicedToArray2(_Array$from6, 2),\n startOffset = _Array$from7[0],\n endOffset = _Array$from7[1];\n\n var start = this.positionFromLocation({\n index: index,\n offset: startOffset\n });\n var end = this.positionFromLocation({\n index: index,\n offset: endOffset\n });\n return normalizeRange([start, end]);\n }\n }, {\n key: \"getBaseBlockAttributes\",\n value: function getBaseBlockAttributes() {\n var _this24 = this;\n\n var baseBlockAttributes = this.getBlockAtIndex(0).getAttributes();\n\n var _loop = function _loop(blockIndex) {\n var blockAttributes = _this24.getBlockAtIndex(blockIndex).getAttributes();\n\n var lastAttributeIndex = Math.min(baseBlockAttributes.length, blockAttributes.length);\n\n baseBlockAttributes = function () {\n var result = [];\n\n for (var index = 0; index < lastAttributeIndex; index++) {\n if (blockAttributes[index] !== baseBlockAttributes[index]) {\n break;\n }\n\n result.push(blockAttributes[index]);\n }\n\n return result;\n }();\n };\n\n for (var blockIndex = 1; blockIndex < this.getBlockCount(); blockIndex++) {\n _loop(blockIndex);\n }\n\n return baseBlockAttributes;\n }\n }, {\n key: \"getAttachmentById\",\n value: function getAttachmentById(attachmentId) {\n var _iterator2 = _createForOfIteratorHelper2(this.getAttachments()),\n _step3;\n\n try {\n for (_iterator2.s(); !(_step3 = _iterator2.n()).done;) {\n var attachment = _step3.value;\n\n if (attachment.id === attachmentId) {\n return attachment;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }, {\n key: \"getAttachmentPieces\",\n value: function getAttachmentPieces() {\n var attachmentPieces = [];\n this.blockList.eachObject(function (_ref) {\n var text = _ref.text;\n return attachmentPieces = attachmentPieces.concat(text.getAttachmentPieces());\n });\n return attachmentPieces;\n }\n }, {\n key: \"getAttachments\",\n value: function getAttachments() {\n return this.getAttachmentPieces().map(function (piece) {\n return piece.attachment;\n });\n }\n }, {\n key: \"getRangeOfAttachment\",\n value: function getRangeOfAttachment(attachment) {\n var position = 0;\n var iterable = this.blockList.toArray();\n\n for (var index = 0; index < iterable.length; index++) {\n var text = iterable[index].text;\n var textRange = text.getRangeOfAttachment(attachment);\n\n if (textRange) {\n return normalizeRange([position + textRange[0], position + textRange[1]]);\n }\n\n position += text.getLength();\n }\n }\n }, {\n key: \"getLocationRangeOfAttachment\",\n value: function getLocationRangeOfAttachment(attachment) {\n var range = this.getRangeOfAttachment(attachment);\n return this.locationRangeFromRange(range);\n }\n }, {\n key: \"getAttachmentPieceForAttachment\",\n value: function getAttachmentPieceForAttachment(attachment) {\n var _iterator3 = _createForOfIteratorHelper2(this.getAttachmentPieces()),\n _step4;\n\n try {\n for (_iterator3.s(); !(_step4 = _iterator3.n()).done;) {\n var piece = _step4.value;\n\n if (piece.attachment === attachment) {\n return piece;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"findRangesForBlockAttribute\",\n value: function findRangesForBlockAttribute(attributeName) {\n var position = 0;\n var ranges = [];\n this.getBlocks().forEach(function (block) {\n var length = block.getLength();\n\n if (block.hasAttribute(attributeName)) {\n ranges.push([position, position + length]);\n }\n\n position += length;\n });\n return ranges;\n }\n }, {\n key: \"findRangesForTextAttribute\",\n value: function findRangesForTextAttribute(attributeName) {\n var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n withValue = _ref8.withValue;\n\n var position = 0;\n var range = [];\n var ranges = [];\n\n var match = function match(piece) {\n if (withValue) {\n return piece.getAttribute(attributeName) === withValue;\n } else {\n return piece.hasAttribute(attributeName);\n }\n };\n\n this.getPieces().forEach(function (piece) {\n var length = piece.getLength();\n\n if (match(piece)) {\n if (range[1] === position) {\n range[1] = position + length;\n } else {\n ranges.push(range = [position, position + length]);\n }\n }\n\n position += length;\n });\n return ranges;\n }\n }, {\n key: \"locationFromPosition\",\n value: function locationFromPosition(position) {\n var location = this.blockList.findIndexAndOffsetAtPosition(Math.max(0, position));\n\n if (location.index != null) {\n return location;\n } else {\n var blocks = this.getBlocks();\n return {\n index: blocks.length - 1,\n offset: blocks[blocks.length - 1].getLength()\n };\n }\n }\n }, {\n key: \"positionFromLocation\",\n value: function positionFromLocation(location) {\n return this.blockList.findPositionAtIndexAndOffset(location.index, location.offset);\n }\n }, {\n key: \"locationRangeFromPosition\",\n value: function locationRangeFromPosition(position) {\n return normalizeRange(this.locationFromPosition(position));\n }\n }, {\n key: \"locationRangeFromRange\",\n value: function locationRangeFromRange(range) {\n range = normalizeRange(range);\n if (!range) return;\n\n var _Array$from8 = Array.from(range),\n _Array$from9 = _slicedToArray2(_Array$from8, 2),\n startPosition = _Array$from9[0],\n endPosition = _Array$from9[1];\n\n var startLocation = this.locationFromPosition(startPosition);\n var endLocation = this.locationFromPosition(endPosition);\n return normalizeRange([startLocation, endLocation]);\n }\n }, {\n key: \"rangeFromLocationRange\",\n value: function rangeFromLocationRange(locationRange) {\n var rightPosition;\n locationRange = normalizeRange(locationRange);\n var leftPosition = this.positionFromLocation(locationRange[0]);\n\n if (!rangeIsCollapsed(locationRange)) {\n rightPosition = this.positionFromLocation(locationRange[1]);\n }\n\n return normalizeRange([leftPosition, rightPosition]);\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(document) {\n return this.blockList.isEqualTo(document === null || document === void 0 ? void 0 : document.blockList);\n }\n }, {\n key: \"getTexts\",\n value: function getTexts() {\n return this.getBlocks().map(function (block) {\n return block.text;\n });\n }\n }, {\n key: \"getPieces\",\n value: function getPieces() {\n var pieces = [];\n Array.from(this.getTexts()).forEach(function (text) {\n pieces.push.apply(pieces, _toConsumableArray2(Array.from(text.getPieces() || [])));\n });\n return pieces;\n }\n }, {\n key: \"getObjects\",\n value: function getObjects() {\n return this.getBlocks().concat(this.getTexts()).concat(this.getPieces());\n }\n }, {\n key: \"toSerializableDocument\",\n value: function toSerializableDocument() {\n var blocks = [];\n this.blockList.eachObject(function (block) {\n return blocks.push(block.copyWithText(block.text.toSerializableText()));\n });\n return new this.constructor(blocks);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.blockList.toString();\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.blockList.toJSON();\n }\n }, {\n key: \"toConsole\",\n value: function toConsole() {\n return JSON.stringify(this.blockList.toArray()).map(function (block) {\n return JSON.parse(block.text.toConsole());\n });\n }\n }], [{\n key: \"fromJSON\",\n value: function fromJSON(documentJSON) {\n var blocks = Array.from(documentJSON).map(function (blockJSON) {\n return Block.fromJSON(blockJSON);\n });\n return new this(blocks);\n }\n }, {\n key: \"fromString\",\n value: function fromString(string, textAttributes) {\n var text = Text.textForStringWithAttributes(string, textAttributes);\n return new this([new Block(text)]);\n }\n }]);\n\n return Document;\n}(TrixObject);\n\nvar attributesForBlock = function attributesForBlock(block) {\n var attributes = {};\n var attributeName = block.getLastAttribute();\n\n if (attributeName) {\n attributes[attributeName] = true;\n }\n\n return attributes;\n};\n\nvar DEFAULT_ALLOWED_ATTRIBUTES = \"style href src width height class\".split(\" \");\nvar DEFAULT_FORBIDDEN_PROTOCOLS = \"javascript:\".split(\" \");\nvar DEFAULT_FORBIDDEN_ELEMENTS = \"script iframe\".split(\" \");\n\nvar HTMLSanitizer = /*#__PURE__*/function (_BasicObject8) {\n _inherits2(HTMLSanitizer, _BasicObject8);\n\n var _super19 = _createSuper2(HTMLSanitizer);\n\n function HTMLSanitizer(html) {\n var _this25;\n\n _classCallCheck2(this, HTMLSanitizer);\n\n var _ref9 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n allowedAttributes = _ref9.allowedAttributes,\n forbiddenProtocols = _ref9.forbiddenProtocols,\n forbiddenElements = _ref9.forbiddenElements;\n\n _this25 = _super19.apply(this, arguments);\n _this25.allowedAttributes = allowedAttributes || DEFAULT_ALLOWED_ATTRIBUTES;\n _this25.forbiddenProtocols = forbiddenProtocols || DEFAULT_FORBIDDEN_PROTOCOLS;\n _this25.forbiddenElements = forbiddenElements || DEFAULT_FORBIDDEN_ELEMENTS;\n _this25.body = createBodyElementForHTML(html);\n return _this25;\n }\n\n _createClass2(HTMLSanitizer, [{\n key: \"sanitize\",\n value: function sanitize() {\n this.sanitizeElements();\n return this.normalizeListElementNesting();\n }\n }, {\n key: \"getHTML\",\n value: function getHTML() {\n return this.body.innerHTML;\n }\n }, {\n key: \"getBody\",\n value: function getBody() {\n return this.body;\n } // Private\n\n }, {\n key: \"sanitizeElements\",\n value: function sanitizeElements() {\n var walker = walkTree(this.body);\n var nodesToRemove = [];\n\n while (walker.nextNode()) {\n var node = walker.currentNode;\n\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n if (this.elementIsRemovable(node)) {\n nodesToRemove.push(node);\n } else {\n this.sanitizeElement(node);\n }\n\n break;\n\n case Node.COMMENT_NODE:\n nodesToRemove.push(node);\n break;\n }\n }\n\n nodesToRemove.forEach(function (node) {\n return removeNode(node);\n });\n return this.body;\n }\n }, {\n key: \"sanitizeElement\",\n value: function sanitizeElement(element) {\n var _this26 = this;\n\n if (element.hasAttribute(\"href\")) {\n if (this.forbiddenProtocols.includes(element.protocol)) {\n element.removeAttribute(\"href\");\n }\n }\n\n Array.from(element.attributes).forEach(function (_ref) {\n var name = _ref.name;\n\n if (!_this26.allowedAttributes.includes(name) && name.indexOf(\"data-trix\") !== 0) {\n element.removeAttribute(name);\n }\n });\n return element;\n }\n }, {\n key: \"normalizeListElementNesting\",\n value: function normalizeListElementNesting() {\n Array.from(this.body.querySelectorAll(\"ul,ol\")).forEach(function (listElement) {\n var previousElement = listElement.previousElementSibling;\n\n if (previousElement) {\n if (tagName(previousElement) === \"li\") {\n previousElement.appendChild(listElement);\n }\n }\n });\n return this.body;\n }\n }, {\n key: \"elementIsRemovable\",\n value: function elementIsRemovable(element) {\n if ((element === null || element === void 0 ? void 0 : element.nodeType) !== Node.ELEMENT_NODE) return;\n return this.elementIsForbidden(element) || this.elementIsntSerializable(element);\n }\n }, {\n key: \"elementIsForbidden\",\n value: function elementIsForbidden(element) {\n return this.forbiddenElements.includes(tagName(element));\n }\n }, {\n key: \"elementIsntSerializable\",\n value: function elementIsntSerializable(element) {\n return element.getAttribute(\"data-trix-serialize\") === \"false\" && !nodeIsAttachmentElement(element);\n }\n }], [{\n key: \"sanitize\",\n value: function sanitize(html, options) {\n var sanitizer = new this(html, options);\n sanitizer.sanitize();\n return sanitizer;\n }\n }]);\n\n return HTMLSanitizer;\n}(BasicObject);\n\nvar createBodyElementForHTML = function createBodyElementForHTML() {\n var html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\"; // Remove everything after \n\n html = html.replace(/<\\/html[^>]*>[^]*$/i, \"\");\n var doc = document.implementation.createHTMLDocument(\"\");\n doc.documentElement.innerHTML = html;\n Array.from(doc.head.querySelectorAll(\"style\")).forEach(function (element) {\n doc.body.appendChild(element);\n });\n return doc.body;\n};\n/* eslint-disable\n no-case-declarations,\n no-irregular-whitespace,\n*/\n\n\nvar pieceForString = function pieceForString(string) {\n var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var type = \"string\";\n string = normalizeSpaces(string);\n return {\n string: string,\n attributes: attributes,\n type: type\n };\n};\n\nvar pieceForAttachment = function pieceForAttachment(attachment) {\n var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var type = \"attachment\";\n return {\n attachment: attachment,\n attributes: attributes,\n type: type\n };\n};\n\nvar blockForAttributes = function blockForAttributes() {\n var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var text = [];\n return {\n text: text,\n attributes: attributes\n };\n};\n\nvar parseTrixDataAttribute = function parseTrixDataAttribute(element, name) {\n try {\n return JSON.parse(element.getAttribute(\"data-trix-\".concat(name)));\n } catch (error) {\n return {};\n }\n};\n\nvar getImageDimensions = function getImageDimensions(element) {\n var width = element.getAttribute(\"width\");\n var height = element.getAttribute(\"height\");\n var dimensions = {};\n\n if (width) {\n dimensions.width = parseInt(width, 10);\n }\n\n if (height) {\n dimensions.height = parseInt(height, 10);\n }\n\n return dimensions;\n};\n\nvar HTMLParser = /*#__PURE__*/function (_BasicObject9) {\n _inherits2(HTMLParser, _BasicObject9);\n\n var _super20 = _createSuper2(HTMLParser);\n\n function HTMLParser(html) {\n var _this27;\n\n _classCallCheck2(this, HTMLParser);\n\n var _ref10 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n referenceElement = _ref10.referenceElement;\n\n _this27 = _super20.apply(this, arguments);\n _this27.html = html;\n _this27.referenceElement = referenceElement;\n _this27.blocks = [];\n _this27.blockElements = [];\n _this27.processedElements = [];\n return _this27;\n }\n\n _createClass2(HTMLParser, [{\n key: \"getDocument\",\n value: function getDocument() {\n return Document.fromJSON(this.blocks);\n } // HTML parsing\n\n }, {\n key: \"parse\",\n value: function parse() {\n try {\n this.createHiddenContainer();\n\n var _html = HTMLSanitizer.sanitize(this.html).getHTML();\n\n this.containerElement.innerHTML = _html;\n var walker = walkTree(this.containerElement, {\n usingFilter: nodeFilter\n });\n\n while (walker.nextNode()) {\n this.processNode(walker.currentNode);\n }\n\n return this.translateBlockElementMarginsToNewlines();\n } finally {\n this.removeHiddenContainer();\n }\n }\n }, {\n key: \"createHiddenContainer\",\n value: function createHiddenContainer() {\n if (this.referenceElement) {\n this.containerElement = this.referenceElement.cloneNode(false);\n this.containerElement.removeAttribute(\"id\");\n this.containerElement.setAttribute(\"data-trix-internal\", \"\");\n this.containerElement.style.display = \"none\";\n return this.referenceElement.parentNode.insertBefore(this.containerElement, this.referenceElement.nextSibling);\n } else {\n this.containerElement = makeElement({\n tagName: \"div\",\n style: {\n display: \"none\"\n }\n });\n return document.body.appendChild(this.containerElement);\n }\n }\n }, {\n key: \"removeHiddenContainer\",\n value: function removeHiddenContainer() {\n return removeNode(this.containerElement);\n }\n }, {\n key: \"processNode\",\n value: function processNode(node) {\n switch (node.nodeType) {\n case Node.TEXT_NODE:\n if (!this.isInsignificantTextNode(node)) {\n this.appendBlockForTextNode(node);\n return this.processTextNode(node);\n }\n\n break;\n\n case Node.ELEMENT_NODE:\n this.appendBlockForElement(node);\n return this.processElement(node);\n }\n }\n }, {\n key: \"appendBlockForTextNode\",\n value: function appendBlockForTextNode(node) {\n var element = node.parentNode;\n\n if (element === this.currentBlockElement && this.isBlockElement(node.previousSibling)) {\n return this.appendStringWithAttributes(\"\\n\");\n } else if (element === this.containerElement || this.isBlockElement(element)) {\n var _this$currentBlock;\n\n var _attributes2 = this.getBlockAttributes(element);\n\n if (!arraysAreEqual(_attributes2, (_this$currentBlock = this.currentBlock) === null || _this$currentBlock === void 0 ? void 0 : _this$currentBlock.attributes)) {\n this.currentBlock = this.appendBlockForAttributesWithElement(_attributes2, element);\n this.currentBlockElement = element;\n }\n }\n }\n }, {\n key: \"appendBlockForElement\",\n value: function appendBlockForElement(element) {\n var elementIsBlockElement = this.isBlockElement(element);\n var currentBlockContainsElement = elementContainsNode(this.currentBlockElement, element);\n\n if (elementIsBlockElement && !this.isBlockElement(element.firstChild)) {\n if (!this.isInsignificantTextNode(element.firstChild) || !this.isBlockElement(element.firstElementChild)) {\n var _attributes3 = this.getBlockAttributes(element);\n\n if (element.firstChild) {\n if (!(currentBlockContainsElement && arraysAreEqual(_attributes3, this.currentBlock.attributes))) {\n this.currentBlock = this.appendBlockForAttributesWithElement(_attributes3, element);\n this.currentBlockElement = element;\n } else {\n return this.appendStringWithAttributes(\"\\n\");\n }\n }\n }\n } else if (this.currentBlockElement && !currentBlockContainsElement && !elementIsBlockElement) {\n var parentBlockElement = this.findParentBlockElement(element);\n\n if (parentBlockElement) {\n return this.appendBlockForElement(parentBlockElement);\n } else {\n this.currentBlock = this.appendEmptyBlock();\n this.currentBlockElement = null;\n }\n }\n }\n }, {\n key: \"findParentBlockElement\",\n value: function findParentBlockElement(element) {\n var parentElement = element.parentElement;\n\n while (parentElement && parentElement !== this.containerElement) {\n if (this.isBlockElement(parentElement) && this.blockElements.includes(parentElement)) {\n return parentElement;\n } else {\n parentElement = parentElement.parentElement;\n }\n }\n\n return null;\n }\n }, {\n key: \"processTextNode\",\n value: function processTextNode(node) {\n var string = node.data;\n\n if (!elementCanDisplayPreformattedText(node.parentNode)) {\n var _node$previousSibling;\n\n string = squishBreakableWhitespace(string);\n\n if (stringEndsWithWhitespace((_node$previousSibling = node.previousSibling) === null || _node$previousSibling === void 0 ? void 0 : _node$previousSibling.textContent)) {\n string = leftTrimBreakableWhitespace(string);\n }\n }\n\n return this.appendStringWithAttributes(string, this.getTextAttributes(node.parentNode));\n }\n }, {\n key: \"processElement\",\n value: function processElement(element) {\n var attributes;\n\n if (nodeIsAttachmentElement(element)) {\n attributes = parseTrixDataAttribute(element, \"attachment\");\n\n if (Object.keys(attributes).length) {\n var _textAttributes2 = this.getTextAttributes(element);\n\n this.appendAttachmentWithAttributes(attributes, _textAttributes2); // We have everything we need so avoid processing inner nodes\n\n element.innerHTML = \"\";\n }\n\n return this.processedElements.push(element);\n } else {\n switch (tagName(element)) {\n case \"br\":\n if (!this.isExtraBR(element) && !this.isBlockElement(element.nextSibling)) {\n this.appendStringWithAttributes(\"\\n\", this.getTextAttributes(element));\n }\n\n return this.processedElements.push(element);\n\n case \"img\":\n attributes = {\n url: element.getAttribute(\"src\"),\n contentType: \"image\"\n };\n\n var _object6 = getImageDimensions(element);\n\n for (var key in _object6) {\n var value = _object6[key];\n attributes[key] = value;\n }\n\n this.appendAttachmentWithAttributes(attributes, this.getTextAttributes(element));\n return this.processedElements.push(element);\n\n case \"tr\":\n if (element.parentNode.firstChild !== element) {\n return this.appendStringWithAttributes(\"\\n\");\n }\n\n break;\n\n case \"td\":\n if (element.parentNode.firstChild !== element) {\n return this.appendStringWithAttributes(\" | \");\n }\n\n break;\n }\n }\n } // Document construction\n\n }, {\n key: \"appendBlockForAttributesWithElement\",\n value: function appendBlockForAttributesWithElement(attributes, element) {\n this.blockElements.push(element);\n var block = blockForAttributes(attributes);\n this.blocks.push(block);\n return block;\n }\n }, {\n key: \"appendEmptyBlock\",\n value: function appendEmptyBlock() {\n return this.appendBlockForAttributesWithElement([], null);\n }\n }, {\n key: \"appendStringWithAttributes\",\n value: function appendStringWithAttributes(string, attributes) {\n return this.appendPiece(pieceForString(string, attributes));\n }\n }, {\n key: \"appendAttachmentWithAttributes\",\n value: function appendAttachmentWithAttributes(attachment, attributes) {\n return this.appendPiece(pieceForAttachment(attachment, attributes));\n }\n }, {\n key: \"appendPiece\",\n value: function appendPiece(piece) {\n if (this.blocks.length === 0) {\n this.appendEmptyBlock();\n }\n\n return this.blocks[this.blocks.length - 1].text.push(piece);\n }\n }, {\n key: \"appendStringToTextAtIndex\",\n value: function appendStringToTextAtIndex(string, index) {\n var text = this.blocks[index].text;\n var piece = text[text.length - 1];\n\n if ((piece === null || piece === void 0 ? void 0 : piece.type) === \"string\") {\n piece.string += string;\n } else {\n return text.push(pieceForString(string));\n }\n }\n }, {\n key: \"prependStringToTextAtIndex\",\n value: function prependStringToTextAtIndex(string, index) {\n var text = this.blocks[index].text;\n var piece = text[0];\n\n if ((piece === null || piece === void 0 ? void 0 : piece.type) === \"string\") {\n piece.string = string + piece.string;\n } else {\n return text.unshift(pieceForString(string));\n }\n } // Attribute parsing\n\n }, {\n key: \"getTextAttributes\",\n value: function getTextAttributes(element) {\n var value;\n var attributes = {};\n\n for (var attribute in config.textAttributes) {\n var configAttr = config.textAttributes[attribute];\n\n if (configAttr.tagName && findClosestElementFromNode(element, {\n matchingSelector: configAttr.tagName,\n untilNode: this.containerElement\n })) {\n attributes[attribute] = true;\n } else if (configAttr.parser) {\n value = configAttr.parser(element);\n\n if (value) {\n var attributeInheritedFromBlock = false;\n\n var _iterator4 = _createForOfIteratorHelper2(this.findBlockElementAncestors(element)),\n _step5;\n\n try {\n for (_iterator4.s(); !(_step5 = _iterator4.n()).done;) {\n var blockElement = _step5.value;\n\n if (configAttr.parser(blockElement) === value) {\n attributeInheritedFromBlock = true;\n break;\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n if (!attributeInheritedFromBlock) {\n attributes[attribute] = value;\n }\n }\n } else if (configAttr.styleProperty) {\n value = element.style[configAttr.styleProperty];\n\n if (value) {\n attributes[attribute] = value;\n }\n }\n }\n\n if (nodeIsAttachmentElement(element)) {\n var _object7 = parseTrixDataAttribute(element, \"attributes\");\n\n for (var key in _object7) {\n value = _object7[key];\n attributes[key] = value;\n }\n }\n\n return attributes;\n }\n }, {\n key: \"getBlockAttributes\",\n value: function getBlockAttributes(element) {\n var attributes = [];\n\n while (element && element !== this.containerElement) {\n for (var attribute in config.blockAttributes) {\n var attrConfig = config.blockAttributes[attribute];\n\n if (attrConfig.parse !== false) {\n if (tagName(element) === attrConfig.tagName) {\n var _attrConfig$test;\n\n if ((_attrConfig$test = attrConfig.test) !== null && _attrConfig$test !== void 0 && _attrConfig$test.call(attrConfig, element) || !attrConfig.test) {\n attributes.push(attribute);\n\n if (attrConfig.listAttribute) {\n attributes.push(attrConfig.listAttribute);\n }\n }\n }\n }\n }\n\n element = element.parentNode;\n }\n\n return attributes.reverse();\n }\n }, {\n key: \"findBlockElementAncestors\",\n value: function findBlockElementAncestors(element) {\n var ancestors = [];\n\n while (element && element !== this.containerElement) {\n var tag = tagName(element);\n\n if (getBlockTagNames().includes(tag)) {\n ancestors.push(element);\n }\n\n element = element.parentNode;\n }\n\n return ancestors;\n } // Element inspection\n\n }, {\n key: \"isBlockElement\",\n value: function isBlockElement(element) {\n if ((element === null || element === void 0 ? void 0 : element.nodeType) !== Node.ELEMENT_NODE) return;\n if (nodeIsAttachmentElement(element)) return;\n if (findClosestElementFromNode(element, {\n matchingSelector: \"td\",\n untilNode: this.containerElement\n })) return;\n return getBlockTagNames().includes(tagName(element)) || window.getComputedStyle(element).display === \"block\";\n }\n }, {\n key: \"isInsignificantTextNode\",\n value: function isInsignificantTextNode(node) {\n if ((node === null || node === void 0 ? void 0 : node.nodeType) !== Node.TEXT_NODE) return;\n if (!stringIsAllBreakableWhitespace(node.data)) return;\n var parentNode = node.parentNode,\n previousSibling = node.previousSibling,\n nextSibling = node.nextSibling;\n if (nodeEndsWithNonWhitespace(parentNode.previousSibling) && !this.isBlockElement(parentNode.previousSibling)) return;\n if (elementCanDisplayPreformattedText(parentNode)) return;\n return !previousSibling || this.isBlockElement(previousSibling) || !nextSibling || this.isBlockElement(nextSibling);\n }\n }, {\n key: \"isExtraBR\",\n value: function isExtraBR(element) {\n return tagName(element) === \"br\" && this.isBlockElement(element.parentNode) && element.parentNode.lastChild === element;\n } // Margin translation\n\n }, {\n key: \"translateBlockElementMarginsToNewlines\",\n value: function translateBlockElementMarginsToNewlines() {\n var defaultMargin = this.getMarginOfDefaultBlockElement();\n\n for (var index = 0; index < this.blocks.length; index++) {\n var margin = this.getMarginOfBlockElementAtIndex(index);\n\n if (margin) {\n if (margin.top > defaultMargin.top * 2) {\n this.prependStringToTextAtIndex(\"\\n\", index);\n }\n\n if (margin.bottom > defaultMargin.bottom * 2) {\n this.appendStringToTextAtIndex(\"\\n\", index);\n }\n }\n }\n }\n }, {\n key: \"getMarginOfBlockElementAtIndex\",\n value: function getMarginOfBlockElementAtIndex(index) {\n var element = this.blockElements[index];\n\n if (element) {\n if (element.textContent) {\n if (!getBlockTagNames().includes(tagName(element)) && !this.processedElements.includes(element)) {\n return getBlockElementMargin(element);\n }\n }\n }\n }\n }, {\n key: \"getMarginOfDefaultBlockElement\",\n value: function getMarginOfDefaultBlockElement() {\n var element = makeElement(config.blockAttributes[\"default\"].tagName);\n this.containerElement.appendChild(element);\n return getBlockElementMargin(element);\n }\n }], [{\n key: \"parse\",\n value: function parse(html, options) {\n var parser = new this(html, options);\n parser.parse();\n return parser;\n }\n }]);\n\n return HTMLParser;\n}(BasicObject); // Helpers\n\n\nvar elementCanDisplayPreformattedText = function elementCanDisplayPreformattedText(element) {\n var _window$getComputedSt = window.getComputedStyle(element),\n whiteSpace = _window$getComputedSt.whiteSpace;\n\n return [\"pre\", \"pre-wrap\", \"pre-line\"].includes(whiteSpace);\n};\n\nvar nodeEndsWithNonWhitespace = function nodeEndsWithNonWhitespace(node) {\n return node && !stringEndsWithWhitespace(node.textContent);\n};\n\nvar getBlockElementMargin = function getBlockElementMargin(element) {\n var style = window.getComputedStyle(element);\n\n if (style.display === \"block\") {\n return {\n top: parseInt(style.marginTop),\n bottom: parseInt(style.marginBottom)\n };\n }\n};\n\nvar nodeFilter = function nodeFilter(node) {\n if (tagName(node) === \"style\") {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n}; // Whitespace\n\n\nvar leftTrimBreakableWhitespace = function leftTrimBreakableWhitespace(string) {\n return string.replace(new RegExp(\"^\".concat(breakableWhitespacePattern.source, \"+\")), \"\");\n};\n\nvar stringIsAllBreakableWhitespace = function stringIsAllBreakableWhitespace(string) {\n return new RegExp(\"^\".concat(breakableWhitespacePattern.source, \"*$\")).test(string);\n};\n\nvar stringEndsWithWhitespace = function stringEndsWithWhitespace(string) {\n return /\\s$/.test(string);\n};\n\nvar LineBreakInsertion = /*#__PURE__*/function () {\n function LineBreakInsertion(composition) {\n _classCallCheck2(this, LineBreakInsertion);\n\n this.composition = composition;\n this.document = this.composition.document;\n var selectedRange = this.composition.getSelectedRange();\n this.startPosition = selectedRange[0];\n this.endPosition = selectedRange[1];\n this.startLocation = this.document.locationFromPosition(this.startPosition);\n this.endLocation = this.document.locationFromPosition(this.endPosition);\n this.block = this.document.getBlockAtIndex(this.endLocation.index);\n this.breaksOnReturn = this.block.breaksOnReturn();\n this.previousCharacter = this.block.text.getStringAtPosition(this.endLocation.offset - 1);\n this.nextCharacter = this.block.text.getStringAtPosition(this.endLocation.offset);\n }\n\n _createClass2(LineBreakInsertion, [{\n key: \"shouldInsertBlockBreak\",\n value: function shouldInsertBlockBreak() {\n if (this.block.hasAttributes() && this.block.isListItem() && !this.block.isEmpty()) {\n return this.startLocation.offset !== 0;\n } else {\n return this.breaksOnReturn && this.nextCharacter !== \"\\n\";\n }\n }\n }, {\n key: \"shouldBreakFormattedBlock\",\n value: function shouldBreakFormattedBlock() {\n return this.block.hasAttributes() && !this.block.isListItem() && (this.breaksOnReturn && this.nextCharacter === \"\\n\" || this.previousCharacter === \"\\n\");\n }\n }, {\n key: \"shouldDecreaseListLevel\",\n value: function shouldDecreaseListLevel() {\n return this.block.hasAttributes() && this.block.isListItem() && this.block.isEmpty();\n }\n }, {\n key: \"shouldPrependListItem\",\n value: function shouldPrependListItem() {\n return this.block.isListItem() && this.startLocation.offset === 0 && !this.block.isEmpty();\n }\n }, {\n key: \"shouldRemoveLastBlockAttribute\",\n value: function shouldRemoveLastBlockAttribute() {\n return this.block.hasAttributes() && !this.block.isListItem() && this.block.isEmpty();\n }\n }]);\n\n return LineBreakInsertion;\n}();\n\nvar PLACEHOLDER = \" \";\n\nvar Composition = /*#__PURE__*/function (_BasicObject10) {\n _inherits2(Composition, _BasicObject10);\n\n var _super21 = _createSuper2(Composition);\n\n function Composition() {\n var _this28;\n\n _classCallCheck2(this, Composition);\n\n _this28 = _super21.apply(this, arguments);\n _this28.document = new Document();\n _this28.attachments = [];\n _this28.currentAttributes = {};\n _this28.revision = 0;\n return _this28;\n }\n\n _createClass2(Composition, [{\n key: \"setDocument\",\n value: function setDocument(document) {\n if (!document.isEqualTo(this.document)) {\n var _this$delegate, _this$delegate$compos;\n\n this.document = document;\n this.refreshAttachments();\n this.revision++;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$compos = _this$delegate.compositionDidChangeDocument) === null || _this$delegate$compos === void 0 ? void 0 : _this$delegate$compos.call(_this$delegate, document);\n }\n } // Snapshots\n\n }, {\n key: \"getSnapshot\",\n value: function getSnapshot() {\n return {\n document: this.document,\n selectedRange: this.getSelectedRange()\n };\n }\n }, {\n key: \"loadSnapshot\",\n value: function loadSnapshot(_ref) {\n var _this$delegate2, _this$delegate2$compo, _this$delegate3, _this$delegate3$compo;\n\n var document = _ref.document,\n selectedRange = _ref.selectedRange;\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : (_this$delegate2$compo = _this$delegate2.compositionWillLoadSnapshot) === null || _this$delegate2$compo === void 0 ? void 0 : _this$delegate2$compo.call(_this$delegate2);\n this.setDocument(document != null ? document : new Document());\n this.setSelection(selectedRange != null ? selectedRange : [0, 0]);\n return (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : (_this$delegate3$compo = _this$delegate3.compositionDidLoadSnapshot) === null || _this$delegate3$compo === void 0 ? void 0 : _this$delegate3$compo.call(_this$delegate3);\n } // Responder protocol\n\n }, {\n key: \"insertText\",\n value: function insertText(text) {\n var _ref11 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n updatePosition: true\n },\n updatePosition = _ref11.updatePosition;\n\n var selectedRange = this.getSelectedRange();\n this.setDocument(this.document.insertTextAtRange(text, selectedRange));\n var startPosition = selectedRange[0];\n var endPosition = startPosition + text.getLength();\n\n if (updatePosition) {\n this.setSelection(endPosition);\n }\n\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n }, {\n key: \"insertBlock\",\n value: function insertBlock() {\n var block = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Block();\n var document = new Document([block]);\n return this.insertDocument(document);\n }\n }, {\n key: \"insertDocument\",\n value: function insertDocument() {\n var document = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Document();\n var selectedRange = this.getSelectedRange();\n this.setDocument(this.document.insertDocumentAtRange(document, selectedRange));\n var startPosition = selectedRange[0];\n var endPosition = startPosition + document.getLength();\n this.setSelection(endPosition);\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n }, {\n key: \"insertString\",\n value: function insertString(string, options) {\n var attributes = this.getCurrentTextAttributes();\n var text = Text.textForStringWithAttributes(string, attributes);\n return this.insertText(text, options);\n }\n }, {\n key: \"insertBlockBreak\",\n value: function insertBlockBreak() {\n var selectedRange = this.getSelectedRange();\n this.setDocument(this.document.insertBlockBreakAtRange(selectedRange));\n var startPosition = selectedRange[0];\n var endPosition = startPosition + 1;\n this.setSelection(endPosition);\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n }, {\n key: \"insertLineBreak\",\n value: function insertLineBreak() {\n var insertion = new LineBreakInsertion(this);\n\n if (insertion.shouldDecreaseListLevel()) {\n this.decreaseListLevel();\n return this.setSelection(insertion.startPosition);\n } else if (insertion.shouldPrependListItem()) {\n var _document3 = new Document([insertion.block.copyWithoutText()]);\n\n return this.insertDocument(_document3);\n } else if (insertion.shouldInsertBlockBreak()) {\n return this.insertBlockBreak();\n } else if (insertion.shouldRemoveLastBlockAttribute()) {\n return this.removeLastBlockAttribute();\n } else if (insertion.shouldBreakFormattedBlock()) {\n return this.breakFormattedBlock(insertion);\n } else {\n return this.insertString(\"\\n\");\n }\n }\n }, {\n key: \"insertHTML\",\n value: function insertHTML(html) {\n var document = HTMLParser.parse(html).getDocument();\n var selectedRange = this.getSelectedRange();\n this.setDocument(this.document.mergeDocumentAtRange(document, selectedRange));\n var startPosition = selectedRange[0];\n var endPosition = startPosition + document.getLength() - 1;\n this.setSelection(endPosition);\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n }, {\n key: \"replaceHTML\",\n value: function replaceHTML(html) {\n var document = HTMLParser.parse(html).getDocument().copyUsingObjectsFromDocument(this.document);\n var locationRange = this.getLocationRange({\n strict: false\n });\n var selectedRange = this.document.rangeFromLocationRange(locationRange);\n this.setDocument(document);\n return this.setSelection(selectedRange);\n }\n }, {\n key: \"insertFile\",\n value: function insertFile(file) {\n return this.insertFiles([file]);\n }\n }, {\n key: \"insertFiles\",\n value: function insertFiles(files) {\n var _this29 = this;\n\n var attachments = [];\n Array.from(files).forEach(function (file) {\n var _this$delegate4;\n\n if ((_this$delegate4 = _this29.delegate) !== null && _this$delegate4 !== void 0 && _this$delegate4.compositionShouldAcceptFile(file)) {\n var attachment = Attachment.attachmentForFile(file);\n attachments.push(attachment);\n }\n });\n return this.insertAttachments(attachments);\n }\n }, {\n key: \"insertAttachment\",\n value: function insertAttachment(attachment) {\n return this.insertAttachments([attachment]);\n }\n }, {\n key: \"insertAttachments\",\n value: function insertAttachments(attachments) {\n var _this30 = this;\n\n var text = new Text();\n Array.from(attachments).forEach(function (attachment) {\n var _config$attachments$t;\n\n var type = attachment.getType();\n var presentation = (_config$attachments$t = config.attachments[type]) === null || _config$attachments$t === void 0 ? void 0 : _config$attachments$t.presentation;\n\n var attributes = _this30.getCurrentTextAttributes();\n\n if (presentation) {\n attributes.presentation = presentation;\n }\n\n var attachmentText = Text.textForAttachmentWithAttributes(attachment, attributes);\n text = text.appendText(attachmentText);\n });\n return this.insertText(text);\n }\n }, {\n key: \"shouldManageDeletingInDirection\",\n value: function shouldManageDeletingInDirection(direction) {\n var locationRange = this.getLocationRange();\n\n if (rangeIsCollapsed(locationRange)) {\n if (direction === \"backward\" && locationRange[0].offset === 0) {\n return true;\n }\n\n if (this.shouldManageMovingCursorInDirection(direction)) {\n return true;\n }\n } else {\n if (locationRange[0].index !== locationRange[1].index) {\n return true;\n }\n }\n\n return false;\n }\n }, {\n key: \"deleteInDirection\",\n value: function deleteInDirection(direction) {\n var _ref12 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n length = _ref12.length;\n\n var attachment, deletingIntoPreviousBlock, selectionSpansBlocks;\n var locationRange = this.getLocationRange();\n var range = this.getSelectedRange();\n var selectionIsCollapsed = rangeIsCollapsed(range);\n\n if (selectionIsCollapsed) {\n deletingIntoPreviousBlock = direction === \"backward\" && locationRange[0].offset === 0;\n } else {\n selectionSpansBlocks = locationRange[0].index !== locationRange[1].index;\n }\n\n if (deletingIntoPreviousBlock) {\n if (this.canDecreaseBlockAttributeLevel()) {\n var block = this.getBlock();\n\n if (block.isListItem()) {\n this.decreaseListLevel();\n } else {\n this.decreaseBlockAttributeLevel();\n }\n\n this.setSelection(range[0]);\n\n if (block.isEmpty()) {\n return false;\n }\n }\n }\n\n if (selectionIsCollapsed) {\n range = this.getExpandedRangeInDirection(direction, {\n length: length\n });\n\n if (direction === \"backward\") {\n attachment = this.getAttachmentAtRange(range);\n }\n }\n\n if (attachment) {\n this.editAttachment(attachment);\n return false;\n } else {\n this.setDocument(this.document.removeTextAtRange(range));\n this.setSelection(range[0]);\n\n if (deletingIntoPreviousBlock || selectionSpansBlocks) {\n return false;\n }\n }\n }\n }, {\n key: \"moveTextFromRange\",\n value: function moveTextFromRange(range) {\n var _Array$from10 = Array.from(this.getSelectedRange()),\n _Array$from11 = _slicedToArray2(_Array$from10, 1),\n position = _Array$from11[0];\n\n this.setDocument(this.document.moveTextFromRangeToPosition(range, position));\n return this.setSelection(position);\n }\n }, {\n key: \"removeAttachment\",\n value: function removeAttachment(attachment) {\n var range = this.document.getRangeOfAttachment(attachment);\n\n if (range) {\n this.stopEditingAttachment();\n this.setDocument(this.document.removeTextAtRange(range));\n return this.setSelection(range[0]);\n }\n }\n }, {\n key: \"removeLastBlockAttribute\",\n value: function removeLastBlockAttribute() {\n var _Array$from12 = Array.from(this.getSelectedRange()),\n _Array$from13 = _slicedToArray2(_Array$from12, 2),\n startPosition = _Array$from13[0],\n endPosition = _Array$from13[1];\n\n var block = this.document.getBlockAtPosition(endPosition);\n this.removeCurrentAttribute(block.getLastAttribute());\n return this.setSelection(startPosition);\n }\n }, {\n key: \"insertPlaceholder\",\n value: function insertPlaceholder() {\n this.placeholderPosition = this.getPosition();\n return this.insertString(PLACEHOLDER);\n }\n }, {\n key: \"selectPlaceholder\",\n value: function selectPlaceholder() {\n if (this.placeholderPosition != null) {\n this.setSelectedRange([this.placeholderPosition, this.placeholderPosition + PLACEHOLDER.length]);\n return this.getSelectedRange();\n }\n }\n }, {\n key: \"forgetPlaceholder\",\n value: function forgetPlaceholder() {\n this.placeholderPosition = null;\n } // Current attributes\n\n }, {\n key: \"hasCurrentAttribute\",\n value: function hasCurrentAttribute(attributeName) {\n var value = this.currentAttributes[attributeName];\n return value != null && value !== false;\n }\n }, {\n key: \"toggleCurrentAttribute\",\n value: function toggleCurrentAttribute(attributeName) {\n var value = !this.currentAttributes[attributeName];\n\n if (value) {\n return this.setCurrentAttribute(attributeName, value);\n } else {\n return this.removeCurrentAttribute(attributeName);\n }\n }\n }, {\n key: \"canSetCurrentAttribute\",\n value: function canSetCurrentAttribute(attributeName) {\n if (getBlockConfig(attributeName)) {\n return this.canSetCurrentBlockAttribute(attributeName);\n } else {\n return this.canSetCurrentTextAttribute(attributeName);\n }\n }\n }, {\n key: \"canSetCurrentTextAttribute\",\n value: function canSetCurrentTextAttribute(attributeName) {\n var document = this.getSelectedDocument();\n if (!document) return;\n\n for (var _i3 = 0, _Array$from14 = Array.from(document.getAttachments()); _i3 < _Array$from14.length; _i3++) {\n var attachment = _Array$from14[_i3];\n\n if (!attachment.hasContent()) {\n return false;\n }\n }\n\n return true;\n }\n }, {\n key: \"canSetCurrentBlockAttribute\",\n value: function canSetCurrentBlockAttribute(attributeName) {\n var block = this.getBlock();\n if (!block) return;\n return !block.isTerminalBlock();\n }\n }, {\n key: \"setCurrentAttribute\",\n value: function setCurrentAttribute(attributeName, value) {\n if (getBlockConfig(attributeName)) {\n return this.setBlockAttribute(attributeName, value);\n } else {\n this.setTextAttribute(attributeName, value);\n this.currentAttributes[attributeName] = value;\n return this.notifyDelegateOfCurrentAttributesChange();\n }\n }\n }, {\n key: \"setTextAttribute\",\n value: function setTextAttribute(attributeName, value) {\n var selectedRange = this.getSelectedRange();\n if (!selectedRange) return;\n\n var _Array$from15 = Array.from(selectedRange),\n _Array$from16 = _slicedToArray2(_Array$from15, 2),\n startPosition = _Array$from16[0],\n endPosition = _Array$from16[1];\n\n if (startPosition === endPosition) {\n if (attributeName === \"href\") {\n var text = Text.textForStringWithAttributes(value, {\n href: value\n });\n return this.insertText(text);\n }\n } else {\n return this.setDocument(this.document.addAttributeAtRange(attributeName, value, selectedRange));\n }\n }\n }, {\n key: \"setBlockAttribute\",\n value: function setBlockAttribute(attributeName, value) {\n var selectedRange = this.getSelectedRange();\n\n if (this.canSetCurrentAttribute(attributeName)) {\n this.setDocument(this.document.applyBlockAttributeAtRange(attributeName, value, selectedRange));\n return this.setSelection(selectedRange);\n }\n }\n }, {\n key: \"removeCurrentAttribute\",\n value: function removeCurrentAttribute(attributeName) {\n if (getBlockConfig(attributeName)) {\n this.removeBlockAttribute(attributeName);\n return this.updateCurrentAttributes();\n } else {\n this.removeTextAttribute(attributeName);\n delete this.currentAttributes[attributeName];\n return this.notifyDelegateOfCurrentAttributesChange();\n }\n }\n }, {\n key: \"removeTextAttribute\",\n value: function removeTextAttribute(attributeName) {\n var selectedRange = this.getSelectedRange();\n if (!selectedRange) return;\n return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange));\n }\n }, {\n key: \"removeBlockAttribute\",\n value: function removeBlockAttribute(attributeName) {\n var selectedRange = this.getSelectedRange();\n if (!selectedRange) return;\n return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange));\n }\n }, {\n key: \"canDecreaseNestingLevel\",\n value: function canDecreaseNestingLevel() {\n var _this$getBlock;\n\n return ((_this$getBlock = this.getBlock()) === null || _this$getBlock === void 0 ? void 0 : _this$getBlock.getNestingLevel()) > 0;\n }\n }, {\n key: \"canIncreaseNestingLevel\",\n value: function canIncreaseNestingLevel() {\n var _getBlockConfig;\n\n var block = this.getBlock();\n if (!block) return;\n\n if ((_getBlockConfig = getBlockConfig(block.getLastNestableAttribute())) !== null && _getBlockConfig !== void 0 && _getBlockConfig.listAttribute) {\n var previousBlock = this.getPreviousBlock();\n\n if (previousBlock) {\n return arrayStartsWith(previousBlock.getListItemAttributes(), block.getListItemAttributes());\n }\n } else {\n return block.getNestingLevel() > 0;\n }\n }\n }, {\n key: \"decreaseNestingLevel\",\n value: function decreaseNestingLevel() {\n var block = this.getBlock();\n if (!block) return;\n return this.setDocument(this.document.replaceBlock(block, block.decreaseNestingLevel()));\n }\n }, {\n key: \"increaseNestingLevel\",\n value: function increaseNestingLevel() {\n var block = this.getBlock();\n if (!block) return;\n return this.setDocument(this.document.replaceBlock(block, block.increaseNestingLevel()));\n }\n }, {\n key: \"canDecreaseBlockAttributeLevel\",\n value: function canDecreaseBlockAttributeLevel() {\n var _this$getBlock2;\n\n return ((_this$getBlock2 = this.getBlock()) === null || _this$getBlock2 === void 0 ? void 0 : _this$getBlock2.getAttributeLevel()) > 0;\n }\n }, {\n key: \"decreaseBlockAttributeLevel\",\n value: function decreaseBlockAttributeLevel() {\n var _this$getBlock3;\n\n var attribute = (_this$getBlock3 = this.getBlock()) === null || _this$getBlock3 === void 0 ? void 0 : _this$getBlock3.getLastAttribute();\n\n if (attribute) {\n return this.removeCurrentAttribute(attribute);\n }\n }\n }, {\n key: \"decreaseListLevel\",\n value: function decreaseListLevel() {\n var _Array$from17 = Array.from(this.getSelectedRange()),\n _Array$from18 = _slicedToArray2(_Array$from17, 1),\n startPosition = _Array$from18[0];\n\n var _this$document$locati = this.document.locationFromPosition(startPosition),\n index = _this$document$locati.index;\n\n var endIndex = index;\n var attributeLevel = this.getBlock().getAttributeLevel();\n var block = this.document.getBlockAtIndex(endIndex + 1);\n\n while (block) {\n if (!block.isListItem() || block.getAttributeLevel() <= attributeLevel) {\n break;\n }\n\n endIndex++;\n block = this.document.getBlockAtIndex(endIndex + 1);\n }\n\n startPosition = this.document.positionFromLocation({\n index: index,\n offset: 0\n });\n var endPosition = this.document.positionFromLocation({\n index: endIndex,\n offset: 0\n });\n return this.setDocument(this.document.removeLastListAttributeAtRange([startPosition, endPosition]));\n }\n }, {\n key: \"updateCurrentAttributes\",\n value: function updateCurrentAttributes() {\n var _this31 = this;\n\n var selectedRange = this.getSelectedRange({\n ignoreLock: true\n });\n\n if (selectedRange) {\n var currentAttributes = this.document.getCommonAttributesAtRange(selectedRange);\n Array.from(getAllAttributeNames()).forEach(function (attributeName) {\n if (!currentAttributes[attributeName]) {\n if (!_this31.canSetCurrentAttribute(attributeName)) {\n currentAttributes[attributeName] = false;\n }\n }\n });\n\n if (!objectsAreEqual(currentAttributes, this.currentAttributes)) {\n this.currentAttributes = currentAttributes;\n return this.notifyDelegateOfCurrentAttributesChange();\n }\n }\n }\n }, {\n key: \"getCurrentAttributes\",\n value: function getCurrentAttributes() {\n return extend.call({}, this.currentAttributes);\n }\n }, {\n key: \"getCurrentTextAttributes\",\n value: function getCurrentTextAttributes() {\n var attributes = {};\n\n for (var key in this.currentAttributes) {\n var value = this.currentAttributes[key];\n\n if (value !== false) {\n if (getTextConfig(key)) {\n attributes[key] = value;\n }\n }\n }\n\n return attributes;\n } // Selection freezing\n\n }, {\n key: \"freezeSelection\",\n value: function freezeSelection() {\n return this.setCurrentAttribute(\"frozen\", true);\n }\n }, {\n key: \"thawSelection\",\n value: function thawSelection() {\n return this.removeCurrentAttribute(\"frozen\");\n }\n }, {\n key: \"hasFrozenSelection\",\n value: function hasFrozenSelection() {\n return this.hasCurrentAttribute(\"frozen\");\n }\n }, {\n key: \"setSelection\",\n value: function setSelection(selectedRange) {\n var _this$delegate5;\n\n var locationRange = this.document.locationRangeFromRange(selectedRange);\n return (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : _this$delegate5.compositionDidRequestChangingSelectionToLocationRange(locationRange);\n }\n }, {\n key: \"getSelectedRange\",\n value: function getSelectedRange() {\n var locationRange = this.getLocationRange();\n\n if (locationRange) {\n return this.document.rangeFromLocationRange(locationRange);\n }\n }\n }, {\n key: \"setSelectedRange\",\n value: function setSelectedRange(selectedRange) {\n var locationRange = this.document.locationRangeFromRange(selectedRange);\n return this.getSelectionManager().setLocationRange(locationRange);\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n var locationRange = this.getLocationRange();\n\n if (locationRange) {\n return this.document.positionFromLocation(locationRange[0]);\n }\n }\n }, {\n key: \"getLocationRange\",\n value: function getLocationRange(options) {\n if (this.targetLocationRange) {\n return this.targetLocationRange;\n } else {\n return this.getSelectionManager().getLocationRange(options) || normalizeRange({\n index: 0,\n offset: 0\n });\n }\n }\n }, {\n key: \"withTargetLocationRange\",\n value: function withTargetLocationRange(locationRange, fn) {\n var result;\n this.targetLocationRange = locationRange;\n\n try {\n result = fn();\n } finally {\n this.targetLocationRange = null;\n }\n\n return result;\n }\n }, {\n key: \"withTargetRange\",\n value: function withTargetRange(range, fn) {\n var locationRange = this.document.locationRangeFromRange(range);\n return this.withTargetLocationRange(locationRange, fn);\n }\n }, {\n key: \"withTargetDOMRange\",\n value: function withTargetDOMRange(domRange, fn) {\n var locationRange = this.createLocationRangeFromDOMRange(domRange, {\n strict: false\n });\n return this.withTargetLocationRange(locationRange, fn);\n }\n }, {\n key: \"getExpandedRangeInDirection\",\n value: function getExpandedRangeInDirection(direction) {\n var _ref13 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n length = _ref13.length;\n\n var _Array$from19 = Array.from(this.getSelectedRange()),\n _Array$from20 = _slicedToArray2(_Array$from19, 2),\n startPosition = _Array$from20[0],\n endPosition = _Array$from20[1];\n\n if (direction === \"backward\") {\n if (length) {\n startPosition -= length;\n } else {\n startPosition = this.translateUTF16PositionFromOffset(startPosition, -1);\n }\n } else {\n if (length) {\n endPosition += length;\n } else {\n endPosition = this.translateUTF16PositionFromOffset(endPosition, 1);\n }\n }\n\n return normalizeRange([startPosition, endPosition]);\n }\n }, {\n key: \"shouldManageMovingCursorInDirection\",\n value: function shouldManageMovingCursorInDirection(direction) {\n if (this.editingAttachment) {\n return true;\n }\n\n var range = this.getExpandedRangeInDirection(direction);\n return this.getAttachmentAtRange(range) != null;\n }\n }, {\n key: \"moveCursorInDirection\",\n value: function moveCursorInDirection(direction) {\n var canEditAttachment, range;\n\n if (this.editingAttachment) {\n range = this.document.getRangeOfAttachment(this.editingAttachment);\n } else {\n var selectedRange = this.getSelectedRange();\n range = this.getExpandedRangeInDirection(direction);\n canEditAttachment = !rangesAreEqual(selectedRange, range);\n }\n\n if (direction === \"backward\") {\n this.setSelectedRange(range[0]);\n } else {\n this.setSelectedRange(range[1]);\n }\n\n if (canEditAttachment) {\n var attachment = this.getAttachmentAtRange(range);\n\n if (attachment) {\n return this.editAttachment(attachment);\n }\n }\n }\n }, {\n key: \"expandSelectionInDirection\",\n value: function expandSelectionInDirection(direction) {\n var _ref14 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n length = _ref14.length;\n\n var range = this.getExpandedRangeInDirection(direction, {\n length: length\n });\n return this.setSelectedRange(range);\n }\n }, {\n key: \"expandSelectionForEditing\",\n value: function expandSelectionForEditing() {\n if (this.hasCurrentAttribute(\"href\")) {\n return this.expandSelectionAroundCommonAttribute(\"href\");\n }\n }\n }, {\n key: \"expandSelectionAroundCommonAttribute\",\n value: function expandSelectionAroundCommonAttribute(attributeName) {\n var position = this.getPosition();\n var range = this.document.getRangeOfCommonAttributeAtPosition(attributeName, position);\n return this.setSelectedRange(range);\n }\n }, {\n key: \"selectionContainsAttachments\",\n value: function selectionContainsAttachments() {\n var _this$getSelectedAtta;\n\n return ((_this$getSelectedAtta = this.getSelectedAttachments()) === null || _this$getSelectedAtta === void 0 ? void 0 : _this$getSelectedAtta.length) > 0;\n }\n }, {\n key: \"selectionIsInCursorTarget\",\n value: function selectionIsInCursorTarget() {\n return this.editingAttachment || this.positionIsCursorTarget(this.getPosition());\n }\n }, {\n key: \"positionIsCursorTarget\",\n value: function positionIsCursorTarget(position) {\n var location = this.document.locationFromPosition(position);\n\n if (location) {\n return this.locationIsCursorTarget(location);\n }\n }\n }, {\n key: \"positionIsBlockBreak\",\n value: function positionIsBlockBreak(position) {\n var _this$document$getPie;\n\n return (_this$document$getPie = this.document.getPieceAtPosition(position)) === null || _this$document$getPie === void 0 ? void 0 : _this$document$getPie.isBlockBreak();\n }\n }, {\n key: \"getSelectedDocument\",\n value: function getSelectedDocument() {\n var selectedRange = this.getSelectedRange();\n\n if (selectedRange) {\n return this.document.getDocumentAtRange(selectedRange);\n }\n }\n }, {\n key: \"getSelectedAttachments\",\n value: function getSelectedAttachments() {\n var _this$getSelectedDocu;\n\n return (_this$getSelectedDocu = this.getSelectedDocument()) === null || _this$getSelectedDocu === void 0 ? void 0 : _this$getSelectedDocu.getAttachments();\n } // Attachments\n\n }, {\n key: \"getAttachments\",\n value: function getAttachments() {\n return this.attachments.slice(0);\n }\n }, {\n key: \"refreshAttachments\",\n value: function refreshAttachments() {\n var _this32 = this;\n\n var attachments = this.document.getAttachments();\n\n var _summarizeArrayChange = summarizeArrayChange(this.attachments, attachments),\n added = _summarizeArrayChange.added,\n removed = _summarizeArrayChange.removed;\n\n this.attachments = attachments;\n Array.from(removed).forEach(function (attachment) {\n var _this$delegate6, _this$delegate6$compo;\n\n attachment.delegate = null;\n (_this$delegate6 = _this32.delegate) === null || _this$delegate6 === void 0 ? void 0 : (_this$delegate6$compo = _this$delegate6.compositionDidRemoveAttachment) === null || _this$delegate6$compo === void 0 ? void 0 : _this$delegate6$compo.call(_this$delegate6, attachment);\n });\n return function () {\n var result = [];\n Array.from(added).forEach(function (attachment) {\n var _this$delegate7, _this$delegate7$compo;\n\n attachment.delegate = _this32;\n result.push((_this$delegate7 = _this32.delegate) === null || _this$delegate7 === void 0 ? void 0 : (_this$delegate7$compo = _this$delegate7.compositionDidAddAttachment) === null || _this$delegate7$compo === void 0 ? void 0 : _this$delegate7$compo.call(_this$delegate7, attachment));\n });\n return result;\n }();\n } // Attachment delegate\n\n }, {\n key: \"attachmentDidChangeAttributes\",\n value: function attachmentDidChangeAttributes(attachment) {\n var _this$delegate8, _this$delegate8$compo;\n\n this.revision++;\n return (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 ? void 0 : (_this$delegate8$compo = _this$delegate8.compositionDidEditAttachment) === null || _this$delegate8$compo === void 0 ? void 0 : _this$delegate8$compo.call(_this$delegate8, attachment);\n }\n }, {\n key: \"attachmentDidChangePreviewURL\",\n value: function attachmentDidChangePreviewURL(attachment) {\n var _this$delegate9, _this$delegate9$compo;\n\n this.revision++;\n return (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 ? void 0 : (_this$delegate9$compo = _this$delegate9.compositionDidChangeAttachmentPreviewURL) === null || _this$delegate9$compo === void 0 ? void 0 : _this$delegate9$compo.call(_this$delegate9, attachment);\n } // Attachment editing\n\n }, {\n key: \"editAttachment\",\n value: function editAttachment(attachment, options) {\n var _this$delegate10, _this$delegate10$comp;\n\n if (attachment === this.editingAttachment) return;\n this.stopEditingAttachment();\n this.editingAttachment = attachment;\n return (_this$delegate10 = this.delegate) === null || _this$delegate10 === void 0 ? void 0 : (_this$delegate10$comp = _this$delegate10.compositionDidStartEditingAttachment) === null || _this$delegate10$comp === void 0 ? void 0 : _this$delegate10$comp.call(_this$delegate10, this.editingAttachment, options);\n }\n }, {\n key: \"stopEditingAttachment\",\n value: function stopEditingAttachment() {\n var _this$delegate11, _this$delegate11$comp;\n\n if (!this.editingAttachment) return;\n (_this$delegate11 = this.delegate) === null || _this$delegate11 === void 0 ? void 0 : (_this$delegate11$comp = _this$delegate11.compositionDidStopEditingAttachment) === null || _this$delegate11$comp === void 0 ? void 0 : _this$delegate11$comp.call(_this$delegate11, this.editingAttachment);\n this.editingAttachment = null;\n }\n }, {\n key: \"updateAttributesForAttachment\",\n value: function updateAttributesForAttachment(attributes, attachment) {\n return this.setDocument(this.document.updateAttributesForAttachment(attributes, attachment));\n }\n }, {\n key: \"removeAttributeForAttachment\",\n value: function removeAttributeForAttachment(attribute, attachment) {\n return this.setDocument(this.document.removeAttributeForAttachment(attribute, attachment));\n } // Private\n\n }, {\n key: \"breakFormattedBlock\",\n value: function breakFormattedBlock(insertion) {\n var document = insertion.document;\n var block = insertion.block;\n var position = insertion.startPosition;\n var range = [position - 1, position];\n\n if (block.getBlockBreakPosition() === insertion.startLocation.offset) {\n if (block.breaksOnReturn() && insertion.nextCharacter === \"\\n\") {\n position += 1;\n } else {\n document = document.removeTextAtRange(range);\n }\n\n range = [position, position];\n } else if (insertion.nextCharacter === \"\\n\") {\n if (insertion.previousCharacter === \"\\n\") {\n range = [position - 1, position + 1];\n } else {\n range = [position, position + 1];\n position += 1;\n }\n } else if (insertion.startLocation.offset - 1 !== 0) {\n position += 1;\n }\n\n var newDocument = new Document([block.removeLastAttribute().copyWithoutText()]);\n this.setDocument(document.insertDocumentAtRange(newDocument, range));\n return this.setSelection(position);\n }\n }, {\n key: \"getPreviousBlock\",\n value: function getPreviousBlock() {\n var locationRange = this.getLocationRange();\n\n if (locationRange) {\n var index = locationRange[0].index;\n\n if (index > 0) {\n return this.document.getBlockAtIndex(index - 1);\n }\n }\n }\n }, {\n key: \"getBlock\",\n value: function getBlock() {\n var locationRange = this.getLocationRange();\n\n if (locationRange) {\n return this.document.getBlockAtIndex(locationRange[0].index);\n }\n }\n }, {\n key: \"getAttachmentAtRange\",\n value: function getAttachmentAtRange(range) {\n var document = this.document.getDocumentAtRange(range);\n\n if (document.toString() === \"\".concat(OBJECT_REPLACEMENT_CHARACTER, \"\\n\")) {\n return document.getAttachments()[0];\n }\n }\n }, {\n key: \"notifyDelegateOfCurrentAttributesChange\",\n value: function notifyDelegateOfCurrentAttributesChange() {\n var _this$delegate12, _this$delegate12$comp;\n\n return (_this$delegate12 = this.delegate) === null || _this$delegate12 === void 0 ? void 0 : (_this$delegate12$comp = _this$delegate12.compositionDidChangeCurrentAttributes) === null || _this$delegate12$comp === void 0 ? void 0 : _this$delegate12$comp.call(_this$delegate12, this.currentAttributes);\n }\n }, {\n key: \"notifyDelegateOfInsertionAtRange\",\n value: function notifyDelegateOfInsertionAtRange(range) {\n var _this$delegate13, _this$delegate13$comp;\n\n return (_this$delegate13 = this.delegate) === null || _this$delegate13 === void 0 ? void 0 : (_this$delegate13$comp = _this$delegate13.compositionDidPerformInsertionAtRange) === null || _this$delegate13$comp === void 0 ? void 0 : _this$delegate13$comp.call(_this$delegate13, range);\n }\n }, {\n key: \"translateUTF16PositionFromOffset\",\n value: function translateUTF16PositionFromOffset(position, offset) {\n var utf16string = this.document.toUTF16String();\n var utf16position = utf16string.offsetFromUCS2Offset(position);\n return utf16string.offsetToUCS2Offset(utf16position + offset);\n }\n }]);\n\n return Composition;\n}(BasicObject);\n\nComposition.proxyMethod(\"getSelectionManager().getPointRange\");\nComposition.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\");\nComposition.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\");\nComposition.proxyMethod(\"getSelectionManager().locationIsCursorTarget\");\nComposition.proxyMethod(\"getSelectionManager().selectionIsExpanded\");\nComposition.proxyMethod(\"delegate?.getSelectionManager\");\n\nvar UndoManager = /*#__PURE__*/function (_BasicObject11) {\n _inherits2(UndoManager, _BasicObject11);\n\n var _super22 = _createSuper2(UndoManager);\n\n function UndoManager(composition) {\n var _this33;\n\n _classCallCheck2(this, UndoManager);\n\n _this33 = _super22.apply(this, arguments);\n _this33.composition = composition;\n _this33.undoEntries = [];\n _this33.redoEntries = [];\n return _this33;\n }\n\n _createClass2(UndoManager, [{\n key: \"recordUndoEntry\",\n value: function recordUndoEntry(description) {\n var _ref15 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n context = _ref15.context,\n consolidatable = _ref15.consolidatable;\n\n var previousEntry = this.undoEntries.slice(-1)[0];\n\n if (!consolidatable || !entryHasDescriptionAndContext(previousEntry, description, context)) {\n var undoEntry = this.createEntry({\n description: description,\n context: context\n });\n this.undoEntries.push(undoEntry);\n this.redoEntries = [];\n }\n }\n }, {\n key: \"undo\",\n value: function undo() {\n var undoEntry = this.undoEntries.pop();\n\n if (undoEntry) {\n var redoEntry = this.createEntry(undoEntry);\n this.redoEntries.push(redoEntry);\n return this.composition.loadSnapshot(undoEntry.snapshot);\n }\n }\n }, {\n key: \"redo\",\n value: function redo() {\n var redoEntry = this.redoEntries.pop();\n\n if (redoEntry) {\n var undoEntry = this.createEntry(redoEntry);\n this.undoEntries.push(undoEntry);\n return this.composition.loadSnapshot(redoEntry.snapshot);\n }\n }\n }, {\n key: \"canUndo\",\n value: function canUndo() {\n return this.undoEntries.length > 0;\n }\n }, {\n key: \"canRedo\",\n value: function canRedo() {\n return this.redoEntries.length > 0;\n } // Private\n\n }, {\n key: \"createEntry\",\n value: function createEntry() {\n var _ref16 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n description = _ref16.description,\n context = _ref16.context;\n\n return {\n description: description === null || description === void 0 ? void 0 : description.toString(),\n context: JSON.stringify(context),\n snapshot: this.composition.getSnapshot()\n };\n }\n }]);\n\n return UndoManager;\n}(BasicObject);\n\nvar entryHasDescriptionAndContext = function entryHasDescriptionAndContext(entry, description, context) {\n return (entry === null || entry === void 0 ? void 0 : entry.description) === (description === null || description === void 0 ? void 0 : description.toString()) && (entry === null || entry === void 0 ? void 0 : entry.context) === JSON.stringify(context);\n};\n\nvar attachmentGalleryFilter = function attachmentGalleryFilter(snapshot) {\n var filter = new Filter(snapshot);\n filter.perform();\n return filter.getSnapshot();\n};\n\nvar BLOCK_ATTRIBUTE_NAME = \"attachmentGallery\";\nvar TEXT_ATTRIBUTE_NAME = \"presentation\";\nvar TEXT_ATTRIBUTE_VALUE = \"gallery\";\n\nvar Filter = /*#__PURE__*/function () {\n function Filter(snapshot) {\n _classCallCheck2(this, Filter);\n\n this.document = snapshot.document;\n this.selectedRange = snapshot.selectedRange;\n }\n\n _createClass2(Filter, [{\n key: \"perform\",\n value: function perform() {\n this.removeBlockAttribute();\n return this.applyBlockAttribute();\n }\n }, {\n key: \"getSnapshot\",\n value: function getSnapshot() {\n return {\n document: this.document,\n selectedRange: this.selectedRange\n };\n } // Private\n\n }, {\n key: \"removeBlockAttribute\",\n value: function removeBlockAttribute() {\n var _this34 = this;\n\n return this.findRangesOfBlocks().map(function (range) {\n return _this34.document = _this34.document.removeAttributeAtRange(BLOCK_ATTRIBUTE_NAME, range);\n });\n }\n }, {\n key: \"applyBlockAttribute\",\n value: function applyBlockAttribute() {\n var _this35 = this;\n\n var offset = 0;\n this.findRangesOfPieces().forEach(function (range) {\n if (range[1] - range[0] > 1) {\n range[0] += offset;\n range[1] += offset;\n\n if (_this35.document.getCharacterAtPosition(range[1]) !== \"\\n\") {\n _this35.document = _this35.document.insertBlockBreakAtRange(range[1]);\n\n if (range[1] < _this35.selectedRange[1]) {\n _this35.moveSelectedRangeForward();\n }\n\n range[1]++;\n offset++;\n }\n\n if (range[0] !== 0) {\n if (_this35.document.getCharacterAtPosition(range[0] - 1) !== \"\\n\") {\n _this35.document = _this35.document.insertBlockBreakAtRange(range[0]);\n\n if (range[0] < _this35.selectedRange[0]) {\n _this35.moveSelectedRangeForward();\n }\n\n range[0]++;\n offset++;\n }\n }\n\n _this35.document = _this35.document.applyBlockAttributeAtRange(BLOCK_ATTRIBUTE_NAME, true, range);\n }\n });\n }\n }, {\n key: \"findRangesOfBlocks\",\n value: function findRangesOfBlocks() {\n return this.document.findRangesForBlockAttribute(BLOCK_ATTRIBUTE_NAME);\n }\n }, {\n key: \"findRangesOfPieces\",\n value: function findRangesOfPieces() {\n return this.document.findRangesForTextAttribute(TEXT_ATTRIBUTE_NAME, {\n withValue: TEXT_ATTRIBUTE_VALUE\n });\n }\n }, {\n key: \"moveSelectedRangeForward\",\n value: function moveSelectedRangeForward() {\n this.selectedRange[0] += 1;\n this.selectedRange[1] += 1;\n }\n }]);\n\n return Filter;\n}();\n\nvar DEFAULT_FILTERS = [attachmentGalleryFilter];\n\nvar Editor = /*#__PURE__*/function () {\n function Editor(composition, selectionManager, element) {\n _classCallCheck2(this, Editor);\n\n this.insertFiles = this.insertFiles.bind(this);\n this.composition = composition;\n this.selectionManager = selectionManager;\n this.element = element;\n this.undoManager = new UndoManager(this.composition);\n this.filters = DEFAULT_FILTERS.slice(0);\n }\n\n _createClass2(Editor, [{\n key: \"loadDocument\",\n value: function loadDocument(document) {\n return this.loadSnapshot({\n document: document,\n selectedRange: [0, 0]\n });\n }\n }, {\n key: \"loadHTML\",\n value: function loadHTML() {\n var html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var document = HTMLParser.parse(html, {\n referenceElement: this.element\n }).getDocument();\n return this.loadDocument(document);\n }\n }, {\n key: \"loadJSON\",\n value: function loadJSON(_ref) {\n var document = _ref.document,\n selectedRange = _ref.selectedRange;\n document = Document.fromJSON(document);\n return this.loadSnapshot({\n document: document,\n selectedRange: selectedRange\n });\n }\n }, {\n key: \"loadSnapshot\",\n value: function loadSnapshot(snapshot) {\n this.undoManager = new UndoManager(this.composition);\n return this.composition.loadSnapshot(snapshot);\n }\n }, {\n key: \"getDocument\",\n value: function getDocument() {\n return this.composition.document;\n }\n }, {\n key: \"getSelectedDocument\",\n value: function getSelectedDocument() {\n return this.composition.getSelectedDocument();\n }\n }, {\n key: \"getSnapshot\",\n value: function getSnapshot() {\n return this.composition.getSnapshot();\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.getSnapshot();\n } // Document manipulation\n\n }, {\n key: \"deleteInDirection\",\n value: function deleteInDirection(direction) {\n return this.composition.deleteInDirection(direction);\n }\n }, {\n key: \"insertAttachment\",\n value: function insertAttachment(attachment) {\n return this.composition.insertAttachment(attachment);\n }\n }, {\n key: \"insertAttachments\",\n value: function insertAttachments(attachments) {\n return this.composition.insertAttachments(attachments);\n }\n }, {\n key: \"insertDocument\",\n value: function insertDocument(document) {\n return this.composition.insertDocument(document);\n }\n }, {\n key: \"insertFile\",\n value: function insertFile(file) {\n return this.composition.insertFile(file);\n }\n }, {\n key: \"insertFiles\",\n value: function insertFiles(files) {\n return this.composition.insertFiles(files);\n }\n }, {\n key: \"insertHTML\",\n value: function insertHTML(html) {\n return this.composition.insertHTML(html);\n }\n }, {\n key: \"insertString\",\n value: function insertString(string) {\n return this.composition.insertString(string);\n }\n }, {\n key: \"insertText\",\n value: function insertText(text) {\n return this.composition.insertText(text);\n }\n }, {\n key: \"insertLineBreak\",\n value: function insertLineBreak() {\n return this.composition.insertLineBreak();\n } // Selection\n\n }, {\n key: \"getSelectedRange\",\n value: function getSelectedRange() {\n return this.composition.getSelectedRange();\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n return this.composition.getPosition();\n }\n }, {\n key: \"getClientRectAtPosition\",\n value: function getClientRectAtPosition(position) {\n var locationRange = this.getDocument().locationRangeFromRange([position, position + 1]);\n return this.selectionManager.getClientRectAtLocationRange(locationRange);\n }\n }, {\n key: \"expandSelectionInDirection\",\n value: function expandSelectionInDirection(direction) {\n return this.composition.expandSelectionInDirection(direction);\n }\n }, {\n key: \"moveCursorInDirection\",\n value: function moveCursorInDirection(direction) {\n return this.composition.moveCursorInDirection(direction);\n }\n }, {\n key: \"setSelectedRange\",\n value: function setSelectedRange(selectedRange) {\n return this.composition.setSelectedRange(selectedRange);\n } // Attributes\n\n }, {\n key: \"activateAttribute\",\n value: function activateAttribute(name) {\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return this.composition.setCurrentAttribute(name, value);\n }\n }, {\n key: \"attributeIsActive\",\n value: function attributeIsActive(name) {\n return this.composition.hasCurrentAttribute(name);\n }\n }, {\n key: \"canActivateAttribute\",\n value: function canActivateAttribute(name) {\n return this.composition.canSetCurrentAttribute(name);\n }\n }, {\n key: \"deactivateAttribute\",\n value: function deactivateAttribute(name) {\n return this.composition.removeCurrentAttribute(name);\n } // Nesting level\n\n }, {\n key: \"canDecreaseNestingLevel\",\n value: function canDecreaseNestingLevel() {\n return this.composition.canDecreaseNestingLevel();\n }\n }, {\n key: \"canIncreaseNestingLevel\",\n value: function canIncreaseNestingLevel() {\n return this.composition.canIncreaseNestingLevel();\n }\n }, {\n key: \"decreaseNestingLevel\",\n value: function decreaseNestingLevel() {\n if (this.canDecreaseNestingLevel()) {\n return this.composition.decreaseNestingLevel();\n }\n }\n }, {\n key: \"increaseNestingLevel\",\n value: function increaseNestingLevel() {\n if (this.canIncreaseNestingLevel()) {\n return this.composition.increaseNestingLevel();\n }\n } // Undo/redo\n\n }, {\n key: \"canRedo\",\n value: function canRedo() {\n return this.undoManager.canRedo();\n }\n }, {\n key: \"canUndo\",\n value: function canUndo() {\n return this.undoManager.canUndo();\n }\n }, {\n key: \"recordUndoEntry\",\n value: function recordUndoEntry(description) {\n var _ref17 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n context = _ref17.context,\n consolidatable = _ref17.consolidatable;\n\n return this.undoManager.recordUndoEntry(description, {\n context: context,\n consolidatable: consolidatable\n });\n }\n }, {\n key: \"redo\",\n value: function redo() {\n if (this.canRedo()) {\n return this.undoManager.redo();\n }\n }\n }, {\n key: \"undo\",\n value: function undo() {\n if (this.canUndo()) {\n return this.undoManager.undo();\n }\n }\n }]);\n\n return Editor;\n}();\n/* eslint-disable\n no-var,\n prefer-const,\n*/\n\n\nvar LocationMapper = /*#__PURE__*/function () {\n function LocationMapper(element) {\n _classCallCheck2(this, LocationMapper);\n\n this.element = element;\n }\n\n _createClass2(LocationMapper, [{\n key: \"findLocationFromContainerAndOffset\",\n value: function findLocationFromContainerAndOffset(container, offset) {\n var _ref18 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n strict: true\n },\n strict = _ref18.strict;\n\n var childIndex = 0;\n var foundBlock = false;\n var location = {\n index: 0,\n offset: 0\n };\n var attachmentElement = this.findAttachmentElementParentForNode(container);\n\n if (attachmentElement) {\n container = attachmentElement.parentNode;\n offset = findChildIndexOfNode(attachmentElement);\n }\n\n var walker = walkTree(this.element, {\n usingFilter: rejectAttachmentContents\n });\n\n while (walker.nextNode()) {\n var node = walker.currentNode;\n\n if (node === container && nodeIsTextNode(container)) {\n if (!nodeIsCursorTarget(node)) {\n location.offset += offset;\n }\n\n break;\n } else {\n if (node.parentNode === container) {\n if (childIndex++ === offset) {\n break;\n }\n } else if (!elementContainsNode(container, node)) {\n if (childIndex > 0) {\n break;\n }\n }\n\n if (nodeIsBlockStart(node, {\n strict: strict\n })) {\n if (foundBlock) {\n location.index++;\n }\n\n location.offset = 0;\n foundBlock = true;\n } else {\n location.offset += nodeLength(node);\n }\n }\n }\n\n return location;\n }\n }, {\n key: \"findContainerAndOffsetFromLocation\",\n value: function findContainerAndOffsetFromLocation(location) {\n var container, offset;\n\n if (location.index === 0 && location.offset === 0) {\n container = this.element;\n offset = 0;\n\n while (container.firstChild) {\n container = container.firstChild;\n\n if (nodeIsBlockContainer(container)) {\n offset = 1;\n break;\n }\n }\n\n return [container, offset];\n }\n\n var _this$findNodeAndOffs = this.findNodeAndOffsetFromLocation(location),\n _this$findNodeAndOffs2 = _slicedToArray2(_this$findNodeAndOffs, 2),\n node = _this$findNodeAndOffs2[0],\n nodeOffset = _this$findNodeAndOffs2[1];\n\n if (!node) return;\n\n if (nodeIsTextNode(node)) {\n if (nodeLength(node) === 0) {\n container = node.parentNode.parentNode;\n offset = findChildIndexOfNode(node.parentNode);\n\n if (nodeIsCursorTarget(node, {\n name: \"right\"\n })) {\n offset++;\n }\n } else {\n container = node;\n offset = location.offset - nodeOffset;\n }\n } else {\n container = node.parentNode;\n\n if (!nodeIsBlockStart(node.previousSibling)) {\n if (!nodeIsBlockContainer(container)) {\n while (node === container.lastChild) {\n node = container;\n container = container.parentNode;\n\n if (nodeIsBlockContainer(container)) {\n break;\n }\n }\n }\n }\n\n offset = findChildIndexOfNode(node);\n\n if (location.offset !== 0) {\n offset++;\n }\n }\n\n return [container, offset];\n }\n }, {\n key: \"findNodeAndOffsetFromLocation\",\n value: function findNodeAndOffsetFromLocation(location) {\n var node, nodeOffset;\n var offset = 0;\n\n var _iterator5 = _createForOfIteratorHelper2(this.getSignificantNodesForIndex(location.index)),\n _step6;\n\n try {\n for (_iterator5.s(); !(_step6 = _iterator5.n()).done;) {\n var currentNode = _step6.value;\n var length = nodeLength(currentNode);\n\n if (location.offset <= offset + length) {\n if (nodeIsTextNode(currentNode)) {\n node = currentNode;\n nodeOffset = offset;\n\n if (location.offset === nodeOffset && nodeIsCursorTarget(node)) {\n break;\n }\n } else if (!node) {\n node = currentNode;\n nodeOffset = offset;\n }\n }\n\n offset += length;\n\n if (offset > location.offset) {\n break;\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n return [node, nodeOffset];\n } // Private\n\n }, {\n key: \"findAttachmentElementParentForNode\",\n value: function findAttachmentElementParentForNode(node) {\n while (node && node !== this.element) {\n if (nodeIsAttachmentElement(node)) {\n return node;\n }\n\n node = node.parentNode;\n }\n }\n }, {\n key: \"getSignificantNodesForIndex\",\n value: function getSignificantNodesForIndex(index) {\n var nodes = [];\n var walker = walkTree(this.element, {\n usingFilter: acceptSignificantNodes\n });\n var recordingNodes = false;\n\n while (walker.nextNode()) {\n var node = walker.currentNode;\n\n if (nodeIsBlockStartComment(node)) {\n var blockIndex;\n\n if (blockIndex != null) {\n blockIndex++;\n } else {\n blockIndex = 0;\n }\n\n if (blockIndex === index) {\n recordingNodes = true;\n } else if (recordingNodes) {\n break;\n }\n } else if (recordingNodes) {\n nodes.push(node);\n }\n }\n\n return nodes;\n }\n }]);\n\n return LocationMapper;\n}();\n\nvar nodeLength = function nodeLength(node) {\n if (node.nodeType === Node.TEXT_NODE) {\n if (nodeIsCursorTarget(node)) {\n return 0;\n } else {\n var string = node.textContent;\n return string.length;\n }\n } else if (tagName(node) === \"br\" || nodeIsAttachmentElement(node)) {\n return 1;\n } else {\n return 0;\n }\n};\n\nvar acceptSignificantNodes = function acceptSignificantNodes(node) {\n if (rejectEmptyTextNodes(node) === NodeFilter.FILTER_ACCEPT) {\n return rejectAttachmentContents(node);\n } else {\n return NodeFilter.FILTER_REJECT;\n }\n};\n\nvar rejectEmptyTextNodes = function rejectEmptyTextNodes(node) {\n if (nodeIsEmptyTextNode(node)) {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n};\n\nvar rejectAttachmentContents = function rejectAttachmentContents(node) {\n if (nodeIsAttachmentElement(node.parentNode)) {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n};\n/* eslint-disable\n id-length,\n no-empty,\n*/\n\n\nvar PointMapper = /*#__PURE__*/function () {\n function PointMapper() {\n _classCallCheck2(this, PointMapper);\n }\n\n _createClass2(PointMapper, [{\n key: \"createDOMRangeFromPoint\",\n value: function createDOMRangeFromPoint(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var domRange;\n\n if (document.caretPositionFromPoint) {\n var _document$caretPositi = document.caretPositionFromPoint(x, y),\n offsetNode = _document$caretPositi.offsetNode,\n offset = _document$caretPositi.offset;\n\n domRange = document.createRange();\n domRange.setStart(offsetNode, offset);\n return domRange;\n } else if (document.caretRangeFromPoint) {\n return document.caretRangeFromPoint(x, y);\n } else if (document.body.createTextRange) {\n var originalDOMRange = getDOMRange();\n\n try {\n // IE 11 throws \"Unspecified error\" when using moveToPoint\n // during a drag-and-drop operation.\n var textRange = document.body.createTextRange();\n textRange.moveToPoint(x, y);\n textRange.select();\n } catch (error) {}\n\n domRange = getDOMRange();\n setDOMRange(originalDOMRange);\n return domRange;\n }\n }\n }, {\n key: \"getClientRectsForDOMRange\",\n value: function getClientRectsForDOMRange(domRange) {\n var array = Array.from(domRange.getClientRects());\n var start = array[0];\n var end = array[array.length - 1];\n return [start, end];\n }\n }]);\n\n return PointMapper;\n}();\n/* eslint-disable\n*/\n\n\nvar SelectionManager = /*#__PURE__*/function (_BasicObject12) {\n _inherits2(SelectionManager, _BasicObject12);\n\n var _super23 = _createSuper2(SelectionManager);\n\n function SelectionManager(element) {\n var _this36;\n\n _classCallCheck2(this, SelectionManager);\n\n _this36 = _super23.apply(this, arguments);\n _this36.didMouseDown = _this36.didMouseDown.bind(_assertThisInitialized2(_this36));\n _this36.selectionDidChange = _this36.selectionDidChange.bind(_assertThisInitialized2(_this36));\n _this36.element = element;\n _this36.locationMapper = new LocationMapper(_this36.element);\n _this36.pointMapper = new PointMapper();\n _this36.lockCount = 0;\n handleEvent(\"mousedown\", {\n onElement: _this36.element,\n withCallback: _this36.didMouseDown\n });\n return _this36;\n }\n\n _createClass2(SelectionManager, [{\n key: \"getLocationRange\",\n value: function getLocationRange() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (options.strict === false) {\n return this.createLocationRangeFromDOMRange(getDOMRange());\n } else if (options.ignoreLock) {\n return this.currentLocationRange;\n } else if (this.lockedLocationRange) {\n return this.lockedLocationRange;\n } else {\n return this.currentLocationRange;\n }\n }\n }, {\n key: \"setLocationRange\",\n value: function setLocationRange(locationRange) {\n if (this.lockedLocationRange) return;\n locationRange = normalizeRange(locationRange);\n var domRange = this.createDOMRangeFromLocationRange(locationRange);\n\n if (domRange) {\n setDOMRange(domRange);\n this.updateCurrentLocationRange(locationRange);\n }\n }\n }, {\n key: \"setLocationRangeFromPointRange\",\n value: function setLocationRangeFromPointRange(pointRange) {\n pointRange = normalizeRange(pointRange);\n var startLocation = this.getLocationAtPoint(pointRange[0]);\n var endLocation = this.getLocationAtPoint(pointRange[1]);\n this.setLocationRange([startLocation, endLocation]);\n }\n }, {\n key: \"getClientRectAtLocationRange\",\n value: function getClientRectAtLocationRange(locationRange) {\n var domRange = this.createDOMRangeFromLocationRange(locationRange);\n\n if (domRange) {\n return this.getClientRectsForDOMRange(domRange)[1];\n }\n }\n }, {\n key: \"locationIsCursorTarget\",\n value: function locationIsCursorTarget(location) {\n var node = Array.from(this.findNodeAndOffsetFromLocation(location))[0];\n return nodeIsCursorTarget(node);\n }\n }, {\n key: \"lock\",\n value: function lock() {\n if (this.lockCount++ === 0) {\n this.updateCurrentLocationRange();\n this.lockedLocationRange = this.getLocationRange();\n }\n }\n }, {\n key: \"unlock\",\n value: function unlock() {\n if (--this.lockCount === 0) {\n var lockedLocationRange = this.lockedLocationRange;\n this.lockedLocationRange = null;\n\n if (lockedLocationRange != null) {\n return this.setLocationRange(lockedLocationRange);\n }\n }\n }\n }, {\n key: \"clearSelection\",\n value: function clearSelection() {\n var _getDOMSelection;\n\n return (_getDOMSelection = getDOMSelection()) === null || _getDOMSelection === void 0 ? void 0 : _getDOMSelection.removeAllRanges();\n }\n }, {\n key: \"selectionIsCollapsed\",\n value: function selectionIsCollapsed() {\n var _getDOMRange;\n\n return ((_getDOMRange = getDOMRange()) === null || _getDOMRange === void 0 ? void 0 : _getDOMRange.collapsed) === true;\n }\n }, {\n key: \"selectionIsExpanded\",\n value: function selectionIsExpanded() {\n return !this.selectionIsCollapsed();\n }\n }, {\n key: \"createLocationRangeFromDOMRange\",\n value: function createLocationRangeFromDOMRange(domRange, options) {\n if (domRange == null || !this.domRangeWithinElement(domRange)) return;\n var start = this.findLocationFromContainerAndOffset(domRange.startContainer, domRange.startOffset, options);\n if (!start) return;\n var end = domRange.collapsed ? undefined : this.findLocationFromContainerAndOffset(domRange.endContainer, domRange.endOffset, options);\n return normalizeRange([start, end]);\n }\n }, {\n key: \"didMouseDown\",\n value: function didMouseDown() {\n return this.pauseTemporarily();\n }\n }, {\n key: \"pauseTemporarily\",\n value: function pauseTemporarily() {\n var _this37 = this;\n\n var resumeHandlers;\n this.paused = true;\n\n var resume = function resume() {\n _this37.paused = false;\n clearTimeout(resumeTimeout);\n Array.from(resumeHandlers).forEach(function (handler) {\n handler.destroy();\n });\n\n if (elementContainsNode(document, _this37.element)) {\n return _this37.selectionDidChange();\n }\n };\n\n var resumeTimeout = setTimeout(resume, 200);\n resumeHandlers = [\"mousemove\", \"keydown\"].map(function (eventName) {\n return handleEvent(eventName, {\n onElement: document,\n withCallback: resume\n });\n });\n }\n }, {\n key: \"selectionDidChange\",\n value: function selectionDidChange() {\n if (!this.paused && !innerElementIsActive(this.element)) {\n return this.updateCurrentLocationRange();\n }\n }\n }, {\n key: \"updateCurrentLocationRange\",\n value: function updateCurrentLocationRange(locationRange) {\n if (locationRange != null ? locationRange : locationRange = this.createLocationRangeFromDOMRange(getDOMRange())) {\n if (!rangesAreEqual(locationRange, this.currentLocationRange)) {\n var _this$delegate, _this$delegate$locati;\n\n this.currentLocationRange = locationRange;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$locati = _this$delegate.locationRangeDidChange) === null || _this$delegate$locati === void 0 ? void 0 : _this$delegate$locati.call(_this$delegate, this.currentLocationRange.slice(0));\n }\n }\n }\n }, {\n key: \"createDOMRangeFromLocationRange\",\n value: function createDOMRangeFromLocationRange(locationRange) {\n var rangeStart = this.findContainerAndOffsetFromLocation(locationRange[0]);\n var rangeEnd = rangeIsCollapsed(locationRange) ? rangeStart : this.findContainerAndOffsetFromLocation(locationRange[1]) || rangeStart;\n\n if (rangeStart != null && rangeEnd != null) {\n var domRange = document.createRange();\n domRange.setStart.apply(domRange, _toConsumableArray2(Array.from(rangeStart || [])));\n domRange.setEnd.apply(domRange, _toConsumableArray2(Array.from(rangeEnd || [])));\n return domRange;\n }\n }\n }, {\n key: \"getLocationAtPoint\",\n value: function getLocationAtPoint(point) {\n var domRange = this.createDOMRangeFromPoint(point);\n\n if (domRange) {\n var _this$createLocationR;\n\n return (_this$createLocationR = this.createLocationRangeFromDOMRange(domRange)) === null || _this$createLocationR === void 0 ? void 0 : _this$createLocationR[0];\n }\n }\n }, {\n key: \"domRangeWithinElement\",\n value: function domRangeWithinElement(domRange) {\n if (domRange.collapsed) {\n return elementContainsNode(this.element, domRange.startContainer);\n } else {\n return elementContainsNode(this.element, domRange.startContainer) && elementContainsNode(this.element, domRange.endContainer);\n }\n }\n }]);\n\n return SelectionManager;\n}(BasicObject);\n\nSelectionManager.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\");\nSelectionManager.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\");\nSelectionManager.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\");\nSelectionManager.proxyMethod(\"pointMapper.createDOMRangeFromPoint\");\nSelectionManager.proxyMethod(\"pointMapper.getClientRectsForDOMRange\");\nvar models = {\n Attachment: Attachment,\n AttachmentManager: AttachmentManager,\n AttachmentPiece: AttachmentPiece,\n Block: Block,\n Composition: Composition,\n Cocument: Document,\n Editor: Editor,\n HTMLParser: HTMLParser,\n HTMLSanitizer: HTMLSanitizer,\n LineBreakInsertion: LineBreakInsertion,\n LocationMapper: LocationMapper,\n ManagedAttachment: ManagedAttachment,\n Piece: Piece,\n PointMapper: PointMapper,\n SelectionManager: SelectionManager,\n SplittableList: SplittableList,\n StringPiece: StringPiece,\n Text: Text,\n UndoManager: UndoManager\n};\nvar Trix = {\n VERSION: version,\n config: config\n};\nObject.assign(Trix, models);\nwindow.Trix = Trix;\n\nvar ObjectGroup = /*#__PURE__*/function () {\n function ObjectGroup() {\n _classCallCheck2(this, ObjectGroup);\n\n var objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var _ref19 = arguments.length > 1 ? arguments[1] : undefined,\n depth = _ref19.depth,\n asTree = _ref19.asTree;\n\n this.objects = objects;\n\n if (asTree) {\n this.depth = depth;\n this.objects = this.constructor.groupObjects(this.objects, {\n asTree: asTree,\n depth: this.depth + 1\n });\n }\n }\n\n _createClass2(ObjectGroup, [{\n key: \"getObjects\",\n value: function getObjects() {\n return this.objects;\n }\n }, {\n key: \"getDepth\",\n value: function getDepth() {\n return this.depth;\n }\n }, {\n key: \"getCacheKey\",\n value: function getCacheKey() {\n var keys = [\"objectGroup\"];\n Array.from(this.getObjects()).forEach(function (object) {\n keys.push(object.getCacheKey());\n });\n return keys.join(\"/\");\n }\n }], [{\n key: \"groupObjects\",\n value: function groupObjects() {\n var _this38 = this;\n\n var ungroupedObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var _ref20 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n depth = _ref20.depth,\n asTree = _ref20.asTree;\n\n var group;\n\n if (asTree) {\n if (depth == null) {\n depth = 0;\n }\n }\n\n var objects = [];\n Array.from(ungroupedObjects).forEach(function (object) {\n var _object$canBeGrouped2;\n\n if (group) {\n var _object$canBeGrouped, _group$canBeGroupedWi, _group;\n\n if ((_object$canBeGrouped = object.canBeGrouped) !== null && _object$canBeGrouped !== void 0 && _object$canBeGrouped.call(object, depth) && (_group$canBeGroupedWi = (_group = group[group.length - 1]).canBeGroupedWith) !== null && _group$canBeGroupedWi !== void 0 && _group$canBeGroupedWi.call(_group, object, depth)) {\n group.push(object);\n return;\n } else {\n objects.push(new _this38(group, {\n depth: depth,\n asTree: asTree\n }));\n group = null;\n }\n }\n\n if ((_object$canBeGrouped2 = object.canBeGrouped) !== null && _object$canBeGrouped2 !== void 0 && _object$canBeGrouped2.call(object, depth)) {\n group = [object];\n } else {\n objects.push(object);\n }\n });\n\n if (group) {\n objects.push(new this(group, {\n depth: depth,\n asTree: asTree\n }));\n }\n\n return objects;\n }\n }]);\n\n return ObjectGroup;\n}();\n\nvar ElementStore = /*#__PURE__*/function () {\n function ElementStore(elements) {\n _classCallCheck2(this, ElementStore);\n\n this.reset(elements);\n }\n\n _createClass2(ElementStore, [{\n key: \"add\",\n value: function add(element) {\n var key = getKey(element);\n this.elements[key] = element;\n }\n }, {\n key: \"remove\",\n value: function remove(element) {\n var key = getKey(element);\n var value = this.elements[key];\n\n if (value) {\n delete this.elements[key];\n return value;\n }\n }\n }, {\n key: \"reset\",\n value: function reset() {\n var _this39 = this;\n\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n this.elements = {};\n Array.from(elements).forEach(function (element) {\n _this39.add(element);\n });\n return elements;\n }\n }]);\n\n return ElementStore;\n}();\n\nvar getKey = function getKey(element) {\n return element.dataset.trixStoreKey;\n};\n\nvar ObjectView = /*#__PURE__*/function (_BasicObject13) {\n _inherits2(ObjectView, _BasicObject13);\n\n var _super24 = _createSuper2(ObjectView);\n\n function ObjectView(object) {\n var _this40;\n\n _classCallCheck2(this, ObjectView);\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _this40 = _super24.apply(this, arguments);\n _this40.object = object;\n _this40.options = options;\n _this40.childViews = [];\n _this40.rootView = _assertThisInitialized2(_this40);\n return _this40;\n }\n\n _createClass2(ObjectView, [{\n key: \"getNodes\",\n value: function getNodes() {\n if (!this.nodes) {\n this.nodes = this.createNodes();\n }\n\n return this.nodes.map(function (node) {\n return node.cloneNode(true);\n });\n }\n }, {\n key: \"invalidate\",\n value: function invalidate() {\n var _this$parentView;\n\n this.nodes = null;\n this.childViews = [];\n return (_this$parentView = this.parentView) === null || _this$parentView === void 0 ? void 0 : _this$parentView.invalidate();\n }\n }, {\n key: \"invalidateViewForObject\",\n value: function invalidateViewForObject(object) {\n var _this$findViewForObje;\n\n return (_this$findViewForObje = this.findViewForObject(object)) === null || _this$findViewForObje === void 0 ? void 0 : _this$findViewForObje.invalidate();\n }\n }, {\n key: \"findOrCreateCachedChildView\",\n value: function findOrCreateCachedChildView(viewClass, object, options) {\n var view = this.getCachedViewForObject(object);\n\n if (view) {\n this.recordChildView(view);\n } else {\n view = this.createChildView.apply(this, arguments);\n this.cacheViewForObject(view, object);\n }\n\n return view;\n }\n }, {\n key: \"createChildView\",\n value: function createChildView(viewClass, object) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (object instanceof ObjectGroup) {\n options.viewClass = viewClass;\n viewClass = ObjectGroupView;\n }\n\n var view = new viewClass(object, options);\n return this.recordChildView(view);\n }\n }, {\n key: \"recordChildView\",\n value: function recordChildView(view) {\n view.parentView = this;\n view.rootView = this.rootView;\n this.childViews.push(view);\n return view;\n }\n }, {\n key: \"getAllChildViews\",\n value: function getAllChildViews() {\n var views = [];\n this.childViews.forEach(function (childView) {\n views.push(childView);\n views = views.concat(childView.getAllChildViews());\n });\n return views;\n }\n }, {\n key: \"findElement\",\n value: function findElement() {\n return this.findElementForObject(this.object);\n }\n }, {\n key: \"findElementForObject\",\n value: function findElementForObject(object) {\n var id = object === null || object === void 0 ? void 0 : object.id;\n\n if (id) {\n return this.rootView.element.querySelector(\"[data-trix-id='\".concat(id, \"']\"));\n }\n }\n }, {\n key: \"findViewForObject\",\n value: function findViewForObject(object) {\n var _iterator6 = _createForOfIteratorHelper2(this.getAllChildViews()),\n _step7;\n\n try {\n for (_iterator6.s(); !(_step7 = _iterator6.n()).done;) {\n var view = _step7.value;\n\n if (view.object === object) {\n return view;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n }, {\n key: \"getViewCache\",\n value: function getViewCache() {\n if (this.rootView === this) {\n if (this.isViewCachingEnabled()) {\n if (!this.viewCache) {\n this.viewCache = {};\n }\n\n return this.viewCache;\n }\n } else {\n return this.rootView.getViewCache();\n }\n }\n }, {\n key: \"isViewCachingEnabled\",\n value: function isViewCachingEnabled() {\n return this.shouldCacheViews !== false;\n }\n }, {\n key: \"enableViewCaching\",\n value: function enableViewCaching() {\n this.shouldCacheViews = true;\n }\n }, {\n key: \"disableViewCaching\",\n value: function disableViewCaching() {\n this.shouldCacheViews = false;\n }\n }, {\n key: \"getCachedViewForObject\",\n value: function getCachedViewForObject(object) {\n var _this$getViewCache;\n\n return (_this$getViewCache = this.getViewCache()) === null || _this$getViewCache === void 0 ? void 0 : _this$getViewCache[object.getCacheKey()];\n }\n }, {\n key: \"cacheViewForObject\",\n value: function cacheViewForObject(view, object) {\n var cache = this.getViewCache();\n\n if (cache) {\n cache[object.getCacheKey()] = view;\n }\n }\n }, {\n key: \"garbageCollectCachedViews\",\n value: function garbageCollectCachedViews() {\n var cache = this.getViewCache();\n\n if (cache) {\n var views = this.getAllChildViews().concat(this);\n var objectKeys = views.map(function (view) {\n return view.object.getCacheKey();\n });\n\n for (var key in cache) {\n if (!objectKeys.includes(key)) {\n delete cache[key];\n }\n }\n }\n }\n }]);\n\n return ObjectView;\n}(BasicObject);\n\nvar ObjectGroupView = /*#__PURE__*/function (_ObjectView) {\n _inherits2(ObjectGroupView, _ObjectView);\n\n var _super25 = _createSuper2(ObjectGroupView);\n\n function ObjectGroupView() {\n var _this41;\n\n _classCallCheck2(this, ObjectGroupView);\n\n _this41 = _super25.apply(this, arguments);\n _this41.objectGroup = _this41.object;\n _this41.viewClass = _this41.options.viewClass;\n delete _this41.options.viewClass;\n return _this41;\n }\n\n _createClass2(ObjectGroupView, [{\n key: \"getChildViews\",\n value: function getChildViews() {\n var _this42 = this;\n\n if (!this.childViews.length) {\n Array.from(this.objectGroup.getObjects()).forEach(function (object) {\n _this42.findOrCreateCachedChildView(_this42.viewClass, object, _this42.options);\n });\n }\n\n return this.childViews;\n }\n }, {\n key: \"createNodes\",\n value: function createNodes() {\n var element = this.createContainerElement();\n this.getChildViews().forEach(function (view) {\n Array.from(view.getNodes()).forEach(function (node) {\n element.appendChild(node);\n });\n });\n return [element];\n }\n }, {\n key: \"createContainerElement\",\n value: function createContainerElement() {\n var depth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.objectGroup.getDepth();\n return this.getChildViews()[0].createContainerElement(depth);\n }\n }]);\n\n return ObjectGroupView;\n}(ObjectView);\n\nvar css$2 = config.css;\n\nvar AttachmentView = /*#__PURE__*/function (_ObjectView2) {\n _inherits2(AttachmentView, _ObjectView2);\n\n var _super26 = _createSuper2(AttachmentView);\n\n function AttachmentView() {\n var _this43;\n\n _classCallCheck2(this, AttachmentView);\n\n _this43 = _super26.apply(this, arguments);\n _this43.attachment = _this43.object;\n _this43.attachment.uploadProgressDelegate = _assertThisInitialized2(_this43);\n _this43.attachmentPiece = _this43.options.piece;\n return _this43;\n }\n\n _createClass2(AttachmentView, [{\n key: \"createContentNodes\",\n value: function createContentNodes() {\n return [];\n }\n }, {\n key: \"createNodes\",\n value: function createNodes() {\n var innerElement;\n var figure = innerElement = makeElement({\n tagName: \"figure\",\n className: this.getClassName(),\n data: this.getData(),\n editable: false\n });\n var href = this.getHref();\n\n if (href) {\n innerElement = makeElement({\n tagName: \"a\",\n editable: false,\n attributes: {\n href: href,\n tabindex: -1\n }\n });\n figure.appendChild(innerElement);\n }\n\n if (this.attachment.hasContent()) {\n innerElement.innerHTML = this.attachment.getContent();\n } else {\n this.createContentNodes().forEach(function (node) {\n innerElement.appendChild(node);\n });\n }\n\n innerElement.appendChild(this.createCaptionElement());\n\n if (this.attachment.isPending()) {\n this.progressElement = makeElement({\n tagName: \"progress\",\n attributes: {\n \"class\": css$2.attachmentProgress,\n value: this.attachment.getUploadProgress(),\n max: 100\n },\n data: {\n trixMutable: true,\n trixStoreKey: [\"progressElement\", this.attachment.id].join(\"/\")\n }\n });\n figure.appendChild(this.progressElement);\n }\n\n return [createCursorTarget(\"left\"), figure, createCursorTarget(\"right\")];\n }\n }, {\n key: \"createCaptionElement\",\n value: function createCaptionElement() {\n var figcaption = makeElement({\n tagName: \"figcaption\",\n className: css$2.attachmentCaption\n });\n var caption = this.attachmentPiece.getCaption();\n\n if (caption) {\n figcaption.classList.add(\"\".concat(css$2.attachmentCaption, \"--edited\"));\n figcaption.textContent = caption;\n } else {\n var _name, size;\n\n var captionConfig = this.getCaptionConfig();\n\n if (captionConfig.name) {\n _name = this.attachment.getFilename();\n }\n\n if (captionConfig.size) {\n size = this.attachment.getFormattedFilesize();\n }\n\n if (_name) {\n var nameElement = makeElement({\n tagName: \"span\",\n className: css$2.attachmentName,\n textContent: _name\n });\n figcaption.appendChild(nameElement);\n }\n\n if (size) {\n if (_name) {\n figcaption.appendChild(document.createTextNode(\" \"));\n }\n\n var sizeElement = makeElement({\n tagName: \"span\",\n className: css$2.attachmentSize,\n textContent: size\n });\n figcaption.appendChild(sizeElement);\n }\n }\n\n return figcaption;\n }\n }, {\n key: \"getClassName\",\n value: function getClassName() {\n var names = [css$2.attachment, \"\".concat(css$2.attachment, \"--\").concat(this.attachment.getType())];\n var extension = this.attachment.getExtension();\n\n if (extension) {\n names.push(\"\".concat(css$2.attachment, \"--\").concat(extension));\n }\n\n return names.join(\" \");\n }\n }, {\n key: \"getData\",\n value: function getData() {\n var data = {\n trixAttachment: JSON.stringify(this.attachment),\n trixContentType: this.attachment.getContentType(),\n trixId: this.attachment.id\n };\n var attributes = this.attachmentPiece.attributes;\n\n if (!attributes.isEmpty()) {\n data.trixAttributes = JSON.stringify(attributes);\n }\n\n if (this.attachment.isPending()) {\n data.trixSerialize = false;\n }\n\n return data;\n }\n }, {\n key: \"getHref\",\n value: function getHref() {\n if (!htmlContainsTagName(this.attachment.getContent(), \"a\")) {\n return this.attachment.getHref();\n }\n }\n }, {\n key: \"getCaptionConfig\",\n value: function getCaptionConfig() {\n var _config$attachments$t;\n\n var type = this.attachment.getType();\n var captionConfig = copyObject((_config$attachments$t = config.attachments[type]) === null || _config$attachments$t === void 0 ? void 0 : _config$attachments$t.caption);\n\n if (type === \"file\") {\n captionConfig.name = true;\n }\n\n return captionConfig;\n }\n }, {\n key: \"findProgressElement\",\n value: function findProgressElement() {\n var _this$findElement;\n\n return (_this$findElement = this.findElement()) === null || _this$findElement === void 0 ? void 0 : _this$findElement.querySelector(\"progress\");\n } // Attachment delegate\n\n }, {\n key: \"attachmentDidChangeUploadProgress\",\n value: function attachmentDidChangeUploadProgress() {\n var value = this.attachment.getUploadProgress();\n var progressElement = this.findProgressElement();\n\n if (progressElement) {\n progressElement.value = value;\n }\n }\n }]);\n\n return AttachmentView;\n}(ObjectView);\n\nvar createCursorTarget = function createCursorTarget(name) {\n return makeElement({\n tagName: \"span\",\n textContent: ZERO_WIDTH_SPACE,\n data: {\n trixCursorTarget: name,\n trixSerialize: false\n }\n });\n};\n\nvar htmlContainsTagName = function htmlContainsTagName(html, tagName) {\n var div = makeElement(\"div\");\n div.innerHTML = html || \"\";\n return div.querySelector(tagName);\n};\n\nvar PreviewableAttachmentView = /*#__PURE__*/function (_AttachmentView) {\n _inherits2(PreviewableAttachmentView, _AttachmentView);\n\n var _super27 = _createSuper2(PreviewableAttachmentView);\n\n function PreviewableAttachmentView() {\n var _this44;\n\n _classCallCheck2(this, PreviewableAttachmentView);\n\n _this44 = _super27.apply(this, arguments);\n _this44.attachment.previewDelegate = _assertThisInitialized2(_this44);\n return _this44;\n }\n\n _createClass2(PreviewableAttachmentView, [{\n key: \"createContentNodes\",\n value: function createContentNodes() {\n this.image = makeElement({\n tagName: \"img\",\n attributes: {\n src: \"\"\n },\n data: {\n trixMutable: true\n }\n });\n this.refresh(this.image);\n return [this.image];\n }\n }, {\n key: \"createCaptionElement\",\n value: function createCaptionElement() {\n var figcaption = _get2(_getPrototypeOf2(PreviewableAttachmentView.prototype), \"createCaptionElement\", this).apply(this, arguments);\n\n if (!figcaption.textContent) {\n figcaption.setAttribute(\"data-trix-placeholder\", config.lang.captionPlaceholder);\n }\n\n return figcaption;\n }\n }, {\n key: \"refresh\",\n value: function refresh(image) {\n if (!image) {\n var _this$findElement;\n\n image = (_this$findElement = this.findElement()) === null || _this$findElement === void 0 ? void 0 : _this$findElement.querySelector(\"img\");\n }\n\n if (image) {\n return this.updateAttributesForImage(image);\n }\n }\n }, {\n key: \"updateAttributesForImage\",\n value: function updateAttributesForImage(image) {\n var url = this.attachment.getURL();\n var previewURL = this.attachment.getPreviewURL();\n image.src = previewURL || url;\n\n if (previewURL === url) {\n image.removeAttribute(\"data-trix-serialized-attributes\");\n } else {\n var serializedAttributes = JSON.stringify({\n src: url\n });\n image.setAttribute(\"data-trix-serialized-attributes\", serializedAttributes);\n }\n\n var width = this.attachment.getWidth();\n var height = this.attachment.getHeight();\n\n if (width != null) {\n image.width = width;\n }\n\n if (height != null) {\n image.height = height;\n }\n\n var storeKey = [\"imageElement\", this.attachment.id, image.src, image.width, image.height].join(\"/\");\n image.dataset.trixStoreKey = storeKey;\n } // Attachment delegate\n\n }, {\n key: \"attachmentDidChangeAttributes\",\n value: function attachmentDidChangeAttributes() {\n this.refresh(this.image);\n return this.refresh();\n }\n }]);\n\n return PreviewableAttachmentView;\n}(AttachmentView);\n/* eslint-disable\n no-useless-escape,\n no-var,\n*/\n\n\nvar PieceView = /*#__PURE__*/function (_ObjectView3) {\n _inherits2(PieceView, _ObjectView3);\n\n var _super28 = _createSuper2(PieceView);\n\n function PieceView() {\n var _this45;\n\n _classCallCheck2(this, PieceView);\n\n _this45 = _super28.apply(this, arguments);\n _this45.piece = _this45.object;\n _this45.attributes = _this45.piece.getAttributes();\n _this45.textConfig = _this45.options.textConfig;\n _this45.context = _this45.options.context;\n\n if (_this45.piece.attachment) {\n _this45.attachment = _this45.piece.attachment;\n } else {\n _this45.string = _this45.piece.toString();\n }\n\n return _this45;\n }\n\n _createClass2(PieceView, [{\n key: \"createNodes\",\n value: function createNodes() {\n var nodes = this.attachment ? this.createAttachmentNodes() : this.createStringNodes();\n var element = this.createElement();\n\n if (element) {\n var innerElement = findInnerElement(element);\n Array.from(nodes).forEach(function (node) {\n innerElement.appendChild(node);\n });\n nodes = [element];\n }\n\n return nodes;\n }\n }, {\n key: \"createAttachmentNodes\",\n value: function createAttachmentNodes() {\n var constructor = this.attachment.isPreviewable() ? PreviewableAttachmentView : AttachmentView;\n var view = this.createChildView(constructor, this.piece.attachment, {\n piece: this.piece\n });\n return view.getNodes();\n }\n }, {\n key: \"createStringNodes\",\n value: function createStringNodes() {\n var _this$textConfig;\n\n if ((_this$textConfig = this.textConfig) !== null && _this$textConfig !== void 0 && _this$textConfig.plaintext) {\n return [document.createTextNode(this.string)];\n } else {\n var nodes = [];\n var iterable = this.string.split(\"\\n\");\n\n for (var index = 0; index < iterable.length; index++) {\n var substring = iterable[index];\n\n if (index > 0) {\n var element = makeElement(\"br\");\n nodes.push(element);\n }\n\n if (substring.length) {\n var node = document.createTextNode(this.preserveSpaces(substring));\n nodes.push(node);\n }\n }\n\n return nodes;\n }\n }\n }, {\n key: \"createElement\",\n value: function createElement() {\n var element, key, value;\n var styles = {};\n\n for (key in this.attributes) {\n value = this.attributes[key];\n\n var _config = getTextConfig(key);\n\n if (_config) {\n if (_config.tagName) {\n var innerElement;\n var pendingElement = makeElement(_config.tagName);\n\n if (innerElement) {\n innerElement.appendChild(pendingElement);\n innerElement = pendingElement;\n } else {\n element = innerElement = pendingElement;\n }\n }\n\n if (_config.styleProperty) {\n styles[_config.styleProperty] = value;\n }\n\n if (_config.style) {\n for (key in _config.style) {\n value = _config.style[key];\n styles[key] = value;\n }\n }\n }\n }\n\n if (Object.keys(styles).length) {\n if (!element) {\n element = makeElement(\"span\");\n }\n\n for (key in styles) {\n value = styles[key];\n element.style[key] = value;\n }\n }\n\n return element;\n }\n }, {\n key: \"createContainerElement\",\n value: function createContainerElement() {\n for (var key in this.attributes) {\n var value = this.attributes[key];\n\n var _config2 = getTextConfig(key);\n\n if (_config2) {\n if (_config2.groupTagName) {\n var _attributes4 = {};\n _attributes4[key] = value;\n return makeElement(_config2.groupTagName, _attributes4);\n }\n }\n }\n }\n }, {\n key: \"preserveSpaces\",\n value: function preserveSpaces(string) {\n if (this.context.isLast) {\n string = string.replace(/\\ $/, NON_BREAKING_SPACE);\n }\n\n string = string.replace(/(\\S)\\ {3}(\\S)/g, \"$1 \".concat(NON_BREAKING_SPACE, \" $2\")).replace(/\\ {2}/g, \"\".concat(NON_BREAKING_SPACE, \" \")).replace(/\\ {2}/g, \" \".concat(NON_BREAKING_SPACE));\n\n if (this.context.isFirst || this.context.followsWhitespace) {\n string = string.replace(/^\\ /, NON_BREAKING_SPACE);\n }\n\n return string;\n }\n }]);\n\n return PieceView;\n}(ObjectView);\n/* eslint-disable\n no-var,\n*/\n\n\nvar TextView = /*#__PURE__*/function (_ObjectView4) {\n _inherits2(TextView, _ObjectView4);\n\n var _super29 = _createSuper2(TextView);\n\n function TextView() {\n var _this46;\n\n _classCallCheck2(this, TextView);\n\n _this46 = _super29.apply(this, arguments);\n _this46.text = _this46.object;\n _this46.textConfig = _this46.options.textConfig;\n return _this46;\n }\n\n _createClass2(TextView, [{\n key: \"createNodes\",\n value: function createNodes() {\n var nodes = [];\n var pieces = ObjectGroup.groupObjects(this.getPieces());\n var lastIndex = pieces.length - 1;\n\n for (var index = 0; index < pieces.length; index++) {\n var piece = pieces[index];\n var context = {};\n\n if (index === 0) {\n context.isFirst = true;\n }\n\n if (index === lastIndex) {\n context.isLast = true;\n }\n\n if (endsWithWhitespace(previousPiece)) {\n context.followsWhitespace = true;\n }\n\n var view = this.findOrCreateCachedChildView(PieceView, piece, {\n textConfig: this.textConfig,\n context: context\n });\n nodes.push.apply(nodes, _toConsumableArray2(Array.from(view.getNodes() || [])));\n var previousPiece = piece;\n }\n\n return nodes;\n }\n }, {\n key: \"getPieces\",\n value: function getPieces() {\n return Array.from(this.text.getPieces()).filter(function (piece) {\n return !piece.hasAttribute(\"blockBreak\");\n });\n }\n }]);\n\n return TextView;\n}(ObjectView);\n\nvar endsWithWhitespace = function endsWithWhitespace(piece) {\n return /\\s$/.test(piece === null || piece === void 0 ? void 0 : piece.toString());\n};\n\nvar css$1 = config.css;\n\nvar BlockView = /*#__PURE__*/function (_ObjectView5) {\n _inherits2(BlockView, _ObjectView5);\n\n var _super30 = _createSuper2(BlockView);\n\n function BlockView() {\n var _this47;\n\n _classCallCheck2(this, BlockView);\n\n _this47 = _super30.apply(this, arguments);\n _this47.block = _this47.object;\n _this47.attributes = _this47.block.getAttributes();\n return _this47;\n }\n\n _createClass2(BlockView, [{\n key: \"createNodes\",\n value: function createNodes() {\n var comment = document.createComment(\"block\");\n var nodes = [comment];\n\n if (this.block.isEmpty()) {\n nodes.push(makeElement(\"br\"));\n } else {\n var _getBlockConfig;\n\n var textConfig = (_getBlockConfig = getBlockConfig(this.block.getLastAttribute())) === null || _getBlockConfig === void 0 ? void 0 : _getBlockConfig.text;\n var textView = this.findOrCreateCachedChildView(TextView, this.block.text, {\n textConfig: textConfig\n });\n nodes.push.apply(nodes, _toConsumableArray2(Array.from(textView.getNodes() || [])));\n\n if (this.shouldAddExtraNewlineElement()) {\n nodes.push(makeElement(\"br\"));\n }\n }\n\n if (this.attributes.length) {\n return nodes;\n } else {\n var _attributes5;\n\n var _tagName = config.blockAttributes[\"default\"].tagName;\n\n if (this.block.isRTL()) {\n _attributes5 = {\n dir: \"rtl\"\n };\n }\n\n var element = makeElement({\n tagName: _tagName,\n attributes: _attributes5\n });\n nodes.forEach(function (node) {\n return element.appendChild(node);\n });\n return [element];\n }\n }\n }, {\n key: \"createContainerElement\",\n value: function createContainerElement(depth) {\n var attributes, className;\n var attributeName = this.attributes[depth];\n\n var _getBlockConfig6 = getBlockConfig(attributeName),\n tagName = _getBlockConfig6.tagName;\n\n if (depth === 0 && this.block.isRTL()) {\n attributes = {\n dir: \"rtl\"\n };\n }\n\n if (attributeName === \"attachmentGallery\") {\n var size = this.block.getBlockBreakPosition();\n className = \"\".concat(css$1.attachmentGallery, \" \").concat(css$1.attachmentGallery, \"--\").concat(size);\n }\n\n return makeElement({\n tagName: tagName,\n className: className,\n attributes: attributes\n });\n } // A single
at the end of a block element has no visual representation\n // so add an extra one.\n\n }, {\n key: \"shouldAddExtraNewlineElement\",\n value: function shouldAddExtraNewlineElement() {\n return /\\n\\n$/.test(this.block.toString());\n }\n }]);\n\n return BlockView;\n}(ObjectView);\n\nvar DocumentView = /*#__PURE__*/function (_ObjectView6) {\n _inherits2(DocumentView, _ObjectView6);\n\n var _super31 = _createSuper2(DocumentView);\n\n function DocumentView() {\n var _this48;\n\n _classCallCheck2(this, DocumentView);\n\n _this48 = _super31.apply(this, arguments);\n _this48.element = _this48.options.element;\n _this48.elementStore = new ElementStore();\n\n _this48.setDocument(_this48.object);\n\n return _this48;\n }\n\n _createClass2(DocumentView, [{\n key: \"setDocument\",\n value: function setDocument(document) {\n if (!document.isEqualTo(this.document)) {\n this.document = this.object = document;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this49 = this;\n\n this.childViews = [];\n this.shadowElement = makeElement(\"div\");\n\n if (!this.document.isEmpty()) {\n var objects = ObjectGroup.groupObjects(this.document.getBlocks(), {\n asTree: true\n });\n Array.from(objects).forEach(function (object) {\n var view = _this49.findOrCreateCachedChildView(BlockView, object);\n\n Array.from(view.getNodes()).map(function (node) {\n return _this49.shadowElement.appendChild(node);\n });\n });\n }\n }\n }, {\n key: \"isSynced\",\n value: function isSynced() {\n return elementsHaveEqualHTML(this.shadowElement, this.element);\n }\n }, {\n key: \"sync\",\n value: function sync() {\n var fragment = this.createDocumentFragmentForSync();\n\n while (this.element.lastChild) {\n this.element.removeChild(this.element.lastChild);\n }\n\n this.element.appendChild(fragment);\n return this.didSync();\n } // Private\n\n }, {\n key: \"didSync\",\n value: function didSync() {\n var _this50 = this;\n\n this.elementStore.reset(findStoredElements(this.element));\n return defer(function () {\n return _this50.garbageCollectCachedViews();\n });\n }\n }, {\n key: \"createDocumentFragmentForSync\",\n value: function createDocumentFragmentForSync() {\n var _this51 = this;\n\n var fragment = document.createDocumentFragment();\n Array.from(this.shadowElement.childNodes).forEach(function (node) {\n fragment.appendChild(node.cloneNode(true));\n });\n Array.from(findStoredElements(fragment)).forEach(function (element) {\n var storedElement = _this51.elementStore.remove(element);\n\n if (storedElement) {\n element.parentNode.replaceChild(storedElement, element);\n }\n });\n return fragment;\n }\n }], [{\n key: \"render\",\n value: function render(document) {\n var element = makeElement(\"div\");\n var view = new this(document, {\n element: element\n });\n view.render();\n view.sync();\n return element;\n }\n }]);\n\n return DocumentView;\n}(ObjectView);\n\nvar findStoredElements = function findStoredElements(element) {\n return element.querySelectorAll(\"[data-trix-store-key]\");\n};\n\nvar elementsHaveEqualHTML = function elementsHaveEqualHTML(element, otherElement) {\n return ignoreSpaces(element.innerHTML) === ignoreSpaces(otherElement.innerHTML);\n};\n\nvar ignoreSpaces = function ignoreSpaces(html) {\n return html.replace(/ /g, \" \");\n};\n/* eslint-disable\n no-empty,\n*/\n\n\nvar unserializableElementSelector = \"[data-trix-serialize=false]\";\nvar unserializableAttributeNames = [\"contenteditable\", \"data-trix-id\", \"data-trix-store-key\", \"data-trix-mutable\", \"data-trix-placeholder\", \"tabindex\"];\nvar serializedAttributesAttribute = \"data-trix-serialized-attributes\";\nvar serializedAttributesSelector = \"[\".concat(serializedAttributesAttribute, \"]\");\nvar blockCommentPattern = new RegExp(\"\", \"g\");\nvar serializers = {\n \"application/json\": function applicationJson(serializable) {\n var document;\n\n if (serializable instanceof Document) {\n document = serializable;\n } else if (serializable instanceof HTMLElement) {\n document = HTMLParser.parse(serializable.innerHTML).getDocument();\n } else {\n throw new Error(\"unserializable object\");\n }\n\n return document.toSerializableDocument().toJSONString();\n },\n \"text/html\": function textHtml(serializable) {\n var element;\n\n if (serializable instanceof Document) {\n element = DocumentView.render(serializable);\n } else if (serializable instanceof HTMLElement) {\n element = serializable.cloneNode(true);\n } else {\n throw new Error(\"unserializable object\");\n } // Remove unserializable elements\n\n\n Array.from(element.querySelectorAll(unserializableElementSelector)).forEach(function (el) {\n removeNode(el);\n }); // Remove unserializable attributes\n\n unserializableAttributeNames.forEach(function (attribute) {\n Array.from(element.querySelectorAll(\"[\".concat(attribute, \"]\"))).forEach(function (el) {\n el.removeAttribute(attribute);\n });\n }); // Rewrite elements with serialized attribute overrides\n\n Array.from(element.querySelectorAll(serializedAttributesSelector)).forEach(function (el) {\n try {\n var _attributes6 = JSON.parse(el.getAttribute(serializedAttributesAttribute));\n\n el.removeAttribute(serializedAttributesAttribute);\n\n for (var _name2 in _attributes6) {\n var value = _attributes6[_name2];\n el.setAttribute(_name2, value);\n }\n } catch (error) {}\n });\n return element.innerHTML.replace(blockCommentPattern, \"\");\n }\n};\nvar deserializers = {\n \"application/json\": function applicationJson(string) {\n return Document.fromJSONString(string);\n },\n \"text/html\": function textHtml(string) {\n return HTMLParser.parse(string).getDocument();\n }\n};\n\nvar serializeToContentType = function serializeToContentType(serializable, contentType) {\n var serializer = serializers[contentType];\n\n if (serializer) {\n return serializer(serializable);\n } else {\n throw new Error(\"unknown content type: \".concat(contentType));\n }\n};\n\nvar deserializeFromContentType = function deserializeFromContentType(string, contentType) {\n var deserializer = deserializers[contentType];\n\n if (deserializer) {\n return deserializer(string);\n } else {\n throw new Error(\"unknown content type: \".concat(contentType));\n }\n};\n\nvar mutableAttributeName = \"data-trix-mutable\";\nvar mutableSelector = \"[\".concat(mutableAttributeName, \"]\");\nvar options = {\n attributes: true,\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n subtree: true\n};\n\nvar MutationObserver = /*#__PURE__*/function (_BasicObject14) {\n _inherits2(MutationObserver, _BasicObject14);\n\n var _super32 = _createSuper2(MutationObserver);\n\n function MutationObserver(element) {\n var _this52;\n\n _classCallCheck2(this, MutationObserver);\n\n _this52 = _super32.call(this, element);\n _this52.didMutate = _this52.didMutate.bind(_assertThisInitialized2(_this52));\n _this52.element = element;\n _this52.observer = new window.MutationObserver(_this52.didMutate);\n\n _this52.start();\n\n return _this52;\n }\n\n _createClass2(MutationObserver, [{\n key: \"start\",\n value: function start() {\n this.reset();\n return this.observer.observe(this.element, options);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n return this.observer.disconnect();\n }\n }, {\n key: \"didMutate\",\n value: function didMutate(mutations) {\n var _this$mutations;\n\n (_this$mutations = this.mutations).push.apply(_this$mutations, _toConsumableArray2(Array.from(this.findSignificantMutations(mutations) || [])));\n\n if (this.mutations.length) {\n var _this$delegate, _this$delegate$elemen;\n\n (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$elemen = _this$delegate.elementDidMutate) === null || _this$delegate$elemen === void 0 ? void 0 : _this$delegate$elemen.call(_this$delegate, this.getMutationSummary());\n return this.reset();\n }\n } // Private\n\n }, {\n key: \"reset\",\n value: function reset() {\n this.mutations = [];\n }\n }, {\n key: \"findSignificantMutations\",\n value: function findSignificantMutations(mutations) {\n var _this53 = this;\n\n return mutations.filter(function (mutation) {\n return _this53.mutationIsSignificant(mutation);\n });\n }\n }, {\n key: \"mutationIsSignificant\",\n value: function mutationIsSignificant(mutation) {\n if (this.nodeIsMutable(mutation.target)) {\n return false;\n }\n\n for (var _i4 = 0, _Array$from21 = Array.from(this.nodesModifiedByMutation(mutation)); _i4 < _Array$from21.length; _i4++) {\n var node = _Array$from21[_i4];\n if (this.nodeIsSignificant(node)) return true;\n }\n\n return false;\n }\n }, {\n key: \"nodeIsSignificant\",\n value: function nodeIsSignificant(node) {\n return node !== this.element && !this.nodeIsMutable(node) && !nodeIsEmptyTextNode(node);\n }\n }, {\n key: \"nodeIsMutable\",\n value: function nodeIsMutable(node) {\n return findClosestElementFromNode(node, {\n matchingSelector: mutableSelector\n });\n }\n }, {\n key: \"nodesModifiedByMutation\",\n value: function nodesModifiedByMutation(mutation) {\n var nodes = [];\n\n switch (mutation.type) {\n case \"attributes\":\n if (mutation.attributeName !== mutableAttributeName) {\n nodes.push(mutation.target);\n }\n\n break;\n\n case \"characterData\":\n // Changes to text nodes should consider the parent element\n nodes.push(mutation.target.parentNode);\n nodes.push(mutation.target);\n break;\n\n case \"childList\":\n // Consider each added or removed node\n nodes.push.apply(nodes, _toConsumableArray2(Array.from(mutation.addedNodes || [])));\n nodes.push.apply(nodes, _toConsumableArray2(Array.from(mutation.removedNodes || [])));\n break;\n }\n\n return nodes;\n }\n }, {\n key: \"getMutationSummary\",\n value: function getMutationSummary() {\n return this.getTextMutationSummary();\n }\n }, {\n key: \"getTextMutationSummary\",\n value: function getTextMutationSummary() {\n var _this$getTextChangesF = this.getTextChangesFromCharacterData(),\n additions = _this$getTextChangesF.additions,\n deletions = _this$getTextChangesF.deletions;\n\n var textChanges = this.getTextChangesFromChildList();\n Array.from(textChanges.additions).forEach(function (addition) {\n if (!Array.from(additions).includes(addition)) {\n additions.push(addition);\n }\n });\n deletions.push.apply(deletions, _toConsumableArray2(Array.from(textChanges.deletions || [])));\n var summary = {};\n var added = additions.join(\"\");\n\n if (added) {\n summary.textAdded = added;\n }\n\n var deleted = deletions.join(\"\");\n\n if (deleted) {\n summary.textDeleted = deleted;\n }\n\n return summary;\n }\n }, {\n key: \"getMutationsByType\",\n value: function getMutationsByType(type) {\n return Array.from(this.mutations).filter(function (mutation) {\n return mutation.type === type;\n });\n }\n }, {\n key: \"getTextChangesFromChildList\",\n value: function getTextChangesFromChildList() {\n var textAdded, textRemoved;\n var addedNodes = [];\n var removedNodes = [];\n Array.from(this.getMutationsByType(\"childList\")).forEach(function (mutation) {\n addedNodes.push.apply(addedNodes, _toConsumableArray2(Array.from(mutation.addedNodes || [])));\n removedNodes.push.apply(removedNodes, _toConsumableArray2(Array.from(mutation.removedNodes || [])));\n });\n var singleBlockCommentRemoved = addedNodes.length === 0 && removedNodes.length === 1 && nodeIsBlockStartComment(removedNodes[0]);\n\n if (singleBlockCommentRemoved) {\n textAdded = [];\n textRemoved = [\"\\n\"];\n } else {\n textAdded = getTextForNodes(addedNodes);\n textRemoved = getTextForNodes(removedNodes);\n }\n\n var additions = textAdded.filter(function (text, index) {\n return text !== textRemoved[index];\n }).map(normalizeSpaces);\n var deletions = textRemoved.filter(function (text, index) {\n return text !== textAdded[index];\n }).map(normalizeSpaces);\n return {\n additions: additions,\n deletions: deletions\n };\n }\n }, {\n key: \"getTextChangesFromCharacterData\",\n value: function getTextChangesFromCharacterData() {\n var added, removed;\n var characterMutations = this.getMutationsByType(\"characterData\");\n\n if (characterMutations.length) {\n var startMutation = characterMutations[0],\n endMutation = characterMutations[characterMutations.length - 1];\n var oldString = normalizeSpaces(startMutation.oldValue);\n var newString = normalizeSpaces(endMutation.target.data);\n var summarized = summarizeStringChange(oldString, newString);\n added = summarized.added;\n removed = summarized.removed;\n }\n\n return {\n additions: added ? [added] : [],\n deletions: removed ? [removed] : []\n };\n }\n }]);\n\n return MutationObserver;\n}(BasicObject);\n\nvar getTextForNodes = function getTextForNodes() {\n var nodes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var text = [];\n\n for (var _i5 = 0, _Array$from22 = Array.from(nodes); _i5 < _Array$from22.length; _i5++) {\n var node = _Array$from22[_i5];\n\n switch (node.nodeType) {\n case Node.TEXT_NODE:\n text.push(node.data);\n break;\n\n case Node.ELEMENT_NODE:\n if (tagName(node) === \"br\") {\n text.push(\"\\n\");\n } else {\n text.push.apply(text, _toConsumableArray2(Array.from(getTextForNodes(node.childNodes) || [])));\n }\n\n break;\n }\n }\n\n return text;\n};\n\nvar Controller = /*#__PURE__*/function (_BasicObject15) {\n _inherits2(Controller, _BasicObject15);\n\n var _super33 = _createSuper2(Controller);\n\n function Controller() {\n _classCallCheck2(this, Controller);\n\n return _super33.apply(this, arguments);\n }\n\n return _createClass2(Controller);\n}(BasicObject);\n/* eslint-disable\n no-empty,\n*/\n\n\nvar FileVerificationOperation = /*#__PURE__*/function (_Operation2) {\n _inherits2(FileVerificationOperation, _Operation2);\n\n var _super34 = _createSuper2(FileVerificationOperation);\n\n function FileVerificationOperation(file) {\n var _this54;\n\n _classCallCheck2(this, FileVerificationOperation);\n\n _this54 = _super34.apply(this, arguments);\n _this54.file = file;\n return _this54;\n }\n\n _createClass2(FileVerificationOperation, [{\n key: \"perform\",\n value: function perform(callback) {\n var _this55 = this;\n\n var reader = new FileReader();\n\n reader.onerror = function () {\n return callback(false);\n };\n\n reader.onload = function () {\n reader.onerror = null;\n\n try {\n reader.abort();\n } catch (error) {}\n\n return callback(true, _this55.file);\n };\n\n return reader.readAsArrayBuffer(this.file);\n }\n }]);\n\n return FileVerificationOperation;\n}(Operation);\n\nvar InputController = /*#__PURE__*/function (_BasicObject16) {\n _inherits2(InputController, _BasicObject16);\n\n var _super35 = _createSuper2(InputController);\n\n function InputController(element) {\n var _this56;\n\n _classCallCheck2(this, InputController);\n\n _this56 = _super35.apply(this, arguments);\n _this56.element = element;\n _this56.mutationObserver = new MutationObserver(_this56.element);\n _this56.mutationObserver.delegate = _assertThisInitialized2(_this56);\n\n for (var eventName in _this56.constructor.events) {\n handleEvent(eventName, {\n onElement: _this56.element,\n withCallback: _this56.handlerFor(eventName)\n });\n }\n\n return _this56;\n }\n\n _createClass2(InputController, [{\n key: \"elementDidMutate\",\n value: function elementDidMutate(mutationSummary) {}\n }, {\n key: \"editorWillSyncDocumentView\",\n value: function editorWillSyncDocumentView() {\n return this.mutationObserver.stop();\n }\n }, {\n key: \"editorDidSyncDocumentView\",\n value: function editorDidSyncDocumentView() {\n return this.mutationObserver.start();\n }\n }, {\n key: \"requestRender\",\n value: function requestRender() {\n var _this$delegate, _this$delegate$inputC;\n\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$inputC = _this$delegate.inputControllerDidRequestRender) === null || _this$delegate$inputC === void 0 ? void 0 : _this$delegate$inputC.call(_this$delegate);\n }\n }, {\n key: \"requestReparse\",\n value: function requestReparse() {\n var _this$delegate2, _this$delegate2$input;\n\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : (_this$delegate2$input = _this$delegate2.inputControllerDidRequestReparse) === null || _this$delegate2$input === void 0 ? void 0 : _this$delegate2$input.call(_this$delegate2);\n return this.requestRender();\n }\n }, {\n key: \"attachFiles\",\n value: function attachFiles(files) {\n var _this57 = this;\n\n var operations = Array.from(files).map(function (file) {\n return new FileVerificationOperation(file);\n });\n return Promise.all(operations).then(function (files) {\n _this57.handleInput(function () {\n var _this$delegate3, _this$responder;\n\n (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : _this$delegate3.inputControllerWillAttachFiles();\n (_this$responder = this.responder) === null || _this$responder === void 0 ? void 0 : _this$responder.insertFiles(files);\n return this.requestRender();\n });\n });\n } // Private\n\n }, {\n key: \"handlerFor\",\n value: function handlerFor(eventName) {\n var _this58 = this;\n\n return function (event) {\n if (!event.defaultPrevented) {\n _this58.handleInput(function () {\n if (!innerElementIsActive(_this58.element)) {\n _this58.eventName = eventName;\n\n _this58.constructor.events[eventName].call(_this58, event);\n }\n });\n }\n };\n }\n }, {\n key: \"handleInput\",\n value: function handleInput(callback) {\n try {\n var _this$delegate4;\n\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : _this$delegate4.inputControllerWillHandleInput();\n callback.call(this);\n } finally {\n var _this$delegate5;\n\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : _this$delegate5.inputControllerDidHandleInput();\n }\n }\n }, {\n key: \"createLinkHTML\",\n value: function createLinkHTML(href, text) {\n var link = document.createElement(\"a\");\n link.href = href;\n link.textContent = text ? text : href;\n return link.outerHTML;\n }\n }]);\n\n return InputController;\n}(BasicObject);\n\n_defineProperty(InputController, \"events\", {});\n\nvar _$codePointAt, _;\n\nvar browser = config.browser,\n keyNames$1 = config.keyNames;\nvar pastedFileCount = 0;\n\nvar Level0InputController = /*#__PURE__*/function (_InputController) {\n _inherits2(Level0InputController, _InputController);\n\n var _super36 = _createSuper2(Level0InputController);\n\n function Level0InputController() {\n var _this59;\n\n _classCallCheck2(this, Level0InputController);\n\n _this59 = _super36.apply(this, arguments);\n\n _this59.resetInputSummary();\n\n return _this59;\n }\n\n _createClass2(Level0InputController, [{\n key: \"setInputSummary\",\n value: function setInputSummary() {\n var summary = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.inputSummary.eventName = this.eventName;\n\n for (var key in summary) {\n var value = summary[key];\n this.inputSummary[key] = value;\n }\n\n return this.inputSummary;\n }\n }, {\n key: \"resetInputSummary\",\n value: function resetInputSummary() {\n this.inputSummary = {};\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.resetInputSummary();\n return selectionChangeObserver.reset();\n } // Mutation observer delegate\n\n }, {\n key: \"elementDidMutate\",\n value: function elementDidMutate(mutationSummary) {\n if (this.isComposing()) {\n var _this$delegate, _this$delegate$inputC;\n\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$inputC = _this$delegate.inputControllerDidAllowUnhandledInput) === null || _this$delegate$inputC === void 0 ? void 0 : _this$delegate$inputC.call(_this$delegate);\n } else {\n return this.handleInput(function () {\n if (this.mutationIsSignificant(mutationSummary)) {\n if (this.mutationIsExpected(mutationSummary)) {\n this.requestRender();\n } else {\n this.requestReparse();\n }\n }\n\n return this.reset();\n });\n }\n }\n }, {\n key: \"mutationIsExpected\",\n value: function mutationIsExpected(_ref) {\n var textAdded = _ref.textAdded,\n textDeleted = _ref.textDeleted;\n\n if (this.inputSummary.preferDocument) {\n return true;\n }\n\n var mutationAdditionMatchesSummary = textAdded != null ? textAdded === this.inputSummary.textAdded : !this.inputSummary.textAdded;\n var mutationDeletionMatchesSummary = textDeleted != null ? this.inputSummary.didDelete : !this.inputSummary.didDelete;\n var unexpectedNewlineAddition = [\"\\n\", \" \\n\"].includes(textAdded) && !mutationAdditionMatchesSummary;\n var unexpectedNewlineDeletion = textDeleted === \"\\n\" && !mutationDeletionMatchesSummary;\n var singleUnexpectedNewline = unexpectedNewlineAddition && !unexpectedNewlineDeletion || unexpectedNewlineDeletion && !unexpectedNewlineAddition;\n\n if (singleUnexpectedNewline) {\n var range = this.getSelectedRange();\n\n if (range) {\n var _this$responder;\n\n var offset = unexpectedNewlineAddition ? textAdded.replace(/\\n$/, \"\").length || -1 : (textAdded === null || textAdded === void 0 ? void 0 : textAdded.length) || 1;\n\n if ((_this$responder = this.responder) !== null && _this$responder !== void 0 && _this$responder.positionIsBlockBreak(range[1] + offset)) {\n return true;\n }\n }\n }\n\n return mutationAdditionMatchesSummary && mutationDeletionMatchesSummary;\n }\n }, {\n key: \"mutationIsSignificant\",\n value: function mutationIsSignificant(mutationSummary) {\n var _this$compositionInpu;\n\n var textChanged = Object.keys(mutationSummary).length > 0;\n var composedEmptyString = ((_this$compositionInpu = this.compositionInput) === null || _this$compositionInpu === void 0 ? void 0 : _this$compositionInpu.getEndData()) === \"\";\n return textChanged || !composedEmptyString;\n } // Private\n\n }, {\n key: \"getCompositionInput\",\n value: function getCompositionInput() {\n if (this.isComposing()) {\n return this.compositionInput;\n } else {\n this.compositionInput = new CompositionInput(this);\n }\n }\n }, {\n key: \"isComposing\",\n value: function isComposing() {\n return this.compositionInput && !this.compositionInput.isEnded();\n }\n }, {\n key: \"deleteInDirection\",\n value: function deleteInDirection(direction, event) {\n var _this$responder2;\n\n if (((_this$responder2 = this.responder) === null || _this$responder2 === void 0 ? void 0 : _this$responder2.deleteInDirection(direction)) === false) {\n if (event) {\n event.preventDefault();\n return this.requestRender();\n }\n } else {\n return this.setInputSummary({\n didDelete: true\n });\n }\n }\n }, {\n key: \"serializeSelectionToDataTransfer\",\n value: function serializeSelectionToDataTransfer(dataTransfer) {\n var _this$responder3;\n\n if (!dataTransferIsWritable(dataTransfer)) return;\n var document = (_this$responder3 = this.responder) === null || _this$responder3 === void 0 ? void 0 : _this$responder3.getSelectedDocument().toSerializableDocument();\n dataTransfer.setData(\"application/x-trix-document\", JSON.stringify(document));\n dataTransfer.setData(\"text/html\", DocumentView.render(document).innerHTML);\n dataTransfer.setData(\"text/plain\", document.toString().replace(/\\n$/, \"\"));\n return true;\n }\n }, {\n key: \"canAcceptDataTransfer\",\n value: function canAcceptDataTransfer(dataTransfer) {\n var types = {};\n Array.from((dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.types) || []).forEach(function (type) {\n types[type] = true;\n });\n return types.Files || types[\"application/x-trix-document\"] || types[\"text/html\"] || types[\"text/plain\"];\n }\n }, {\n key: \"getPastedHTMLUsingHiddenElement\",\n value: function getPastedHTMLUsingHiddenElement(callback) {\n var _this60 = this;\n\n var selectedRange = this.getSelectedRange();\n var style = {\n position: \"absolute\",\n left: \"\".concat(window.pageXOffset, \"px\"),\n top: \"\".concat(window.pageYOffset, \"px\"),\n opacity: 0\n };\n var element = makeElement({\n style: style,\n tagName: \"div\",\n editable: true\n });\n document.body.appendChild(element);\n element.focus();\n return requestAnimationFrame(function () {\n var html = element.innerHTML;\n removeNode(element);\n\n _this60.setSelectedRange(selectedRange);\n\n return callback(html);\n });\n }\n }]);\n\n return Level0InputController;\n}(InputController);\n\n_defineProperty(Level0InputController, \"events\", {\n keydown: function keydown(event) {\n if (!this.isComposing()) {\n this.resetInputSummary();\n }\n\n this.inputSummary.didInput = true;\n var keyName = keyNames$1[event.keyCode];\n\n if (keyName) {\n var _context2;\n\n var context = this.keys;\n [\"ctrl\", \"alt\", \"shift\", \"meta\"].forEach(function (modifier) {\n if (event[\"\".concat(modifier, \"Key\")]) {\n var _context;\n\n if (modifier === \"ctrl\") {\n modifier = \"control\";\n }\n\n context = (_context = context) === null || _context === void 0 ? void 0 : _context[modifier];\n }\n });\n\n if (((_context2 = context) === null || _context2 === void 0 ? void 0 : _context2[keyName]) != null) {\n this.setInputSummary({\n keyName: keyName\n });\n selectionChangeObserver.reset();\n context[keyName].call(this, event);\n }\n }\n\n if (keyEventIsKeyboardCommand(event)) {\n var character = String.fromCharCode(event.keyCode).toLowerCase();\n\n if (character) {\n var _this$delegate3;\n\n var keys = [\"alt\", \"shift\"].map(function (modifier) {\n if (event[\"\".concat(modifier, \"Key\")]) {\n return modifier;\n }\n }).filter(function (key) {\n return key;\n });\n keys.push(character);\n\n if ((_this$delegate3 = this.delegate) !== null && _this$delegate3 !== void 0 && _this$delegate3.inputControllerDidReceiveKeyboardCommand(keys)) {\n event.preventDefault();\n }\n }\n }\n },\n keypress: function keypress(event) {\n if (this.inputSummary.eventName != null) return;\n if (event.metaKey) return;\n if (event.ctrlKey && !event.altKey) return;\n var string = stringFromKeyEvent(event);\n\n if (string) {\n var _this$delegate4, _this$responder9;\n\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : _this$delegate4.inputControllerWillPerformTyping();\n (_this$responder9 = this.responder) === null || _this$responder9 === void 0 ? void 0 : _this$responder9.insertString(string);\n return this.setInputSummary({\n textAdded: string,\n didDelete: this.selectionIsExpanded()\n });\n }\n },\n textInput: function textInput(event) {\n // Handle autocapitalization\n var data = event.data;\n var textAdded = this.inputSummary.textAdded;\n\n if (textAdded && textAdded !== data && textAdded.toUpperCase() === data) {\n var _this$responder10;\n\n var range = this.getSelectedRange();\n this.setSelectedRange([range[0], range[1] + textAdded.length]);\n (_this$responder10 = this.responder) === null || _this$responder10 === void 0 ? void 0 : _this$responder10.insertString(data);\n this.setInputSummary({\n textAdded: data\n });\n return this.setSelectedRange(range);\n }\n },\n dragenter: function dragenter(event) {\n event.preventDefault();\n },\n dragstart: function dragstart(event) {\n var _this$delegate5, _this$delegate5$input;\n\n this.serializeSelectionToDataTransfer(event.dataTransfer);\n this.draggedRange = this.getSelectedRange();\n return (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : (_this$delegate5$input = _this$delegate5.inputControllerDidStartDrag) === null || _this$delegate5$input === void 0 ? void 0 : _this$delegate5$input.call(_this$delegate5);\n },\n dragover: function dragover(event) {\n if (this.draggedRange || this.canAcceptDataTransfer(event.dataTransfer)) {\n event.preventDefault();\n var draggingPoint = {\n x: event.clientX,\n y: event.clientY\n };\n\n if (!objectsAreEqual(draggingPoint, this.draggingPoint)) {\n var _this$delegate6, _this$delegate6$input;\n\n this.draggingPoint = draggingPoint;\n return (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 ? void 0 : (_this$delegate6$input = _this$delegate6.inputControllerDidReceiveDragOverPoint) === null || _this$delegate6$input === void 0 ? void 0 : _this$delegate6$input.call(_this$delegate6, this.draggingPoint);\n }\n }\n },\n dragend: function dragend(event) {\n var _this$delegate7, _this$delegate7$input;\n\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 ? void 0 : (_this$delegate7$input = _this$delegate7.inputControllerDidCancelDrag) === null || _this$delegate7$input === void 0 ? void 0 : _this$delegate7$input.call(_this$delegate7);\n this.draggedRange = null;\n this.draggingPoint = null;\n },\n drop: function drop(event) {\n var _event$dataTransfer, _this$responder11;\n\n event.preventDefault();\n var files = (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.files;\n var documentJSON = event.dataTransfer.getData(\"application/x-trix-document\");\n var point = {\n x: event.clientX,\n y: event.clientY\n };\n (_this$responder11 = this.responder) === null || _this$responder11 === void 0 ? void 0 : _this$responder11.setLocationRangeFromPointRange(point);\n\n if (files !== null && files !== void 0 && files.length) {\n this.attachFiles(files);\n } else if (this.draggedRange) {\n var _this$delegate8, _this$responder12;\n\n (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 ? void 0 : _this$delegate8.inputControllerWillMoveText();\n (_this$responder12 = this.responder) === null || _this$responder12 === void 0 ? void 0 : _this$responder12.moveTextFromRange(this.draggedRange);\n this.draggedRange = null;\n this.requestRender();\n } else if (documentJSON) {\n var _this$responder13;\n\n var _document4 = Document.fromJSONString(documentJSON);\n\n (_this$responder13 = this.responder) === null || _this$responder13 === void 0 ? void 0 : _this$responder13.insertDocument(_document4);\n this.requestRender();\n }\n\n this.draggedRange = null;\n this.draggingPoint = null;\n },\n cut: function cut(event) {\n var _this$responder14;\n\n if ((_this$responder14 = this.responder) !== null && _this$responder14 !== void 0 && _this$responder14.selectionIsExpanded()) {\n var _this$delegate9;\n\n if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n event.preventDefault();\n }\n\n (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 ? void 0 : _this$delegate9.inputControllerWillCutText();\n this.deleteInDirection(\"backward\");\n\n if (event.defaultPrevented) {\n return this.requestRender();\n }\n }\n },\n copy: function copy(event) {\n var _this$responder15;\n\n if ((_this$responder15 = this.responder) !== null && _this$responder15 !== void 0 && _this$responder15.selectionIsExpanded()) {\n if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n event.preventDefault();\n }\n }\n },\n paste: function paste(event) {\n var _this61 = this;\n\n var clipboard = event.clipboardData || event.testClipboardData;\n var paste = {\n clipboard: clipboard\n };\n\n if (!clipboard || pasteEventIsCrippledSafariHTMLPaste(event)) {\n this.getPastedHTMLUsingHiddenElement(function (html) {\n var _this$delegate10, _this$responder16, _this$delegate11;\n\n paste.type = \"text/html\";\n paste.html = html;\n (_this$delegate10 = _this61.delegate) === null || _this$delegate10 === void 0 ? void 0 : _this$delegate10.inputControllerWillPaste(paste);\n (_this$responder16 = _this61.responder) === null || _this$responder16 === void 0 ? void 0 : _this$responder16.insertHTML(paste.html);\n\n _this61.requestRender();\n\n return (_this$delegate11 = _this61.delegate) === null || _this$delegate11 === void 0 ? void 0 : _this$delegate11.inputControllerDidPaste(paste);\n });\n return;\n }\n\n var href = clipboard.getData(\"URL\");\n var html = clipboard.getData(\"text/html\");\n var name = clipboard.getData(\"public.url-name\");\n\n if (href) {\n var _this$delegate12, _this$responder17, _this$delegate13;\n\n var string;\n paste.type = \"text/html\";\n\n if (name) {\n string = squishBreakableWhitespace(name).trim();\n } else {\n string = href;\n }\n\n paste.html = this.createLinkHTML(href, string);\n (_this$delegate12 = this.delegate) === null || _this$delegate12 === void 0 ? void 0 : _this$delegate12.inputControllerWillPaste(paste);\n this.setInputSummary({\n textAdded: string,\n didDelete: this.selectionIsExpanded()\n });\n (_this$responder17 = this.responder) === null || _this$responder17 === void 0 ? void 0 : _this$responder17.insertHTML(paste.html);\n this.requestRender();\n (_this$delegate13 = this.delegate) === null || _this$delegate13 === void 0 ? void 0 : _this$delegate13.inputControllerDidPaste(paste);\n } else if (dataTransferIsPlainText(clipboard)) {\n var _this$delegate14, _this$responder18, _this$delegate15;\n\n paste.type = \"text/plain\";\n paste.string = clipboard.getData(\"text/plain\");\n (_this$delegate14 = this.delegate) === null || _this$delegate14 === void 0 ? void 0 : _this$delegate14.inputControllerWillPaste(paste);\n this.setInputSummary({\n textAdded: paste.string,\n didDelete: this.selectionIsExpanded()\n });\n (_this$responder18 = this.responder) === null || _this$responder18 === void 0 ? void 0 : _this$responder18.insertString(paste.string);\n this.requestRender();\n (_this$delegate15 = this.delegate) === null || _this$delegate15 === void 0 ? void 0 : _this$delegate15.inputControllerDidPaste(paste);\n } else if (html) {\n var _this$delegate16, _this$responder19, _this$delegate17;\n\n paste.type = \"text/html\";\n paste.html = html;\n (_this$delegate16 = this.delegate) === null || _this$delegate16 === void 0 ? void 0 : _this$delegate16.inputControllerWillPaste(paste);\n (_this$responder19 = this.responder) === null || _this$responder19 === void 0 ? void 0 : _this$responder19.insertHTML(paste.html);\n this.requestRender();\n (_this$delegate17 = this.delegate) === null || _this$delegate17 === void 0 ? void 0 : _this$delegate17.inputControllerDidPaste(paste);\n } else if (Array.from(clipboard.types).includes(\"Files\")) {\n var _clipboard$items, _clipboard$items$, _clipboard$items$$get;\n\n var file = (_clipboard$items = clipboard.items) === null || _clipboard$items === void 0 ? void 0 : (_clipboard$items$ = _clipboard$items[0]) === null || _clipboard$items$ === void 0 ? void 0 : (_clipboard$items$$get = _clipboard$items$.getAsFile) === null || _clipboard$items$$get === void 0 ? void 0 : _clipboard$items$$get.call(_clipboard$items$);\n\n if (file) {\n var _this$delegate18, _this$responder20, _this$delegate19;\n\n var extension = extensionForFile(file);\n\n if (!file.name && extension) {\n file.name = \"pasted-file-\".concat(++pastedFileCount, \".\").concat(extension);\n }\n\n paste.type = \"File\";\n paste.file = file;\n (_this$delegate18 = this.delegate) === null || _this$delegate18 === void 0 ? void 0 : _this$delegate18.inputControllerWillAttachFiles();\n (_this$responder20 = this.responder) === null || _this$responder20 === void 0 ? void 0 : _this$responder20.insertFile(paste.file);\n this.requestRender();\n (_this$delegate19 = this.delegate) === null || _this$delegate19 === void 0 ? void 0 : _this$delegate19.inputControllerDidPaste(paste);\n }\n }\n\n event.preventDefault();\n },\n compositionstart: function compositionstart(event) {\n return this.getCompositionInput().start(event.data);\n },\n compositionupdate: function compositionupdate(event) {\n return this.getCompositionInput().update(event.data);\n },\n compositionend: function compositionend(event) {\n return this.getCompositionInput().end(event.data);\n },\n beforeinput: function beforeinput(event) {\n this.inputSummary.didInput = true;\n },\n input: function input(event) {\n this.inputSummary.didInput = true;\n return event.stopPropagation();\n }\n});\n\n_defineProperty(Level0InputController, \"keys\", {\n backspace: function backspace(event) {\n var _this$delegate20;\n\n (_this$delegate20 = this.delegate) === null || _this$delegate20 === void 0 ? void 0 : _this$delegate20.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"backward\", event);\n },\n \"delete\": function _delete(event) {\n var _this$delegate21;\n\n (_this$delegate21 = this.delegate) === null || _this$delegate21 === void 0 ? void 0 : _this$delegate21.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"forward\", event);\n },\n \"return\": function _return(event) {\n var _this$delegate22, _this$responder21;\n\n this.setInputSummary({\n preferDocument: true\n });\n (_this$delegate22 = this.delegate) === null || _this$delegate22 === void 0 ? void 0 : _this$delegate22.inputControllerWillPerformTyping();\n return (_this$responder21 = this.responder) === null || _this$responder21 === void 0 ? void 0 : _this$responder21.insertLineBreak();\n },\n tab: function tab(event) {\n var _this$responder22;\n\n if ((_this$responder22 = this.responder) !== null && _this$responder22 !== void 0 && _this$responder22.canIncreaseNestingLevel()) {\n var _this$responder23;\n\n (_this$responder23 = this.responder) === null || _this$responder23 === void 0 ? void 0 : _this$responder23.increaseNestingLevel();\n this.requestRender();\n event.preventDefault();\n }\n },\n left: function left(event) {\n if (this.selectionIsInCursorTarget()) {\n var _this$responder24;\n\n event.preventDefault();\n return (_this$responder24 = this.responder) === null || _this$responder24 === void 0 ? void 0 : _this$responder24.moveCursorInDirection(\"backward\");\n }\n },\n right: function right(event) {\n if (this.selectionIsInCursorTarget()) {\n var _this$responder25;\n\n event.preventDefault();\n return (_this$responder25 = this.responder) === null || _this$responder25 === void 0 ? void 0 : _this$responder25.moveCursorInDirection(\"forward\");\n }\n },\n control: {\n d: function d(event) {\n var _this$delegate23;\n\n (_this$delegate23 = this.delegate) === null || _this$delegate23 === void 0 ? void 0 : _this$delegate23.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"forward\", event);\n },\n h: function h(event) {\n var _this$delegate24;\n\n (_this$delegate24 = this.delegate) === null || _this$delegate24 === void 0 ? void 0 : _this$delegate24.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"backward\", event);\n },\n o: function o(event) {\n var _this$delegate25, _this$responder26;\n\n event.preventDefault();\n (_this$delegate25 = this.delegate) === null || _this$delegate25 === void 0 ? void 0 : _this$delegate25.inputControllerWillPerformTyping();\n (_this$responder26 = this.responder) === null || _this$responder26 === void 0 ? void 0 : _this$responder26.insertString(\"\\n\", {\n updatePosition: false\n });\n return this.requestRender();\n }\n },\n shift: {\n \"return\": function _return(event) {\n var _this$delegate26, _this$responder27;\n\n (_this$delegate26 = this.delegate) === null || _this$delegate26 === void 0 ? void 0 : _this$delegate26.inputControllerWillPerformTyping();\n (_this$responder27 = this.responder) === null || _this$responder27 === void 0 ? void 0 : _this$responder27.insertString(\"\\n\");\n this.requestRender();\n event.preventDefault();\n },\n tab: function tab(event) {\n var _this$responder28;\n\n if ((_this$responder28 = this.responder) !== null && _this$responder28 !== void 0 && _this$responder28.canDecreaseNestingLevel()) {\n var _this$responder29;\n\n (_this$responder29 = this.responder) === null || _this$responder29 === void 0 ? void 0 : _this$responder29.decreaseNestingLevel();\n this.requestRender();\n event.preventDefault();\n }\n },\n left: function left(event) {\n if (this.selectionIsInCursorTarget()) {\n event.preventDefault();\n return this.expandSelectionInDirection(\"backward\");\n }\n },\n right: function right(event) {\n if (this.selectionIsInCursorTarget()) {\n event.preventDefault();\n return this.expandSelectionInDirection(\"forward\");\n }\n }\n },\n alt: {\n backspace: function backspace(event) {\n var _this$delegate27;\n\n this.setInputSummary({\n preferDocument: false\n });\n return (_this$delegate27 = this.delegate) === null || _this$delegate27 === void 0 ? void 0 : _this$delegate27.inputControllerWillPerformTyping();\n }\n },\n meta: {\n backspace: function backspace(event) {\n var _this$delegate28;\n\n this.setInputSummary({\n preferDocument: false\n });\n return (_this$delegate28 = this.delegate) === null || _this$delegate28 === void 0 ? void 0 : _this$delegate28.inputControllerWillPerformTyping();\n }\n }\n});\n\nLevel0InputController.proxyMethod(\"responder?.getSelectedRange\");\nLevel0InputController.proxyMethod(\"responder?.setSelectedRange\");\nLevel0InputController.proxyMethod(\"responder?.expandSelectionInDirection\");\nLevel0InputController.proxyMethod(\"responder?.selectionIsInCursorTarget\");\nLevel0InputController.proxyMethod(\"responder?.selectionIsExpanded\");\n\nvar extensionForFile = function extensionForFile(file) {\n var _file$type, _file$type$match;\n\n return (_file$type = file.type) === null || _file$type === void 0 ? void 0 : (_file$type$match = _file$type.match(/\\/(\\w+)$/)) === null || _file$type$match === void 0 ? void 0 : _file$type$match[1];\n};\n\nvar hasStringCodePointAt = !!((_$codePointAt = (_ = \" \").codePointAt) !== null && _$codePointAt !== void 0 && _$codePointAt.call(_, 0));\n\nvar stringFromKeyEvent = function stringFromKeyEvent(event) {\n if (event.key && hasStringCodePointAt && event.key.codePointAt(0) === event.keyCode) {\n return event.key;\n } else {\n var code;\n\n if (event.which === null) {\n code = event.keyCode;\n } else if (event.which !== 0 && event.charCode !== 0) {\n code = event.charCode;\n }\n\n if (code != null && keyNames$1[code] !== \"escape\") {\n return UTF16String.fromCodepoints([code]).toString();\n }\n }\n};\n\nvar pasteEventIsCrippledSafariHTMLPaste = function pasteEventIsCrippledSafariHTMLPaste(event) {\n var paste = event.clipboardData;\n\n if (paste) {\n if (paste.types.includes(\"text/html\")) {\n // Answer is yes if there's any possibility of Paste and Match Style in Safari,\n // which is nearly impossible to detect confidently: https://bugs.webkit.org/show_bug.cgi?id=174165\n var _iterator7 = _createForOfIteratorHelper2(paste.types),\n _step8;\n\n try {\n for (_iterator7.s(); !(_step8 = _iterator7.n()).done;) {\n var type = _step8.value;\n var hasPasteboardFlavor = /^CorePasteboardFlavorType/.test(type);\n var hasReadableDynamicData = /^dyn\\./.test(type) && paste.getData(type);\n var mightBePasteAndMatchStyle = hasPasteboardFlavor || hasReadableDynamicData;\n\n if (mightBePasteAndMatchStyle) {\n return true;\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n return false;\n } else {\n var isExternalHTMLPaste = paste.types.includes(\"com.apple.webarchive\");\n var isExternalRichTextPaste = paste.types.includes(\"com.apple.flat-rtfd\");\n return isExternalHTMLPaste || isExternalRichTextPaste;\n }\n }\n};\n\nvar CompositionInput = /*#__PURE__*/function (_BasicObject17) {\n _inherits2(CompositionInput, _BasicObject17);\n\n var _super37 = _createSuper2(CompositionInput);\n\n function CompositionInput(inputController) {\n var _this62;\n\n _classCallCheck2(this, CompositionInput);\n\n _this62 = _super37.apply(this, arguments);\n _this62.inputController = inputController;\n _this62.responder = _this62.inputController.responder;\n _this62.delegate = _this62.inputController.delegate;\n _this62.inputSummary = _this62.inputController.inputSummary;\n _this62.data = {};\n return _this62;\n }\n\n _createClass2(CompositionInput, [{\n key: \"start\",\n value: function start(data) {\n this.data.start = data;\n\n if (this.isSignificant()) {\n var _this$responder5;\n\n if (this.inputSummary.eventName === \"keypress\" && this.inputSummary.textAdded) {\n var _this$responder4;\n\n (_this$responder4 = this.responder) === null || _this$responder4 === void 0 ? void 0 : _this$responder4.deleteInDirection(\"left\");\n }\n\n if (!this.selectionIsExpanded()) {\n this.insertPlaceholder();\n this.requestRender();\n }\n\n this.range = (_this$responder5 = this.responder) === null || _this$responder5 === void 0 ? void 0 : _this$responder5.getSelectedRange();\n }\n }\n }, {\n key: \"update\",\n value: function update(data) {\n this.data.update = data;\n\n if (this.isSignificant()) {\n var range = this.selectPlaceholder();\n\n if (range) {\n this.forgetPlaceholder();\n this.range = range;\n }\n }\n }\n }, {\n key: \"end\",\n value: function end(data) {\n this.data.end = data;\n\n if (this.isSignificant()) {\n this.forgetPlaceholder();\n\n if (this.canApplyToDocument()) {\n var _this$delegate2, _this$responder6, _this$responder7, _this$responder8;\n\n this.setInputSummary({\n preferDocument: true,\n didInput: false\n });\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : _this$delegate2.inputControllerWillPerformTyping();\n (_this$responder6 = this.responder) === null || _this$responder6 === void 0 ? void 0 : _this$responder6.setSelectedRange(this.range);\n (_this$responder7 = this.responder) === null || _this$responder7 === void 0 ? void 0 : _this$responder7.insertString(this.data.end);\n return (_this$responder8 = this.responder) === null || _this$responder8 === void 0 ? void 0 : _this$responder8.setSelectedRange(this.range[0] + this.data.end.length);\n } else if (this.data.start != null || this.data.update != null) {\n this.requestReparse();\n return this.inputController.reset();\n }\n } else {\n return this.inputController.reset();\n }\n }\n }, {\n key: \"getEndData\",\n value: function getEndData() {\n return this.data.end;\n }\n }, {\n key: \"isEnded\",\n value: function isEnded() {\n return this.getEndData() != null;\n }\n }, {\n key: \"isSignificant\",\n value: function isSignificant() {\n if (browser.composesExistingText) {\n return this.inputSummary.didInput;\n } else {\n return true;\n }\n } // Private\n\n }, {\n key: \"canApplyToDocument\",\n value: function canApplyToDocument() {\n var _this$data$start, _this$data$end;\n\n return ((_this$data$start = this.data.start) === null || _this$data$start === void 0 ? void 0 : _this$data$start.length) === 0 && ((_this$data$end = this.data.end) === null || _this$data$end === void 0 ? void 0 : _this$data$end.length) > 0 && this.range;\n }\n }]);\n\n return CompositionInput;\n}(BasicObject);\n\nCompositionInput.proxyMethod(\"inputController.setInputSummary\");\nCompositionInput.proxyMethod(\"inputController.requestRender\");\nCompositionInput.proxyMethod(\"inputController.requestReparse\");\nCompositionInput.proxyMethod(\"responder?.selectionIsExpanded\");\nCompositionInput.proxyMethod(\"responder?.insertPlaceholder\");\nCompositionInput.proxyMethod(\"responder?.selectPlaceholder\");\nCompositionInput.proxyMethod(\"responder?.forgetPlaceholder\");\n\nvar Level2InputController = /*#__PURE__*/function (_InputController2) {\n _inherits2(Level2InputController, _InputController2);\n\n var _super38 = _createSuper2(Level2InputController);\n\n function Level2InputController() {\n var _this63;\n\n _classCallCheck2(this, Level2InputController);\n\n _this63 = _super38.apply(this, arguments);\n _this63.render = _this63.render.bind(_assertThisInitialized2(_this63));\n return _this63;\n }\n\n _createClass2(Level2InputController, [{\n key: \"elementDidMutate\",\n value: function elementDidMutate() {\n if (this.scheduledRender) {\n if (this.composing) {\n var _this$delegate, _this$delegate$inputC;\n\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$inputC = _this$delegate.inputControllerDidAllowUnhandledInput) === null || _this$delegate$inputC === void 0 ? void 0 : _this$delegate$inputC.call(_this$delegate);\n }\n } else {\n return this.reparse();\n }\n }\n }, {\n key: \"scheduleRender\",\n value: function scheduleRender() {\n return this.scheduledRender ? this.scheduledRender : this.scheduledRender = requestAnimationFrame(this.render);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$afterRender;\n\n cancelAnimationFrame(this.scheduledRender);\n this.scheduledRender = null;\n\n if (!this.composing) {\n var _this$delegate2;\n\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : _this$delegate2.render();\n }\n\n (_this$afterRender = this.afterRender) === null || _this$afterRender === void 0 ? void 0 : _this$afterRender.call(this);\n this.afterRender = null;\n }\n }, {\n key: \"reparse\",\n value: function reparse() {\n var _this$delegate3;\n\n return (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : _this$delegate3.reparse();\n } // Responder helpers\n\n }, {\n key: \"insertString\",\n value: function insertString() {\n var _this$delegate4;\n\n var string = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var options = arguments.length > 1 ? arguments[1] : undefined;\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : _this$delegate4.inputControllerWillPerformTyping();\n return this.withTargetDOMRange(function () {\n var _this$responder;\n\n return (_this$responder = this.responder) === null || _this$responder === void 0 ? void 0 : _this$responder.insertString(string, options);\n });\n }\n }, {\n key: \"toggleAttributeIfSupported\",\n value: function toggleAttributeIfSupported(attributeName) {\n if (getAllAttributeNames().includes(attributeName)) {\n var _this$delegate5;\n\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : _this$delegate5.inputControllerWillPerformFormatting(attributeName);\n return this.withTargetDOMRange(function () {\n var _this$responder2;\n\n return (_this$responder2 = this.responder) === null || _this$responder2 === void 0 ? void 0 : _this$responder2.toggleCurrentAttribute(attributeName);\n });\n }\n }\n }, {\n key: \"activateAttributeIfSupported\",\n value: function activateAttributeIfSupported(attributeName, value) {\n if (getAllAttributeNames().includes(attributeName)) {\n var _this$delegate6;\n\n (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 ? void 0 : _this$delegate6.inputControllerWillPerformFormatting(attributeName);\n return this.withTargetDOMRange(function () {\n var _this$responder3;\n\n return (_this$responder3 = this.responder) === null || _this$responder3 === void 0 ? void 0 : _this$responder3.setCurrentAttribute(attributeName, value);\n });\n }\n }\n }, {\n key: \"deleteInDirection\",\n value: function deleteInDirection(direction) {\n var _this64 = this;\n\n var _ref21 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n recordUndoEntry: true\n },\n recordUndoEntry = _ref21.recordUndoEntry;\n\n if (recordUndoEntry) {\n var _this$delegate7;\n\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 ? void 0 : _this$delegate7.inputControllerWillPerformTyping();\n }\n\n var perform = function perform() {\n var _this$responder4;\n\n return (_this$responder4 = _this64.responder) === null || _this$responder4 === void 0 ? void 0 : _this$responder4.deleteInDirection(direction);\n };\n\n var domRange = this.getTargetDOMRange({\n minLength: 2\n });\n\n if (domRange) {\n return this.withTargetDOMRange(domRange, perform);\n } else {\n return perform();\n }\n } // Selection helpers\n\n }, {\n key: \"withTargetDOMRange\",\n value: function withTargetDOMRange(domRange, fn) {\n if (typeof domRange === \"function\") {\n fn = domRange;\n domRange = this.getTargetDOMRange();\n }\n\n if (domRange) {\n var _this$responder5;\n\n return (_this$responder5 = this.responder) === null || _this$responder5 === void 0 ? void 0 : _this$responder5.withTargetDOMRange(domRange, fn.bind(this));\n } else {\n selectionChangeObserver.reset();\n return fn.call(this);\n }\n }\n }, {\n key: \"getTargetDOMRange\",\n value: function getTargetDOMRange() {\n var _this$event$getTarget, _this$event;\n\n var _ref22 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n minLength: 0\n },\n minLength = _ref22.minLength;\n\n var targetRanges = (_this$event$getTarget = (_this$event = this.event).getTargetRanges) === null || _this$event$getTarget === void 0 ? void 0 : _this$event$getTarget.call(_this$event);\n\n if (targetRanges) {\n if (targetRanges.length) {\n var domRange = staticRangeToRange(targetRanges[0]);\n\n if (minLength === 0 || domRange.toString().length >= minLength) {\n return domRange;\n }\n }\n }\n }\n }, {\n key: \"withEvent\",\n value: function withEvent(event, fn) {\n var result;\n this.event = event;\n\n try {\n result = fn.call(this);\n } finally {\n this.event = null;\n }\n\n return result;\n }\n }]);\n\n return Level2InputController;\n}(InputController);\n\n_defineProperty(Level2InputController, \"events\", {\n keydown: function keydown(event) {\n if (keyEventIsKeyboardCommand(event)) {\n var _this$delegate8;\n\n var command = keyboardCommandFromKeyEvent(event);\n\n if ((_this$delegate8 = this.delegate) !== null && _this$delegate8 !== void 0 && _this$delegate8.inputControllerDidReceiveKeyboardCommand(command)) {\n event.preventDefault();\n }\n } else {\n var _name3 = event.key;\n\n if (event.altKey) {\n _name3 += \"+Alt\";\n }\n\n if (event.shiftKey) {\n _name3 += \"+Shift\";\n }\n\n var handler = this.constructor.keys[_name3];\n\n if (handler) {\n return this.withEvent(event, handler);\n }\n }\n },\n // Handle paste event to work around beforeinput.insertFromPaste browser bugs.\n // Safe to remove each condition once fixed upstream.\n paste: function paste(event) {\n var _event$clipboardData; // https://bugs.webkit.org/show_bug.cgi?id=194921\n\n\n var paste;\n var href = (_event$clipboardData = event.clipboardData) === null || _event$clipboardData === void 0 ? void 0 : _event$clipboardData.getData(\"URL\");\n\n if (pasteEventHasFilesOnly(event)) {\n event.preventDefault();\n return this.attachFiles(event.clipboardData.files); // https://bugs.chromium.org/p/chromium/issues/detail?id=934448\n } else if (pasteEventHasPlainTextOnly(event)) {\n var _this$delegate9, _this$responder6, _this$delegate10;\n\n event.preventDefault();\n paste = {\n type: \"text/plain\",\n string: event.clipboardData.getData(\"text/plain\")\n };\n (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 ? void 0 : _this$delegate9.inputControllerWillPaste(paste);\n (_this$responder6 = this.responder) === null || _this$responder6 === void 0 ? void 0 : _this$responder6.insertString(paste.string);\n this.render();\n return (_this$delegate10 = this.delegate) === null || _this$delegate10 === void 0 ? void 0 : _this$delegate10.inputControllerDidPaste(paste); // https://bugs.webkit.org/show_bug.cgi?id=196702\n } else if (href) {\n var _this$delegate11, _this$responder7, _this$delegate12;\n\n event.preventDefault();\n paste = {\n type: \"text/html\",\n html: this.createLinkHTML(href)\n };\n (_this$delegate11 = this.delegate) === null || _this$delegate11 === void 0 ? void 0 : _this$delegate11.inputControllerWillPaste(paste);\n (_this$responder7 = this.responder) === null || _this$responder7 === void 0 ? void 0 : _this$responder7.insertHTML(paste.html);\n this.render();\n return (_this$delegate12 = this.delegate) === null || _this$delegate12 === void 0 ? void 0 : _this$delegate12.inputControllerDidPaste(paste);\n }\n },\n beforeinput: function beforeinput(event) {\n var handler = this.constructor.inputTypes[event.inputType];\n\n if (handler) {\n this.withEvent(event, handler);\n return this.scheduleRender();\n }\n },\n input: function input(event) {\n return selectionChangeObserver.reset();\n },\n dragstart: function dragstart(event) {\n var _this$responder8;\n\n if ((_this$responder8 = this.responder) !== null && _this$responder8 !== void 0 && _this$responder8.selectionContainsAttachments()) {\n var _this$responder9;\n\n event.dataTransfer.setData(\"application/x-trix-dragging\", true);\n this.dragging = {\n range: (_this$responder9 = this.responder) === null || _this$responder9 === void 0 ? void 0 : _this$responder9.getSelectedRange(),\n point: pointFromEvent(event)\n };\n }\n },\n dragenter: function dragenter(event) {\n if (dragEventHasFiles(event)) {\n event.preventDefault();\n }\n },\n dragover: function dragover(event) {\n if (this.dragging) {\n event.preventDefault();\n var point = pointFromEvent(event);\n\n if (!objectsAreEqual(point, this.dragging.point)) {\n var _this$responder10;\n\n this.dragging.point = point;\n return (_this$responder10 = this.responder) === null || _this$responder10 === void 0 ? void 0 : _this$responder10.setLocationRangeFromPointRange(point);\n }\n } else if (dragEventHasFiles(event)) {\n event.preventDefault();\n }\n },\n drop: function drop(event) {\n if (this.dragging) {\n var _this$delegate13, _this$responder11;\n\n event.preventDefault();\n (_this$delegate13 = this.delegate) === null || _this$delegate13 === void 0 ? void 0 : _this$delegate13.inputControllerWillMoveText();\n (_this$responder11 = this.responder) === null || _this$responder11 === void 0 ? void 0 : _this$responder11.moveTextFromRange(this.dragging.range);\n this.dragging = null;\n return this.scheduleRender();\n } else if (dragEventHasFiles(event)) {\n var _this$responder12;\n\n event.preventDefault();\n var point = pointFromEvent(event);\n (_this$responder12 = this.responder) === null || _this$responder12 === void 0 ? void 0 : _this$responder12.setLocationRangeFromPointRange(point);\n return this.attachFiles(event.dataTransfer.files);\n }\n },\n dragend: function dragend() {\n if (this.dragging) {\n var _this$responder13;\n\n (_this$responder13 = this.responder) === null || _this$responder13 === void 0 ? void 0 : _this$responder13.setSelectedRange(this.dragging.range);\n this.dragging = null;\n }\n },\n compositionend: function compositionend(event) {\n if (this.composing) {\n this.composing = false;\n return this.scheduleRender();\n }\n }\n});\n\n_defineProperty(Level2InputController, \"keys\", {\n ArrowLeft: function ArrowLeft() {\n var _this$responder14;\n\n if ((_this$responder14 = this.responder) !== null && _this$responder14 !== void 0 && _this$responder14.shouldManageMovingCursorInDirection(\"backward\")) {\n var _this$responder15;\n\n this.event.preventDefault();\n return (_this$responder15 = this.responder) === null || _this$responder15 === void 0 ? void 0 : _this$responder15.moveCursorInDirection(\"backward\");\n }\n },\n ArrowRight: function ArrowRight() {\n var _this$responder16;\n\n if ((_this$responder16 = this.responder) !== null && _this$responder16 !== void 0 && _this$responder16.shouldManageMovingCursorInDirection(\"forward\")) {\n var _this$responder17;\n\n this.event.preventDefault();\n return (_this$responder17 = this.responder) === null || _this$responder17 === void 0 ? void 0 : _this$responder17.moveCursorInDirection(\"forward\");\n }\n },\n Backspace: function Backspace() {\n var _this$responder18;\n\n if ((_this$responder18 = this.responder) !== null && _this$responder18 !== void 0 && _this$responder18.shouldManageDeletingInDirection(\"backward\")) {\n var _this$delegate14, _this$responder19;\n\n this.event.preventDefault();\n (_this$delegate14 = this.delegate) === null || _this$delegate14 === void 0 ? void 0 : _this$delegate14.inputControllerWillPerformTyping();\n (_this$responder19 = this.responder) === null || _this$responder19 === void 0 ? void 0 : _this$responder19.deleteInDirection(\"backward\");\n return this.render();\n }\n },\n Tab: function Tab() {\n var _this$responder20;\n\n if ((_this$responder20 = this.responder) !== null && _this$responder20 !== void 0 && _this$responder20.canIncreaseNestingLevel()) {\n var _this$responder21;\n\n this.event.preventDefault();\n (_this$responder21 = this.responder) === null || _this$responder21 === void 0 ? void 0 : _this$responder21.increaseNestingLevel();\n return this.render();\n }\n },\n \"Tab+Shift\": function TabShift() {\n var _this$responder22;\n\n if ((_this$responder22 = this.responder) !== null && _this$responder22 !== void 0 && _this$responder22.canDecreaseNestingLevel()) {\n var _this$responder23;\n\n this.event.preventDefault();\n (_this$responder23 = this.responder) === null || _this$responder23 === void 0 ? void 0 : _this$responder23.decreaseNestingLevel();\n return this.render();\n }\n }\n});\n\n_defineProperty(Level2InputController, \"inputTypes\", {\n deleteByComposition: function deleteByComposition() {\n return this.deleteInDirection(\"backward\", {\n recordUndoEntry: false\n });\n },\n deleteByCut: function deleteByCut() {\n return this.deleteInDirection(\"backward\");\n },\n deleteByDrag: function deleteByDrag() {\n this.event.preventDefault();\n return this.withTargetDOMRange(function () {\n var _this$responder24;\n\n this.deleteByDragRange = (_this$responder24 = this.responder) === null || _this$responder24 === void 0 ? void 0 : _this$responder24.getSelectedRange();\n });\n },\n deleteCompositionText: function deleteCompositionText() {\n return this.deleteInDirection(\"backward\", {\n recordUndoEntry: false\n });\n },\n deleteContent: function deleteContent() {\n return this.deleteInDirection(\"backward\");\n },\n deleteContentBackward: function deleteContentBackward() {\n return this.deleteInDirection(\"backward\");\n },\n deleteContentForward: function deleteContentForward() {\n return this.deleteInDirection(\"forward\");\n },\n deleteEntireSoftLine: function deleteEntireSoftLine() {\n return this.deleteInDirection(\"forward\");\n },\n deleteHardLineBackward: function deleteHardLineBackward() {\n return this.deleteInDirection(\"backward\");\n },\n deleteHardLineForward: function deleteHardLineForward() {\n return this.deleteInDirection(\"forward\");\n },\n deleteSoftLineBackward: function deleteSoftLineBackward() {\n return this.deleteInDirection(\"backward\");\n },\n deleteSoftLineForward: function deleteSoftLineForward() {\n return this.deleteInDirection(\"forward\");\n },\n deleteWordBackward: function deleteWordBackward() {\n return this.deleteInDirection(\"backward\");\n },\n deleteWordForward: function deleteWordForward() {\n return this.deleteInDirection(\"forward\");\n },\n formatBackColor: function formatBackColor() {\n return this.activateAttributeIfSupported(\"backgroundColor\", this.event.data);\n },\n formatBold: function formatBold() {\n return this.toggleAttributeIfSupported(\"bold\");\n },\n formatFontColor: function formatFontColor() {\n return this.activateAttributeIfSupported(\"color\", this.event.data);\n },\n formatFontName: function formatFontName() {\n return this.activateAttributeIfSupported(\"font\", this.event.data);\n },\n formatIndent: function formatIndent() {\n var _this$responder25;\n\n if ((_this$responder25 = this.responder) !== null && _this$responder25 !== void 0 && _this$responder25.canIncreaseNestingLevel()) {\n return this.withTargetDOMRange(function () {\n var _this$responder26;\n\n return (_this$responder26 = this.responder) === null || _this$responder26 === void 0 ? void 0 : _this$responder26.increaseNestingLevel();\n });\n }\n },\n formatItalic: function formatItalic() {\n return this.toggleAttributeIfSupported(\"italic\");\n },\n formatJustifyCenter: function formatJustifyCenter() {\n return this.toggleAttributeIfSupported(\"justifyCenter\");\n },\n formatJustifyFull: function formatJustifyFull() {\n return this.toggleAttributeIfSupported(\"justifyFull\");\n },\n formatJustifyLeft: function formatJustifyLeft() {\n return this.toggleAttributeIfSupported(\"justifyLeft\");\n },\n formatJustifyRight: function formatJustifyRight() {\n return this.toggleAttributeIfSupported(\"justifyRight\");\n },\n formatOutdent: function formatOutdent() {\n var _this$responder27;\n\n if ((_this$responder27 = this.responder) !== null && _this$responder27 !== void 0 && _this$responder27.canDecreaseNestingLevel()) {\n return this.withTargetDOMRange(function () {\n var _this$responder28;\n\n return (_this$responder28 = this.responder) === null || _this$responder28 === void 0 ? void 0 : _this$responder28.decreaseNestingLevel();\n });\n }\n },\n formatRemove: function formatRemove() {\n this.withTargetDOMRange(function () {\n for (var attributeName in (_this$responder29 = this.responder) === null || _this$responder29 === void 0 ? void 0 : _this$responder29.getCurrentAttributes()) {\n var _this$responder29, _this$responder30;\n\n (_this$responder30 = this.responder) === null || _this$responder30 === void 0 ? void 0 : _this$responder30.removeCurrentAttribute(attributeName);\n }\n });\n },\n formatSetBlockTextDirection: function formatSetBlockTextDirection() {\n return this.activateAttributeIfSupported(\"blockDir\", this.event.data);\n },\n formatSetInlineTextDirection: function formatSetInlineTextDirection() {\n return this.activateAttributeIfSupported(\"textDir\", this.event.data);\n },\n formatStrikeThrough: function formatStrikeThrough() {\n return this.toggleAttributeIfSupported(\"strike\");\n },\n formatSubscript: function formatSubscript() {\n return this.toggleAttributeIfSupported(\"sub\");\n },\n formatSuperscript: function formatSuperscript() {\n return this.toggleAttributeIfSupported(\"sup\");\n },\n formatUnderline: function formatUnderline() {\n return this.toggleAttributeIfSupported(\"underline\");\n },\n historyRedo: function historyRedo() {\n var _this$delegate15;\n\n return (_this$delegate15 = this.delegate) === null || _this$delegate15 === void 0 ? void 0 : _this$delegate15.inputControllerWillPerformRedo();\n },\n historyUndo: function historyUndo() {\n var _this$delegate16;\n\n return (_this$delegate16 = this.delegate) === null || _this$delegate16 === void 0 ? void 0 : _this$delegate16.inputControllerWillPerformUndo();\n },\n insertCompositionText: function insertCompositionText() {\n this.composing = true;\n return this.insertString(this.event.data);\n },\n insertFromComposition: function insertFromComposition() {\n this.composing = false;\n return this.insertString(this.event.data);\n },\n insertFromDrop: function insertFromDrop() {\n var range = this.deleteByDragRange;\n\n if (range) {\n var _this$delegate17;\n\n this.deleteByDragRange = null;\n (_this$delegate17 = this.delegate) === null || _this$delegate17 === void 0 ? void 0 : _this$delegate17.inputControllerWillMoveText();\n return this.withTargetDOMRange(function () {\n var _this$responder31;\n\n return (_this$responder31 = this.responder) === null || _this$responder31 === void 0 ? void 0 : _this$responder31.moveTextFromRange(range);\n });\n }\n },\n insertFromPaste: function insertFromPaste() {\n var _this65 = this;\n\n var _dataTransfer$files;\n\n var dataTransfer = this.event.dataTransfer;\n var paste = {\n dataTransfer: dataTransfer\n };\n var href = dataTransfer.getData(\"URL\");\n var html = dataTransfer.getData(\"text/html\");\n\n if (href) {\n var _this$delegate18;\n\n var string;\n this.event.preventDefault();\n paste.type = \"text/html\";\n\n var _name4 = dataTransfer.getData(\"public.url-name\");\n\n if (_name4) {\n string = squishBreakableWhitespace(_name4).trim();\n } else {\n string = href;\n }\n\n paste.html = this.createLinkHTML(href, string);\n (_this$delegate18 = this.delegate) === null || _this$delegate18 === void 0 ? void 0 : _this$delegate18.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder32;\n\n return (_this$responder32 = this.responder) === null || _this$responder32 === void 0 ? void 0 : _this$responder32.insertHTML(paste.html);\n });\n\n this.afterRender = function () {\n var _this$delegate19;\n\n return (_this$delegate19 = _this65.delegate) === null || _this$delegate19 === void 0 ? void 0 : _this$delegate19.inputControllerDidPaste(paste);\n };\n } else if (dataTransferIsPlainText(dataTransfer)) {\n var _this$delegate20;\n\n paste.type = \"text/plain\";\n paste.string = dataTransfer.getData(\"text/plain\");\n (_this$delegate20 = this.delegate) === null || _this$delegate20 === void 0 ? void 0 : _this$delegate20.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder33;\n\n return (_this$responder33 = this.responder) === null || _this$responder33 === void 0 ? void 0 : _this$responder33.insertString(paste.string);\n });\n\n this.afterRender = function () {\n var _this$delegate21;\n\n return (_this$delegate21 = _this65.delegate) === null || _this$delegate21 === void 0 ? void 0 : _this$delegate21.inputControllerDidPaste(paste);\n };\n } else if (html) {\n var _this$delegate22;\n\n this.event.preventDefault();\n paste.type = \"text/html\";\n paste.html = html;\n (_this$delegate22 = this.delegate) === null || _this$delegate22 === void 0 ? void 0 : _this$delegate22.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder34;\n\n return (_this$responder34 = this.responder) === null || _this$responder34 === void 0 ? void 0 : _this$responder34.insertHTML(paste.html);\n });\n\n this.afterRender = function () {\n var _this$delegate23;\n\n return (_this$delegate23 = _this65.delegate) === null || _this$delegate23 === void 0 ? void 0 : _this$delegate23.inputControllerDidPaste(paste);\n };\n } else if ((_dataTransfer$files = dataTransfer.files) !== null && _dataTransfer$files !== void 0 && _dataTransfer$files.length) {\n var _this$delegate24;\n\n paste.type = \"File\";\n paste.file = dataTransfer.files[0];\n (_this$delegate24 = this.delegate) === null || _this$delegate24 === void 0 ? void 0 : _this$delegate24.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder35;\n\n return (_this$responder35 = this.responder) === null || _this$responder35 === void 0 ? void 0 : _this$responder35.insertFile(paste.file);\n });\n\n this.afterRender = function () {\n var _this$delegate25;\n\n return (_this$delegate25 = _this65.delegate) === null || _this$delegate25 === void 0 ? void 0 : _this$delegate25.inputControllerDidPaste(paste);\n };\n }\n },\n insertFromYank: function insertFromYank() {\n return this.insertString(this.event.data);\n },\n insertLineBreak: function insertLineBreak() {\n return this.insertString(\"\\n\");\n },\n insertLink: function insertLink() {\n return this.activateAttributeIfSupported(\"href\", this.event.data);\n },\n insertOrderedList: function insertOrderedList() {\n return this.toggleAttributeIfSupported(\"number\");\n },\n insertParagraph: function insertParagraph() {\n var _this$delegate26;\n\n (_this$delegate26 = this.delegate) === null || _this$delegate26 === void 0 ? void 0 : _this$delegate26.inputControllerWillPerformTyping();\n return this.withTargetDOMRange(function () {\n var _this$responder36;\n\n return (_this$responder36 = this.responder) === null || _this$responder36 === void 0 ? void 0 : _this$responder36.insertLineBreak();\n });\n },\n insertReplacementText: function insertReplacementText() {\n return this.insertString(this.event.dataTransfer.getData(\"text/plain\"), {\n updatePosition: false\n });\n },\n insertText: function insertText() {\n var _this$event$dataTrans;\n\n return this.insertString(this.event.data || ((_this$event$dataTrans = this.event.dataTransfer) === null || _this$event$dataTrans === void 0 ? void 0 : _this$event$dataTrans.getData(\"text/plain\")));\n },\n insertTranspose: function insertTranspose() {\n return this.insertString(this.event.data);\n },\n insertUnorderedList: function insertUnorderedList() {\n return this.toggleAttributeIfSupported(\"bullet\");\n }\n});\n\nvar staticRangeToRange = function staticRangeToRange(staticRange) {\n var range = document.createRange();\n range.setStart(staticRange.startContainer, staticRange.startOffset);\n range.setEnd(staticRange.endContainer, staticRange.endOffset);\n return range;\n}; // Event helpers\n\n\nvar dragEventHasFiles = function dragEventHasFiles(event) {\n var _event$dataTransfer;\n\n return Array.from(((_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.types) || []).includes(\"Files\");\n};\n\nvar pasteEventHasFilesOnly = function pasteEventHasFilesOnly(event) {\n var clipboard = event.clipboardData;\n\n if (clipboard) {\n return clipboard.types.includes(\"Files\") && clipboard.types.length === 1 && clipboard.files.length >= 1;\n }\n};\n\nvar pasteEventHasPlainTextOnly = function pasteEventHasPlainTextOnly(event) {\n var clipboard = event.clipboardData;\n\n if (clipboard) {\n return clipboard.types.includes(\"text/plain\") && clipboard.types.length === 1;\n }\n};\n\nvar keyboardCommandFromKeyEvent = function keyboardCommandFromKeyEvent(event) {\n var command = [];\n\n if (event.altKey) {\n command.push(\"alt\");\n }\n\n if (event.shiftKey) {\n command.push(\"shift\");\n }\n\n command.push(event.key);\n return command;\n};\n\nvar pointFromEvent = function pointFromEvent(event) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n};\n\nvar lang = config.lang,\n css = config.css,\n keyNames = config.keyNames;\n\nvar undoable = function undoable(fn) {\n return function () {\n var commands = fn.apply(this, arguments);\n commands[\"do\"]();\n\n if (!this.undos) {\n this.undos = [];\n }\n\n this.undos.push(commands.undo);\n };\n};\n\nvar AttachmentEditorController = /*#__PURE__*/function (_BasicObject18) {\n _inherits2(AttachmentEditorController, _BasicObject18);\n\n var _super39 = _createSuper2(AttachmentEditorController);\n\n function AttachmentEditorController(attachmentPiece, _element, container) {\n var _this66;\n\n _classCallCheck2(this, AttachmentEditorController);\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _this66 = _super39.apply(this, arguments);\n\n _defineProperty(_assertThisInitialized2(_this66), \"makeElementMutable\", undoable(function () {\n return {\n \"do\": function _do() {\n _this66.element.dataset.trixMutable = true;\n },\n undo: function undo() {\n return delete _this66.element.dataset.trixMutable;\n }\n };\n }));\n\n _defineProperty(_assertThisInitialized2(_this66), \"addToolbar\", undoable(function () {\n //
\n //
\n // \n // \n // \n //
\n //
\n var element = makeElement({\n tagName: \"div\",\n className: css.attachmentToolbar,\n data: {\n trixMutable: true\n },\n childNodes: makeElement({\n tagName: \"div\",\n className: \"trix-button-row\",\n childNodes: makeElement({\n tagName: \"span\",\n className: \"trix-button-group trix-button-group--actions\",\n childNodes: makeElement({\n tagName: \"button\",\n className: \"trix-button trix-button--remove\",\n textContent: lang.remove,\n attributes: {\n title: lang.remove\n },\n data: {\n trixAction: \"remove\"\n }\n })\n })\n })\n });\n\n if (_this66.attachment.isPreviewable()) {\n //
\n // \n // #{name}\n // #{size}\n // \n //
\n element.appendChild(makeElement({\n tagName: \"div\",\n className: css.attachmentMetadataContainer,\n childNodes: makeElement({\n tagName: \"span\",\n className: css.attachmentMetadata,\n childNodes: [makeElement({\n tagName: \"span\",\n className: css.attachmentName,\n textContent: _this66.attachment.getFilename(),\n attributes: {\n title: _this66.attachment.getFilename()\n }\n }), makeElement({\n tagName: \"span\",\n className: css.attachmentSize,\n textContent: _this66.attachment.getFormattedFilesize()\n })]\n })\n }));\n }\n\n handleEvent(\"click\", {\n onElement: element,\n withCallback: _this66.didClickToolbar\n });\n handleEvent(\"click\", {\n onElement: element,\n matchingSelector: \"[data-trix-action]\",\n withCallback: _this66.didClickActionButton\n });\n return {\n \"do\": function _do() {\n return _this66.element.appendChild(element);\n },\n undo: function undo() {\n return removeNode(element);\n }\n };\n }));\n\n _defineProperty(_assertThisInitialized2(_this66), \"installCaptionEditor\", undoable(function () {\n var textarea = makeElement({\n tagName: \"textarea\",\n className: css.attachmentCaptionEditor,\n attributes: {\n placeholder: lang.captionPlaceholder\n },\n data: {\n trixMutable: true\n }\n });\n textarea.value = _this66.attachmentPiece.getCaption();\n var textareaClone = textarea.cloneNode();\n textareaClone.classList.add(\"trix-autoresize-clone\");\n textareaClone.tabIndex = -1;\n\n var autoresize = function autoresize() {\n textareaClone.value = textarea.value;\n textarea.style.height = textareaClone.scrollHeight + \"px\";\n };\n\n handleEvent(\"input\", {\n onElement: textarea,\n withCallback: autoresize\n });\n handleEvent(\"input\", {\n onElement: textarea,\n withCallback: _this66.didInputCaption\n });\n handleEvent(\"keydown\", {\n onElement: textarea,\n withCallback: _this66.didKeyDownCaption\n });\n handleEvent(\"change\", {\n onElement: textarea,\n withCallback: _this66.didChangeCaption\n });\n handleEvent(\"blur\", {\n onElement: textarea,\n withCallback: _this66.didBlurCaption\n });\n\n var figcaption = _this66.element.querySelector(\"figcaption\");\n\n var editingFigcaption = figcaption.cloneNode();\n return {\n \"do\": function _do() {\n figcaption.style.display = \"none\";\n editingFigcaption.appendChild(textarea);\n editingFigcaption.appendChild(textareaClone);\n editingFigcaption.classList.add(\"\".concat(css.attachmentCaption, \"--editing\"));\n figcaption.parentElement.insertBefore(editingFigcaption, figcaption);\n autoresize();\n\n if (_this66.options.editCaption) {\n return defer(function () {\n return textarea.focus();\n });\n }\n },\n undo: function undo() {\n removeNode(editingFigcaption);\n figcaption.style.display = null;\n }\n };\n }));\n\n _this66.didClickToolbar = _this66.didClickToolbar.bind(_assertThisInitialized2(_this66));\n _this66.didClickActionButton = _this66.didClickActionButton.bind(_assertThisInitialized2(_this66));\n _this66.didKeyDownCaption = _this66.didKeyDownCaption.bind(_assertThisInitialized2(_this66));\n _this66.didInputCaption = _this66.didInputCaption.bind(_assertThisInitialized2(_this66));\n _this66.didChangeCaption = _this66.didChangeCaption.bind(_assertThisInitialized2(_this66));\n _this66.didBlurCaption = _this66.didBlurCaption.bind(_assertThisInitialized2(_this66));\n _this66.attachmentPiece = attachmentPiece;\n _this66.element = _element;\n _this66.container = container;\n _this66.options = options;\n _this66.attachment = _this66.attachmentPiece.attachment;\n\n if (tagName(_this66.element) === \"a\") {\n _this66.element = _this66.element.firstChild;\n }\n\n _this66.install();\n\n return _this66;\n }\n\n _createClass2(AttachmentEditorController, [{\n key: \"install\",\n value: function install() {\n this.makeElementMutable();\n this.addToolbar();\n\n if (this.attachment.isPreviewable()) {\n this.installCaptionEditor();\n }\n }\n }, {\n key: \"uninstall\",\n value: function uninstall() {\n var _this$delegate;\n\n var undo = this.undos.pop();\n this.savePendingCaption();\n\n while (undo) {\n undo();\n undo = this.undos.pop();\n }\n\n (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : _this$delegate.didUninstallAttachmentEditor(this);\n } // Private\n\n }, {\n key: \"savePendingCaption\",\n value: function savePendingCaption() {\n if (this.pendingCaption) {\n var caption = this.pendingCaption;\n this.pendingCaption = null;\n\n if (caption) {\n var _this$delegate2, _this$delegate2$attac;\n\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : (_this$delegate2$attac = _this$delegate2.attachmentEditorDidRequestUpdatingAttributesForAttachment) === null || _this$delegate2$attac === void 0 ? void 0 : _this$delegate2$attac.call(_this$delegate2, {\n caption: caption\n }, this.attachment);\n } else {\n var _this$delegate3, _this$delegate3$attac;\n\n (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : (_this$delegate3$attac = _this$delegate3.attachmentEditorDidRequestRemovingAttributeForAttachment) === null || _this$delegate3$attac === void 0 ? void 0 : _this$delegate3$attac.call(_this$delegate3, \"caption\", this.attachment);\n }\n }\n } // Installing and uninstalling\n // Event handlers\n\n }, {\n key: \"didClickToolbar\",\n value: function didClickToolbar(event) {\n event.preventDefault();\n return event.stopPropagation();\n }\n }, {\n key: \"didClickActionButton\",\n value: function didClickActionButton(event) {\n var _this$delegate4;\n\n var action = event.target.getAttribute(\"data-trix-action\");\n\n switch (action) {\n case \"remove\":\n return (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : _this$delegate4.attachmentEditorDidRequestRemovalOfAttachment(this.attachment);\n }\n }\n }, {\n key: \"didKeyDownCaption\",\n value: function didKeyDownCaption(event) {\n if (keyNames[event.keyCode] === \"return\") {\n var _this$delegate5, _this$delegate5$attac;\n\n event.preventDefault();\n this.savePendingCaption();\n return (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : (_this$delegate5$attac = _this$delegate5.attachmentEditorDidRequestDeselectingAttachment) === null || _this$delegate5$attac === void 0 ? void 0 : _this$delegate5$attac.call(_this$delegate5, this.attachment);\n }\n }\n }, {\n key: \"didInputCaption\",\n value: function didInputCaption(event) {\n this.pendingCaption = event.target.value.replace(/\\s/g, \" \").trim();\n }\n }, {\n key: \"didChangeCaption\",\n value: function didChangeCaption(event) {\n return this.savePendingCaption();\n }\n }, {\n key: \"didBlurCaption\",\n value: function didBlurCaption(event) {\n return this.savePendingCaption();\n }\n }]);\n\n return AttachmentEditorController;\n}(BasicObject);\n\nvar CompositionController = /*#__PURE__*/function (_BasicObject19) {\n _inherits2(CompositionController, _BasicObject19);\n\n var _super40 = _createSuper2(CompositionController);\n\n function CompositionController(element, composition) {\n var _this67;\n\n _classCallCheck2(this, CompositionController);\n\n _this67 = _super40.apply(this, arguments);\n _this67.didFocus = _this67.didFocus.bind(_assertThisInitialized2(_this67));\n _this67.didBlur = _this67.didBlur.bind(_assertThisInitialized2(_this67));\n _this67.didClickAttachment = _this67.didClickAttachment.bind(_assertThisInitialized2(_this67));\n _this67.element = element;\n _this67.composition = composition;\n _this67.documentView = new DocumentView(_this67.composition.document, {\n element: _this67.element\n });\n handleEvent(\"focus\", {\n onElement: _this67.element,\n withCallback: _this67.didFocus\n });\n handleEvent(\"blur\", {\n onElement: _this67.element,\n withCallback: _this67.didBlur\n });\n handleEvent(\"click\", {\n onElement: _this67.element,\n matchingSelector: \"a[contenteditable=false]\",\n preventDefault: true\n });\n handleEvent(\"mousedown\", {\n onElement: _this67.element,\n matchingSelector: attachmentSelector,\n withCallback: _this67.didClickAttachment\n });\n handleEvent(\"click\", {\n onElement: _this67.element,\n matchingSelector: \"a\".concat(attachmentSelector),\n preventDefault: true\n });\n return _this67;\n }\n\n _createClass2(CompositionController, [{\n key: \"didFocus\",\n value: function didFocus(event) {\n var _this68 = this;\n\n var _this$blurPromise;\n\n var perform = function perform() {\n if (!_this68.focused) {\n var _this$delegate, _this$delegate$compos;\n\n _this68.focused = true;\n return (_this$delegate = _this68.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$compos = _this$delegate.compositionControllerDidFocus) === null || _this$delegate$compos === void 0 ? void 0 : _this$delegate$compos.call(_this$delegate);\n }\n };\n\n return ((_this$blurPromise = this.blurPromise) === null || _this$blurPromise === void 0 ? void 0 : _this$blurPromise.then(perform)) || perform();\n }\n }, {\n key: \"didBlur\",\n value: function didBlur(event) {\n var _this69 = this;\n\n this.blurPromise = new Promise(function (resolve) {\n return defer(function () {\n if (!innerElementIsActive(_this69.element)) {\n var _this$delegate2, _this$delegate2$compo;\n\n _this69.focused = null;\n (_this$delegate2 = _this69.delegate) === null || _this$delegate2 === void 0 ? void 0 : (_this$delegate2$compo = _this$delegate2.compositionControllerDidBlur) === null || _this$delegate2$compo === void 0 ? void 0 : _this$delegate2$compo.call(_this$delegate2);\n }\n\n _this69.blurPromise = null;\n return resolve();\n });\n });\n }\n }, {\n key: \"didClickAttachment\",\n value: function didClickAttachment(event, target) {\n var _this$delegate3, _this$delegate3$compo;\n\n var attachment = this.findAttachmentForElement(target);\n var editCaption = !!findClosestElementFromNode(event.target, {\n matchingSelector: \"figcaption\"\n });\n return (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : (_this$delegate3$compo = _this$delegate3.compositionControllerDidSelectAttachment) === null || _this$delegate3$compo === void 0 ? void 0 : _this$delegate3$compo.call(_this$delegate3, attachment, {\n editCaption: editCaption\n });\n }\n }, {\n key: \"getSerializableElement\",\n value: function getSerializableElement() {\n if (this.isEditingAttachment()) {\n return this.documentView.shadowElement;\n } else {\n return this.element;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$delegate6, _this$delegate6$compo;\n\n if (this.revision !== this.composition.revision) {\n this.documentView.setDocument(this.composition.document);\n this.documentView.render();\n this.revision = this.composition.revision;\n }\n\n if (this.canSyncDocumentView() && !this.documentView.isSynced()) {\n var _this$delegate4, _this$delegate4$compo, _this$delegate5, _this$delegate5$compo;\n\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : (_this$delegate4$compo = _this$delegate4.compositionControllerWillSyncDocumentView) === null || _this$delegate4$compo === void 0 ? void 0 : _this$delegate4$compo.call(_this$delegate4);\n this.documentView.sync();\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : (_this$delegate5$compo = _this$delegate5.compositionControllerDidSyncDocumentView) === null || _this$delegate5$compo === void 0 ? void 0 : _this$delegate5$compo.call(_this$delegate5);\n }\n\n return (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 ? void 0 : (_this$delegate6$compo = _this$delegate6.compositionControllerDidRender) === null || _this$delegate6$compo === void 0 ? void 0 : _this$delegate6$compo.call(_this$delegate6);\n }\n }, {\n key: \"rerenderViewForObject\",\n value: function rerenderViewForObject(object) {\n this.invalidateViewForObject(object);\n return this.render();\n }\n }, {\n key: \"invalidateViewForObject\",\n value: function invalidateViewForObject(object) {\n return this.documentView.invalidateViewForObject(object);\n }\n }, {\n key: \"isViewCachingEnabled\",\n value: function isViewCachingEnabled() {\n return this.documentView.isViewCachingEnabled();\n }\n }, {\n key: \"enableViewCaching\",\n value: function enableViewCaching() {\n return this.documentView.enableViewCaching();\n }\n }, {\n key: \"disableViewCaching\",\n value: function disableViewCaching() {\n return this.documentView.disableViewCaching();\n }\n }, {\n key: \"refreshViewCache\",\n value: function refreshViewCache() {\n return this.documentView.garbageCollectCachedViews();\n } // Attachment editor management\n\n }, {\n key: \"isEditingAttachment\",\n value: function isEditingAttachment() {\n return !!this.attachmentEditor;\n }\n }, {\n key: \"installAttachmentEditorForAttachment\",\n value: function installAttachmentEditorForAttachment(attachment, options) {\n var _this$attachmentEdito;\n\n if (((_this$attachmentEdito = this.attachmentEditor) === null || _this$attachmentEdito === void 0 ? void 0 : _this$attachmentEdito.attachment) === attachment) return;\n var element = this.documentView.findElementForObject(attachment);\n if (!element) return;\n this.uninstallAttachmentEditor();\n var attachmentPiece = this.composition.document.getAttachmentPieceForAttachment(attachment);\n this.attachmentEditor = new AttachmentEditorController(attachmentPiece, element, this.element, options);\n this.attachmentEditor.delegate = this;\n }\n }, {\n key: \"uninstallAttachmentEditor\",\n value: function uninstallAttachmentEditor() {\n var _this$attachmentEdito2;\n\n return (_this$attachmentEdito2 = this.attachmentEditor) === null || _this$attachmentEdito2 === void 0 ? void 0 : _this$attachmentEdito2.uninstall();\n } // Attachment controller delegate\n\n }, {\n key: \"didUninstallAttachmentEditor\",\n value: function didUninstallAttachmentEditor() {\n this.attachmentEditor = null;\n return this.render();\n }\n }, {\n key: \"attachmentEditorDidRequestUpdatingAttributesForAttachment\",\n value: function attachmentEditorDidRequestUpdatingAttributesForAttachment(attributes, attachment) {\n var _this$delegate7, _this$delegate7$compo;\n\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 ? void 0 : (_this$delegate7$compo = _this$delegate7.compositionControllerWillUpdateAttachment) === null || _this$delegate7$compo === void 0 ? void 0 : _this$delegate7$compo.call(_this$delegate7, attachment);\n return this.composition.updateAttributesForAttachment(attributes, attachment);\n }\n }, {\n key: \"attachmentEditorDidRequestRemovingAttributeForAttachment\",\n value: function attachmentEditorDidRequestRemovingAttributeForAttachment(attribute, attachment) {\n var _this$delegate8, _this$delegate8$compo;\n\n (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 ? void 0 : (_this$delegate8$compo = _this$delegate8.compositionControllerWillUpdateAttachment) === null || _this$delegate8$compo === void 0 ? void 0 : _this$delegate8$compo.call(_this$delegate8, attachment);\n return this.composition.removeAttributeForAttachment(attribute, attachment);\n }\n }, {\n key: \"attachmentEditorDidRequestRemovalOfAttachment\",\n value: function attachmentEditorDidRequestRemovalOfAttachment(attachment) {\n var _this$delegate9, _this$delegate9$compo;\n\n return (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 ? void 0 : (_this$delegate9$compo = _this$delegate9.compositionControllerDidRequestRemovalOfAttachment) === null || _this$delegate9$compo === void 0 ? void 0 : _this$delegate9$compo.call(_this$delegate9, attachment);\n }\n }, {\n key: \"attachmentEditorDidRequestDeselectingAttachment\",\n value: function attachmentEditorDidRequestDeselectingAttachment(attachment) {\n var _this$delegate10, _this$delegate10$comp;\n\n return (_this$delegate10 = this.delegate) === null || _this$delegate10 === void 0 ? void 0 : (_this$delegate10$comp = _this$delegate10.compositionControllerDidRequestDeselectingAttachment) === null || _this$delegate10$comp === void 0 ? void 0 : _this$delegate10$comp.call(_this$delegate10, attachment);\n } // Private\n\n }, {\n key: \"canSyncDocumentView\",\n value: function canSyncDocumentView() {\n return !this.isEditingAttachment();\n }\n }, {\n key: \"findAttachmentForElement\",\n value: function findAttachmentForElement(element) {\n return this.composition.document.getAttachmentById(parseInt(element.dataset.trixId, 10));\n }\n }]);\n\n return CompositionController;\n}(BasicObject);\n\nvar attributeButtonSelector = \"[data-trix-attribute]\";\nvar actionButtonSelector = \"[data-trix-action]\";\nvar toolbarButtonSelector = \"\".concat(attributeButtonSelector, \", \").concat(actionButtonSelector);\nvar dialogSelector = \"[data-trix-dialog]\";\nvar activeDialogSelector = \"\".concat(dialogSelector, \"[data-trix-active]\");\nvar dialogButtonSelector = \"\".concat(dialogSelector, \" [data-trix-method]\");\nvar dialogInputSelector = \"\".concat(dialogSelector, \" [data-trix-input]\");\n\nvar getInputForDialog = function getInputForDialog(element, attributeName) {\n if (!attributeName) {\n attributeName = getAttributeName(element);\n }\n\n return element.querySelector(\"[data-trix-input][name='\".concat(attributeName, \"']\"));\n};\n\nvar getActionName = function getActionName(element) {\n return element.getAttribute(\"data-trix-action\");\n};\n\nvar getAttributeName = function getAttributeName(element) {\n return element.getAttribute(\"data-trix-attribute\") || element.getAttribute(\"data-trix-dialog-attribute\");\n};\n\nvar getDialogName = function getDialogName(element) {\n return element.getAttribute(\"data-trix-dialog\");\n};\n\nvar ToolbarController = /*#__PURE__*/function (_BasicObject20) {\n _inherits2(ToolbarController, _BasicObject20);\n\n var _super41 = _createSuper2(ToolbarController);\n\n function ToolbarController(element) {\n var _this70;\n\n _classCallCheck2(this, ToolbarController);\n\n _this70 = _super41.call(this, element);\n _this70.didClickActionButton = _this70.didClickActionButton.bind(_assertThisInitialized2(_this70));\n _this70.didClickAttributeButton = _this70.didClickAttributeButton.bind(_assertThisInitialized2(_this70));\n _this70.didClickDialogButton = _this70.didClickDialogButton.bind(_assertThisInitialized2(_this70));\n _this70.didKeyDownDialogInput = _this70.didKeyDownDialogInput.bind(_assertThisInitialized2(_this70));\n _this70.element = element;\n _this70.attributes = {};\n _this70.actions = {};\n\n _this70.resetDialogInputs();\n\n handleEvent(\"mousedown\", {\n onElement: _this70.element,\n matchingSelector: actionButtonSelector,\n withCallback: _this70.didClickActionButton\n });\n handleEvent(\"mousedown\", {\n onElement: _this70.element,\n matchingSelector: attributeButtonSelector,\n withCallback: _this70.didClickAttributeButton\n });\n handleEvent(\"click\", {\n onElement: _this70.element,\n matchingSelector: toolbarButtonSelector,\n preventDefault: true\n });\n handleEvent(\"click\", {\n onElement: _this70.element,\n matchingSelector: dialogButtonSelector,\n withCallback: _this70.didClickDialogButton\n });\n handleEvent(\"keydown\", {\n onElement: _this70.element,\n matchingSelector: dialogInputSelector,\n withCallback: _this70.didKeyDownDialogInput\n });\n return _this70;\n } // Event handlers\n\n\n _createClass2(ToolbarController, [{\n key: \"didClickActionButton\",\n value: function didClickActionButton(event, element) {\n var _this$delegate;\n\n (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : _this$delegate.toolbarDidClickButton();\n event.preventDefault();\n var actionName = getActionName(element);\n\n if (this.getDialog(actionName)) {\n return this.toggleDialog(actionName);\n } else {\n var _this$delegate2;\n\n return (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : _this$delegate2.toolbarDidInvokeAction(actionName);\n }\n }\n }, {\n key: \"didClickAttributeButton\",\n value: function didClickAttributeButton(event, element) {\n var _this$delegate3;\n\n (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : _this$delegate3.toolbarDidClickButton();\n event.preventDefault();\n var attributeName = getAttributeName(element);\n\n if (this.getDialog(attributeName)) {\n this.toggleDialog(attributeName);\n } else {\n var _this$delegate4;\n\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : _this$delegate4.toolbarDidToggleAttribute(attributeName);\n }\n\n return this.refreshAttributeButtons();\n }\n }, {\n key: \"didClickDialogButton\",\n value: function didClickDialogButton(event, element) {\n var dialogElement = findClosestElementFromNode(element, {\n matchingSelector: dialogSelector\n });\n var method = element.getAttribute(\"data-trix-method\");\n return this[method].call(this, dialogElement);\n }\n }, {\n key: \"didKeyDownDialogInput\",\n value: function didKeyDownDialogInput(event, element) {\n if (event.keyCode === 13) {\n // Enter key\n event.preventDefault();\n var attribute = element.getAttribute(\"name\");\n var dialog = this.getDialog(attribute);\n this.setAttribute(dialog);\n }\n\n if (event.keyCode === 27) {\n // Escape key\n event.preventDefault();\n return this.hideDialog();\n }\n } // Action buttons\n\n }, {\n key: \"updateActions\",\n value: function updateActions(actions) {\n this.actions = actions;\n return this.refreshActionButtons();\n }\n }, {\n key: \"refreshActionButtons\",\n value: function refreshActionButtons() {\n var _this71 = this;\n\n return this.eachActionButton(function (element, actionName) {\n element.disabled = _this71.actions[actionName] === false;\n });\n }\n }, {\n key: \"eachActionButton\",\n value: function eachActionButton(callback) {\n return Array.from(this.element.querySelectorAll(actionButtonSelector)).map(function (element) {\n return callback(element, getActionName(element));\n });\n } // Attribute buttons\n\n }, {\n key: \"updateAttributes\",\n value: function updateAttributes(attributes) {\n this.attributes = attributes;\n return this.refreshAttributeButtons();\n }\n }, {\n key: \"refreshAttributeButtons\",\n value: function refreshAttributeButtons() {\n var _this72 = this;\n\n return this.eachAttributeButton(function (element, attributeName) {\n element.disabled = _this72.attributes[attributeName] === false;\n\n if (_this72.attributes[attributeName] || _this72.dialogIsVisible(attributeName)) {\n element.setAttribute(\"data-trix-active\", \"\");\n return element.classList.add(\"trix-active\");\n } else {\n element.removeAttribute(\"data-trix-active\");\n return element.classList.remove(\"trix-active\");\n }\n });\n }\n }, {\n key: \"eachAttributeButton\",\n value: function eachAttributeButton(callback) {\n return Array.from(this.element.querySelectorAll(attributeButtonSelector)).map(function (element) {\n return callback(element, getAttributeName(element));\n });\n }\n }, {\n key: \"applyKeyboardCommand\",\n value: function applyKeyboardCommand(keys) {\n var keyString = JSON.stringify(keys.sort());\n\n for (var _i6 = 0, _Array$from23 = Array.from(this.element.querySelectorAll(\"[data-trix-key]\")); _i6 < _Array$from23.length; _i6++) {\n var button = _Array$from23[_i6];\n var buttonKeys = button.getAttribute(\"data-trix-key\").split(\"+\");\n var buttonKeyString = JSON.stringify(buttonKeys.sort());\n\n if (buttonKeyString === keyString) {\n triggerEvent(\"mousedown\", {\n onElement: button\n });\n return true;\n }\n }\n\n return false;\n } // Dialogs\n\n }, {\n key: \"dialogIsVisible\",\n value: function dialogIsVisible(dialogName) {\n var element = this.getDialog(dialogName);\n\n if (element) {\n return element.hasAttribute(\"data-trix-active\");\n }\n }\n }, {\n key: \"toggleDialog\",\n value: function toggleDialog(dialogName) {\n if (this.dialogIsVisible(dialogName)) {\n return this.hideDialog();\n } else {\n return this.showDialog(dialogName);\n }\n }\n }, {\n key: \"showDialog\",\n value: function showDialog(dialogName) {\n var _this$delegate5, _this$delegate6;\n\n this.hideDialog();\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : _this$delegate5.toolbarWillShowDialog();\n var element = this.getDialog(dialogName);\n element.setAttribute(\"data-trix-active\", \"\");\n element.classList.add(\"trix-active\");\n Array.from(element.querySelectorAll(\"input[disabled]\")).forEach(function (disabledInput) {\n disabledInput.removeAttribute(\"disabled\");\n });\n var attributeName = getAttributeName(element);\n\n if (attributeName) {\n var _input = getInputForDialog(element, dialogName);\n\n if (_input) {\n _input.value = this.attributes[attributeName] || \"\";\n\n _input.select();\n }\n }\n\n return (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 ? void 0 : _this$delegate6.toolbarDidShowDialog(dialogName);\n }\n }, {\n key: \"setAttribute\",\n value: function setAttribute(dialogElement) {\n var attributeName = getAttributeName(dialogElement);\n var input = getInputForDialog(dialogElement, attributeName);\n\n if (input.willValidate && !input.checkValidity()) {\n input.setAttribute(\"data-trix-validate\", \"\");\n input.classList.add(\"trix-validate\");\n return input.focus();\n } else {\n var _this$delegate7;\n\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 ? void 0 : _this$delegate7.toolbarDidUpdateAttribute(attributeName, input.value);\n return this.hideDialog();\n }\n }\n }, {\n key: \"removeAttribute\",\n value: function removeAttribute(dialogElement) {\n var _this$delegate8;\n\n var attributeName = getAttributeName(dialogElement);\n (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 ? void 0 : _this$delegate8.toolbarDidRemoveAttribute(attributeName);\n return this.hideDialog();\n }\n }, {\n key: \"hideDialog\",\n value: function hideDialog() {\n var element = this.element.querySelector(activeDialogSelector);\n\n if (element) {\n var _this$delegate9;\n\n element.removeAttribute(\"data-trix-active\");\n element.classList.remove(\"trix-active\");\n this.resetDialogInputs();\n return (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 ? void 0 : _this$delegate9.toolbarDidHideDialog(getDialogName(element));\n }\n }\n }, {\n key: \"resetDialogInputs\",\n value: function resetDialogInputs() {\n Array.from(this.element.querySelectorAll(dialogInputSelector)).forEach(function (input) {\n input.setAttribute(\"disabled\", \"disabled\");\n input.removeAttribute(\"data-trix-validate\");\n input.classList.remove(\"trix-validate\");\n });\n }\n }, {\n key: \"getDialog\",\n value: function getDialog(dialogName) {\n return this.element.querySelector(\"[data-trix-dialog=\".concat(dialogName, \"]\"));\n }\n }]);\n\n return ToolbarController;\n}(BasicObject);\n\nvar snapshotsAreEqual = function snapshotsAreEqual(a, b) {\n return rangesAreEqual(a.selectedRange, b.selectedRange) && a.document.isEqualTo(b.document);\n};\n\nvar EditorController = /*#__PURE__*/function (_Controller) {\n _inherits2(EditorController, _Controller);\n\n var _super42 = _createSuper2(EditorController);\n\n function EditorController(_ref) {\n var _this73;\n\n _classCallCheck2(this, EditorController);\n\n var editorElement = _ref.editorElement,\n document = _ref.document,\n html = _ref.html;\n _this73 = _super42.apply(this, arguments);\n _this73.editorElement = editorElement;\n _this73.selectionManager = new SelectionManager(_this73.editorElement);\n _this73.selectionManager.delegate = _assertThisInitialized2(_this73);\n _this73.composition = new Composition();\n _this73.composition.delegate = _assertThisInitialized2(_this73);\n _this73.attachmentManager = new AttachmentManager(_this73.composition.getAttachments());\n _this73.attachmentManager.delegate = _assertThisInitialized2(_this73);\n _this73.inputController = config.input.getLevel() === 2 ? new Level2InputController(_this73.editorElement) : new Level0InputController(_this73.editorElement);\n _this73.inputController.delegate = _assertThisInitialized2(_this73);\n _this73.inputController.responder = _this73.composition;\n _this73.compositionController = new CompositionController(_this73.editorElement, _this73.composition);\n _this73.compositionController.delegate = _assertThisInitialized2(_this73);\n _this73.toolbarController = new ToolbarController(_this73.editorElement.toolbarElement);\n _this73.toolbarController.delegate = _assertThisInitialized2(_this73);\n _this73.editor = new Editor(_this73.composition, _this73.selectionManager, _this73.editorElement);\n\n if (document) {\n _this73.editor.loadDocument(document);\n } else {\n _this73.editor.loadHTML(html);\n }\n\n return _this73;\n }\n\n _createClass2(EditorController, [{\n key: \"registerSelectionManager\",\n value: function registerSelectionManager() {\n return selectionChangeObserver.registerSelectionManager(this.selectionManager);\n }\n }, {\n key: \"unregisterSelectionManager\",\n value: function unregisterSelectionManager() {\n return selectionChangeObserver.unregisterSelectionManager(this.selectionManager);\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.compositionController.render();\n }\n }, {\n key: \"reparse\",\n value: function reparse() {\n return this.composition.replaceHTML(this.editorElement.innerHTML);\n } // Composition delegate\n\n }, {\n key: \"compositionDidChangeDocument\",\n value: function compositionDidChangeDocument(document) {\n this.notifyEditorElement(\"document-change\");\n\n if (!this.handlingInput) {\n return this.render();\n }\n }\n }, {\n key: \"compositionDidChangeCurrentAttributes\",\n value: function compositionDidChangeCurrentAttributes(currentAttributes) {\n this.currentAttributes = currentAttributes;\n this.toolbarController.updateAttributes(this.currentAttributes);\n this.updateCurrentActions();\n return this.notifyEditorElement(\"attributes-change\", {\n attributes: this.currentAttributes\n });\n }\n }, {\n key: \"compositionDidPerformInsertionAtRange\",\n value: function compositionDidPerformInsertionAtRange(range) {\n if (this.pasting) {\n this.pastedRange = range;\n }\n }\n }, {\n key: \"compositionShouldAcceptFile\",\n value: function compositionShouldAcceptFile(file) {\n return this.notifyEditorElement(\"file-accept\", {\n file: file\n });\n }\n }, {\n key: \"compositionDidAddAttachment\",\n value: function compositionDidAddAttachment(attachment) {\n var managedAttachment = this.attachmentManager.manageAttachment(attachment);\n return this.notifyEditorElement(\"attachment-add\", {\n attachment: managedAttachment\n });\n }\n }, {\n key: \"compositionDidEditAttachment\",\n value: function compositionDidEditAttachment(attachment) {\n this.compositionController.rerenderViewForObject(attachment);\n var managedAttachment = this.attachmentManager.manageAttachment(attachment);\n this.notifyEditorElement(\"attachment-edit\", {\n attachment: managedAttachment\n });\n return this.notifyEditorElement(\"change\");\n }\n }, {\n key: \"compositionDidChangeAttachmentPreviewURL\",\n value: function compositionDidChangeAttachmentPreviewURL(attachment) {\n this.compositionController.invalidateViewForObject(attachment);\n return this.notifyEditorElement(\"change\");\n }\n }, {\n key: \"compositionDidRemoveAttachment\",\n value: function compositionDidRemoveAttachment(attachment) {\n var managedAttachment = this.attachmentManager.unmanageAttachment(attachment);\n return this.notifyEditorElement(\"attachment-remove\", {\n attachment: managedAttachment\n });\n }\n }, {\n key: \"compositionDidStartEditingAttachment\",\n value: function compositionDidStartEditingAttachment(attachment, options) {\n this.attachmentLocationRange = this.composition.document.getLocationRangeOfAttachment(attachment);\n this.compositionController.installAttachmentEditorForAttachment(attachment, options);\n return this.selectionManager.setLocationRange(this.attachmentLocationRange);\n }\n }, {\n key: \"compositionDidStopEditingAttachment\",\n value: function compositionDidStopEditingAttachment(attachment) {\n this.compositionController.uninstallAttachmentEditor();\n this.attachmentLocationRange = null;\n }\n }, {\n key: \"compositionDidRequestChangingSelectionToLocationRange\",\n value: function compositionDidRequestChangingSelectionToLocationRange(locationRange) {\n if (this.loadingSnapshot && !this.isFocused()) return;\n this.requestedLocationRange = locationRange;\n this.compositionRevisionWhenLocationRangeRequested = this.composition.revision;\n\n if (!this.handlingInput) {\n return this.render();\n }\n }\n }, {\n key: \"compositionWillLoadSnapshot\",\n value: function compositionWillLoadSnapshot() {\n this.loadingSnapshot = true;\n }\n }, {\n key: \"compositionDidLoadSnapshot\",\n value: function compositionDidLoadSnapshot() {\n this.compositionController.refreshViewCache();\n this.render();\n this.loadingSnapshot = false;\n }\n }, {\n key: \"getSelectionManager\",\n value: function getSelectionManager() {\n return this.selectionManager;\n } // Attachment manager delegate\n\n }, {\n key: \"attachmentManagerDidRequestRemovalOfAttachment\",\n value: function attachmentManagerDidRequestRemovalOfAttachment(attachment) {\n return this.removeAttachment(attachment);\n } // Document controller delegate\n\n }, {\n key: \"compositionControllerWillSyncDocumentView\",\n value: function compositionControllerWillSyncDocumentView() {\n this.inputController.editorWillSyncDocumentView();\n this.selectionManager.lock();\n return this.selectionManager.clearSelection();\n }\n }, {\n key: \"compositionControllerDidSyncDocumentView\",\n value: function compositionControllerDidSyncDocumentView() {\n this.inputController.editorDidSyncDocumentView();\n this.selectionManager.unlock();\n this.updateCurrentActions();\n return this.notifyEditorElement(\"sync\");\n }\n }, {\n key: \"compositionControllerDidRender\",\n value: function compositionControllerDidRender() {\n if (this.requestedLocationRange) {\n if (this.compositionRevisionWhenLocationRangeRequested === this.composition.revision) {\n this.selectionManager.setLocationRange(this.requestedLocationRange);\n }\n\n this.requestedLocationRange = null;\n this.compositionRevisionWhenLocationRangeRequested = null;\n }\n\n if (this.renderedCompositionRevision !== this.composition.revision) {\n this.runEditorFilters();\n this.composition.updateCurrentAttributes();\n this.notifyEditorElement(\"render\");\n }\n\n this.renderedCompositionRevision = this.composition.revision;\n }\n }, {\n key: \"compositionControllerDidFocus\",\n value: function compositionControllerDidFocus() {\n if (this.isFocusedInvisibly()) {\n this.setLocationRange({\n index: 0,\n offset: 0\n });\n }\n\n this.toolbarController.hideDialog();\n return this.notifyEditorElement(\"focus\");\n }\n }, {\n key: \"compositionControllerDidBlur\",\n value: function compositionControllerDidBlur() {\n return this.notifyEditorElement(\"blur\");\n }\n }, {\n key: \"compositionControllerDidSelectAttachment\",\n value: function compositionControllerDidSelectAttachment(attachment, options) {\n this.toolbarController.hideDialog();\n return this.composition.editAttachment(attachment, options);\n }\n }, {\n key: \"compositionControllerDidRequestDeselectingAttachment\",\n value: function compositionControllerDidRequestDeselectingAttachment(attachment) {\n var locationRange = this.attachmentLocationRange || this.composition.document.getLocationRangeOfAttachment(attachment);\n return this.selectionManager.setLocationRange(locationRange[1]);\n }\n }, {\n key: \"compositionControllerWillUpdateAttachment\",\n value: function compositionControllerWillUpdateAttachment(attachment) {\n return this.editor.recordUndoEntry(\"Edit Attachment\", {\n context: attachment.id,\n consolidatable: true\n });\n }\n }, {\n key: \"compositionControllerDidRequestRemovalOfAttachment\",\n value: function compositionControllerDidRequestRemovalOfAttachment(attachment) {\n return this.removeAttachment(attachment);\n } // Input controller delegate\n\n }, {\n key: \"inputControllerWillHandleInput\",\n value: function inputControllerWillHandleInput() {\n this.handlingInput = true;\n this.requestedRender = false;\n }\n }, {\n key: \"inputControllerDidRequestRender\",\n value: function inputControllerDidRequestRender() {\n this.requestedRender = true;\n }\n }, {\n key: \"inputControllerDidHandleInput\",\n value: function inputControllerDidHandleInput() {\n this.handlingInput = false;\n\n if (this.requestedRender) {\n this.requestedRender = false;\n return this.render();\n }\n }\n }, {\n key: \"inputControllerDidAllowUnhandledInput\",\n value: function inputControllerDidAllowUnhandledInput() {\n return this.notifyEditorElement(\"change\");\n }\n }, {\n key: \"inputControllerDidRequestReparse\",\n value: function inputControllerDidRequestReparse() {\n return this.reparse();\n }\n }, {\n key: \"inputControllerWillPerformTyping\",\n value: function inputControllerWillPerformTyping() {\n return this.recordTypingUndoEntry();\n }\n }, {\n key: \"inputControllerWillPerformFormatting\",\n value: function inputControllerWillPerformFormatting(attributeName) {\n return this.recordFormattingUndoEntry(attributeName);\n }\n }, {\n key: \"inputControllerWillCutText\",\n value: function inputControllerWillCutText() {\n return this.editor.recordUndoEntry(\"Cut\");\n }\n }, {\n key: \"inputControllerWillPaste\",\n value: function inputControllerWillPaste(paste) {\n this.editor.recordUndoEntry(\"Paste\");\n this.pasting = true;\n return this.notifyEditorElement(\"before-paste\", {\n paste: paste\n });\n }\n }, {\n key: \"inputControllerDidPaste\",\n value: function inputControllerDidPaste(paste) {\n paste.range = this.pastedRange;\n this.pastedRange = null;\n this.pasting = null;\n return this.notifyEditorElement(\"paste\", {\n paste: paste\n });\n }\n }, {\n key: \"inputControllerWillMoveText\",\n value: function inputControllerWillMoveText() {\n return this.editor.recordUndoEntry(\"Move\");\n }\n }, {\n key: \"inputControllerWillAttachFiles\",\n value: function inputControllerWillAttachFiles() {\n return this.editor.recordUndoEntry(\"Drop Files\");\n }\n }, {\n key: \"inputControllerWillPerformUndo\",\n value: function inputControllerWillPerformUndo() {\n return this.editor.undo();\n }\n }, {\n key: \"inputControllerWillPerformRedo\",\n value: function inputControllerWillPerformRedo() {\n return this.editor.redo();\n }\n }, {\n key: \"inputControllerDidReceiveKeyboardCommand\",\n value: function inputControllerDidReceiveKeyboardCommand(keys) {\n return this.toolbarController.applyKeyboardCommand(keys);\n }\n }, {\n key: \"inputControllerDidStartDrag\",\n value: function inputControllerDidStartDrag() {\n this.locationRangeBeforeDrag = this.selectionManager.getLocationRange();\n }\n }, {\n key: \"inputControllerDidReceiveDragOverPoint\",\n value: function inputControllerDidReceiveDragOverPoint(point) {\n return this.selectionManager.setLocationRangeFromPointRange(point);\n }\n }, {\n key: \"inputControllerDidCancelDrag\",\n value: function inputControllerDidCancelDrag() {\n this.selectionManager.setLocationRange(this.locationRangeBeforeDrag);\n this.locationRangeBeforeDrag = null;\n } // Selection manager delegate\n\n }, {\n key: \"locationRangeDidChange\",\n value: function locationRangeDidChange(locationRange) {\n this.composition.updateCurrentAttributes();\n this.updateCurrentActions();\n\n if (this.attachmentLocationRange && !rangesAreEqual(this.attachmentLocationRange, locationRange)) {\n this.composition.stopEditingAttachment();\n }\n\n return this.notifyEditorElement(\"selection-change\");\n } // Toolbar controller delegate\n\n }, {\n key: \"toolbarDidClickButton\",\n value: function toolbarDidClickButton() {\n if (!this.getLocationRange()) {\n return this.setLocationRange({\n index: 0,\n offset: 0\n });\n }\n }\n }, {\n key: \"toolbarDidInvokeAction\",\n value: function toolbarDidInvokeAction(actionName) {\n return this.invokeAction(actionName);\n }\n }, {\n key: \"toolbarDidToggleAttribute\",\n value: function toolbarDidToggleAttribute(attributeName) {\n this.recordFormattingUndoEntry(attributeName);\n this.composition.toggleCurrentAttribute(attributeName);\n this.render();\n\n if (!this.selectionFrozen) {\n return this.editorElement.focus();\n }\n }\n }, {\n key: \"toolbarDidUpdateAttribute\",\n value: function toolbarDidUpdateAttribute(attributeName, value) {\n this.recordFormattingUndoEntry(attributeName);\n this.composition.setCurrentAttribute(attributeName, value);\n this.render();\n\n if (!this.selectionFrozen) {\n return this.editorElement.focus();\n }\n }\n }, {\n key: \"toolbarDidRemoveAttribute\",\n value: function toolbarDidRemoveAttribute(attributeName) {\n this.recordFormattingUndoEntry(attributeName);\n this.composition.removeCurrentAttribute(attributeName);\n this.render();\n\n if (!this.selectionFrozen) {\n return this.editorElement.focus();\n }\n }\n }, {\n key: \"toolbarWillShowDialog\",\n value: function toolbarWillShowDialog(dialogElement) {\n this.composition.expandSelectionForEditing();\n return this.freezeSelection();\n }\n }, {\n key: \"toolbarDidShowDialog\",\n value: function toolbarDidShowDialog(dialogName) {\n return this.notifyEditorElement(\"toolbar-dialog-show\", {\n dialogName: dialogName\n });\n }\n }, {\n key: \"toolbarDidHideDialog\",\n value: function toolbarDidHideDialog(dialogName) {\n this.thawSelection();\n this.editorElement.focus();\n return this.notifyEditorElement(\"toolbar-dialog-hide\", {\n dialogName: dialogName\n });\n } // Selection\n\n }, {\n key: \"freezeSelection\",\n value: function freezeSelection() {\n if (!this.selectionFrozen) {\n this.selectionManager.lock();\n this.composition.freezeSelection();\n this.selectionFrozen = true;\n return this.render();\n }\n }\n }, {\n key: \"thawSelection\",\n value: function thawSelection() {\n if (this.selectionFrozen) {\n this.composition.thawSelection();\n this.selectionManager.unlock();\n this.selectionFrozen = false;\n return this.render();\n }\n }\n }, {\n key: \"canInvokeAction\",\n value: function canInvokeAction(actionName) {\n if (this.actionIsExternal(actionName)) {\n return true;\n } else {\n var _this$actions$actionN, _this$actions$actionN2;\n\n return !!((_this$actions$actionN = this.actions[actionName]) !== null && _this$actions$actionN !== void 0 && (_this$actions$actionN2 = _this$actions$actionN.test) !== null && _this$actions$actionN2 !== void 0 && _this$actions$actionN2.call(this));\n }\n }\n }, {\n key: \"invokeAction\",\n value: function invokeAction(actionName) {\n if (this.actionIsExternal(actionName)) {\n return this.notifyEditorElement(\"action-invoke\", {\n actionName: actionName\n });\n } else {\n var _this$actions$actionN3, _this$actions$actionN4;\n\n return (_this$actions$actionN3 = this.actions[actionName]) === null || _this$actions$actionN3 === void 0 ? void 0 : (_this$actions$actionN4 = _this$actions$actionN3.perform) === null || _this$actions$actionN4 === void 0 ? void 0 : _this$actions$actionN4.call(this);\n }\n }\n }, {\n key: \"actionIsExternal\",\n value: function actionIsExternal(actionName) {\n return /^x-./.test(actionName);\n }\n }, {\n key: \"getCurrentActions\",\n value: function getCurrentActions() {\n var result = {};\n\n for (var actionName in this.actions) {\n result[actionName] = this.canInvokeAction(actionName);\n }\n\n return result;\n }\n }, {\n key: \"updateCurrentActions\",\n value: function updateCurrentActions() {\n var currentActions = this.getCurrentActions();\n\n if (!objectsAreEqual(currentActions, this.currentActions)) {\n this.currentActions = currentActions;\n this.toolbarController.updateActions(this.currentActions);\n return this.notifyEditorElement(\"actions-change\", {\n actions: this.currentActions\n });\n }\n } // Editor filters\n\n }, {\n key: \"runEditorFilters\",\n value: function runEditorFilters() {\n var _this74 = this;\n\n var snapshot = this.composition.getSnapshot();\n Array.from(this.editor.filters).forEach(function (filter) {\n var _snapshot = snapshot,\n document = _snapshot.document,\n selectedRange = _snapshot.selectedRange;\n snapshot = filter.call(_this74.editor, snapshot) || {};\n\n if (!snapshot.document) {\n snapshot.document = document;\n }\n\n if (!snapshot.selectedRange) {\n snapshot.selectedRange = selectedRange;\n }\n });\n\n if (!snapshotsAreEqual(snapshot, this.composition.getSnapshot())) {\n return this.composition.loadSnapshot(snapshot);\n }\n } // Private\n\n }, {\n key: \"updateInputElement\",\n value: function updateInputElement() {\n var element = this.compositionController.getSerializableElement();\n var value = serializeToContentType(element, \"text/html\");\n return this.editorElement.setInputElementValue(value);\n }\n }, {\n key: \"notifyEditorElement\",\n value: function notifyEditorElement(message, data) {\n switch (message) {\n case \"document-change\":\n this.documentChangedSinceLastRender = true;\n break;\n\n case \"render\":\n if (this.documentChangedSinceLastRender) {\n this.documentChangedSinceLastRender = false;\n this.notifyEditorElement(\"change\");\n }\n\n break;\n\n case \"change\":\n case \"attachment-add\":\n case \"attachment-edit\":\n case \"attachment-remove\":\n this.updateInputElement();\n break;\n }\n\n return this.editorElement.notify(message, data);\n }\n }, {\n key: \"removeAttachment\",\n value: function removeAttachment(attachment) {\n this.editor.recordUndoEntry(\"Delete Attachment\");\n this.composition.removeAttachment(attachment);\n return this.render();\n }\n }, {\n key: \"recordFormattingUndoEntry\",\n value: function recordFormattingUndoEntry(attributeName) {\n var blockConfig = getBlockConfig(attributeName);\n var locationRange = this.selectionManager.getLocationRange();\n\n if (blockConfig || !rangeIsCollapsed(locationRange)) {\n return this.editor.recordUndoEntry(\"Formatting\", {\n context: this.getUndoContext(),\n consolidatable: true\n });\n }\n }\n }, {\n key: \"recordTypingUndoEntry\",\n value: function recordTypingUndoEntry() {\n return this.editor.recordUndoEntry(\"Typing\", {\n context: this.getUndoContext(this.currentAttributes),\n consolidatable: true\n });\n }\n }, {\n key: \"getUndoContext\",\n value: function getUndoContext() {\n for (var _len = arguments.length, context = new Array(_len), _key = 0; _key < _len; _key++) {\n context[_key] = arguments[_key];\n }\n\n return [this.getLocationContext(), this.getTimeContext()].concat(_toConsumableArray2(Array.from(context)));\n }\n }, {\n key: \"getLocationContext\",\n value: function getLocationContext() {\n var locationRange = this.selectionManager.getLocationRange();\n\n if (rangeIsCollapsed(locationRange)) {\n return locationRange[0].index;\n } else {\n return locationRange;\n }\n }\n }, {\n key: \"getTimeContext\",\n value: function getTimeContext() {\n if (config.undoInterval > 0) {\n return Math.floor(new Date().getTime() / config.undoInterval);\n } else {\n return 0;\n }\n }\n }, {\n key: \"isFocused\",\n value: function isFocused() {\n var _this$editorElement$o;\n\n return this.editorElement === ((_this$editorElement$o = this.editorElement.ownerDocument) === null || _this$editorElement$o === void 0 ? void 0 : _this$editorElement$o.activeElement);\n } // Detect \"Cursor disappears sporadically\" Firefox bug.\n // - https://bugzilla.mozilla.org/show_bug.cgi?id=226301\n\n }, {\n key: \"isFocusedInvisibly\",\n value: function isFocusedInvisibly() {\n return this.isFocused() && !this.getLocationRange();\n }\n }, {\n key: \"actions\",\n get: function get() {\n return this.constructor.actions;\n }\n }]);\n\n return EditorController;\n}(Controller);\n\n_defineProperty(EditorController, \"actions\", {\n undo: {\n test: function test() {\n return this.editor.canUndo();\n },\n perform: function perform() {\n return this.editor.undo();\n }\n },\n redo: {\n test: function test() {\n return this.editor.canRedo();\n },\n perform: function perform() {\n return this.editor.redo();\n }\n },\n link: {\n test: function test() {\n return this.editor.canActivateAttribute(\"href\");\n }\n },\n increaseNestingLevel: {\n test: function test() {\n return this.editor.canIncreaseNestingLevel();\n },\n perform: function perform() {\n return this.editor.increaseNestingLevel() && this.render();\n }\n },\n decreaseNestingLevel: {\n test: function test() {\n return this.editor.canDecreaseNestingLevel();\n },\n perform: function perform() {\n return this.editor.decreaseNestingLevel() && this.render();\n }\n },\n attachFiles: {\n test: function test() {\n return true;\n },\n perform: function perform() {\n return config.input.pickFiles(this.editor.insertFiles);\n }\n }\n});\n\nEditorController.proxyMethod(\"getSelectionManager().setLocationRange\");\nEditorController.proxyMethod(\"getSelectionManager().getLocationRange\");\ninstallDefaultCSSForTagName(\"trix-toolbar\", \"%t {\\n display: block;\\n}\\n\\n%t {\\n white-space: nowrap;\\n}\\n\\n%t [data-trix-dialog] {\\n display: none;\\n}\\n\\n%t [data-trix-dialog][data-trix-active] {\\n display: block;\\n}\\n\\n%t [data-trix-dialog] [data-trix-validate]:invalid {\\n background-color: #ffdddd;\\n}\");\n\nvar TrixToolbarElement = /*#__PURE__*/function (_HTMLElement) {\n _inherits2(TrixToolbarElement, _HTMLElement);\n\n var _super43 = _createSuper2(TrixToolbarElement);\n\n function TrixToolbarElement() {\n _classCallCheck2(this, TrixToolbarElement);\n\n return _super43.apply(this, arguments);\n }\n\n _createClass2(TrixToolbarElement, [{\n key: \"connectedCallback\",\n value: // Element lifecycle\n function connectedCallback() {\n if (this.innerHTML === \"\") {\n this.innerHTML = config.toolbar.getDefaultHTML();\n }\n }\n }]);\n\n return TrixToolbarElement;\n}( /*#__PURE__*/_wrapNativeSuper2(HTMLElement));\n\nwindow.customElements.define(\"trix-toolbar\", TrixToolbarElement);\nvar id = 0; // Contenteditable support helpers\n\nvar autofocus = function autofocus(element) {\n if (!document.querySelector(\":focus\")) {\n if (element.hasAttribute(\"autofocus\") && document.querySelector(\"[autofocus]\") === element) {\n return element.focus();\n }\n }\n};\n\nvar makeEditable = function makeEditable(element) {\n if (element.hasAttribute(\"contenteditable\")) {\n return;\n }\n\n element.setAttribute(\"contenteditable\", \"\");\n return handleEventOnce(\"focus\", {\n onElement: element,\n withCallback: function withCallback() {\n return configureContentEditable(element);\n }\n });\n};\n\nvar configureContentEditable = function configureContentEditable(element) {\n disableObjectResizing(element);\n return setDefaultParagraphSeparator(element);\n};\n\nvar disableObjectResizing = function disableObjectResizing(element) {\n var _document$queryComman, _document;\n\n if ((_document$queryComman = (_document = document).queryCommandSupported) !== null && _document$queryComman !== void 0 && _document$queryComman.call(_document, \"enableObjectResizing\")) {\n document.execCommand(\"enableObjectResizing\", false, false);\n return handleEvent(\"mscontrolselect\", {\n onElement: element,\n preventDefault: true\n });\n }\n};\n\nvar setDefaultParagraphSeparator = function setDefaultParagraphSeparator(element) {\n var _document$queryComman2, _document2;\n\n if ((_document$queryComman2 = (_document2 = document).queryCommandSupported) !== null && _document$queryComman2 !== void 0 && _document$queryComman2.call(_document2, \"DefaultParagraphSeparator\")) {\n var _tagName2 = config.blockAttributes[\"default\"].tagName;\n\n if ([\"div\", \"p\"].includes(_tagName2)) {\n return document.execCommand(\"DefaultParagraphSeparator\", false, _tagName2);\n }\n }\n}; // Accessibility helpers\n\n\nvar addAccessibilityRole = function addAccessibilityRole(element) {\n if (element.hasAttribute(\"role\")) {\n return;\n }\n\n return element.setAttribute(\"role\", \"textbox\");\n};\n\nvar ensureAriaLabel = function ensureAriaLabel(element) {\n if (element.hasAttribute(\"aria-label\") || element.hasAttribute(\"aria-labelledby\")) {\n return;\n }\n\n var update = function update() {\n var texts = Array.from(element.labels).map(function (label) {\n if (!label.contains(element)) return label.textContent;\n }).filter(function (text) {\n return text;\n });\n var text = texts.join(\" \");\n\n if (text) {\n return element.setAttribute(\"aria-label\", text);\n } else {\n return element.removeAttribute(\"aria-label\");\n }\n };\n\n update();\n return handleEvent(\"focus\", {\n onElement: element,\n withCallback: update\n });\n}; // Style\n\n\nvar cursorTargetStyles = function () {\n if (config.browser.forcesObjectResizing) {\n return {\n display: \"inline\",\n width: \"auto\"\n };\n } else {\n return {\n display: \"inline-block\",\n width: \"1px\"\n };\n }\n}();\n\ninstallDefaultCSSForTagName(\"trix-editor\", \"%t {\\n display: block;\\n}\\n\\n%t:empty:not(:focus)::before {\\n content: attr(placeholder);\\n color: graytext;\\n cursor: text;\\n pointer-events: none;\\n white-space: pre-line;\\n}\\n\\n%t a[contenteditable=false] {\\n cursor: text;\\n}\\n\\n%t img {\\n max-width: 100%;\\n height: auto;\\n}\\n\\n%t \".concat(attachmentSelector, \" figcaption textarea {\\n resize: none;\\n}\\n\\n%t \").concat(attachmentSelector, \" figcaption textarea.trix-autoresize-clone {\\n position: absolute;\\n left: -9999px;\\n max-height: 0px;\\n}\\n\\n%t \").concat(attachmentSelector, \" figcaption[data-trix-placeholder]:empty::before {\\n content: attr(data-trix-placeholder);\\n color: graytext;\\n}\\n\\n%t [data-trix-cursor-target] {\\n display: \").concat(cursorTargetStyles.display, \" !important;\\n width: \").concat(cursorTargetStyles.width, \" !important;\\n padding: 0 !important;\\n margin: 0 !important;\\n border: none !important;\\n}\\n\\n%t [data-trix-cursor-target=left] {\\n vertical-align: top !important;\\n margin-left: -1px !important;\\n}\\n\\n%t [data-trix-cursor-target=right] {\\n vertical-align: bottom !important;\\n margin-right: -1px !important;\\n}\"));\n\nvar TrixEditorElement = /*#__PURE__*/function (_HTMLElement2) {\n _inherits2(TrixEditorElement, _HTMLElement2);\n\n var _super44 = _createSuper2(TrixEditorElement);\n\n function TrixEditorElement() {\n _classCallCheck2(this, TrixEditorElement);\n\n return _super44.apply(this, arguments);\n }\n\n _createClass2(TrixEditorElement, [{\n key: \"trixId\",\n get: // Properties\n function get() {\n if (this.hasAttribute(\"trix-id\")) {\n return this.getAttribute(\"trix-id\");\n } else {\n this.setAttribute(\"trix-id\", ++id);\n return this.trixId;\n }\n }\n }, {\n key: \"labels\",\n get: function get() {\n var labels = [];\n\n if (this.id && this.ownerDocument) {\n labels.push.apply(labels, _toConsumableArray2(Array.from(this.ownerDocument.querySelectorAll(\"label[for='\".concat(this.id, \"']\")) || [])));\n }\n\n var label = findClosestElementFromNode(this, {\n matchingSelector: \"label\"\n });\n\n if (label) {\n if ([this, null].includes(label.control)) {\n labels.push(label);\n }\n }\n\n return labels;\n }\n }, {\n key: \"toolbarElement\",\n get: function get() {\n if (this.hasAttribute(\"toolbar\")) {\n var _this$ownerDocument;\n\n return (_this$ownerDocument = this.ownerDocument) === null || _this$ownerDocument === void 0 ? void 0 : _this$ownerDocument.getElementById(this.getAttribute(\"toolbar\"));\n } else if (this.parentNode) {\n var toolbarId = \"trix-toolbar-\".concat(this.trixId);\n this.setAttribute(\"toolbar\", toolbarId);\n var element = makeElement(\"trix-toolbar\", {\n id: toolbarId\n });\n this.parentNode.insertBefore(element, this);\n return element;\n } else {\n return undefined;\n }\n }\n }, {\n key: \"form\",\n get: function get() {\n var _this$inputElement;\n\n return (_this$inputElement = this.inputElement) === null || _this$inputElement === void 0 ? void 0 : _this$inputElement.form;\n }\n }, {\n key: \"inputElement\",\n get: function get() {\n if (this.hasAttribute(\"input\")) {\n var _this$ownerDocument2;\n\n return (_this$ownerDocument2 = this.ownerDocument) === null || _this$ownerDocument2 === void 0 ? void 0 : _this$ownerDocument2.getElementById(this.getAttribute(\"input\"));\n } else if (this.parentNode) {\n var inputId = \"trix-input-\".concat(this.trixId);\n this.setAttribute(\"input\", inputId);\n var element = makeElement(\"input\", {\n type: \"hidden\",\n id: inputId\n });\n this.parentNode.insertBefore(element, this.nextElementSibling);\n return element;\n } else {\n return undefined;\n }\n }\n }, {\n key: \"editor\",\n get: function get() {\n var _this$editorControlle;\n\n return (_this$editorControlle = this.editorController) === null || _this$editorControlle === void 0 ? void 0 : _this$editorControlle.editor;\n }\n }, {\n key: \"name\",\n get: function get() {\n var _this$inputElement2;\n\n return (_this$inputElement2 = this.inputElement) === null || _this$inputElement2 === void 0 ? void 0 : _this$inputElement2.name;\n }\n }, {\n key: \"value\",\n get: function get() {\n var _this$inputElement3;\n\n return (_this$inputElement3 = this.inputElement) === null || _this$inputElement3 === void 0 ? void 0 : _this$inputElement3.value;\n },\n set: function set(defaultValue) {\n var _this$editor;\n\n this.defaultValue = defaultValue;\n (_this$editor = this.editor) === null || _this$editor === void 0 ? void 0 : _this$editor.loadHTML(this.defaultValue);\n } // Controller delegate methods\n\n }, {\n key: \"notify\",\n value: function notify(message, data) {\n if (this.editorController) {\n return triggerEvent(\"trix-\".concat(message), {\n onElement: this,\n attributes: data\n });\n }\n }\n }, {\n key: \"setInputElementValue\",\n value: function setInputElementValue(value) {\n if (this.inputElement) {\n this.inputElement.value = value;\n }\n } // Element lifecycle\n\n }, {\n key: \"connectedCallback\",\n value: function connectedCallback() {\n var _this75 = this;\n\n if (!this.hasAttribute(\"data-trix-internal\")) {\n makeEditable(this);\n addAccessibilityRole(this);\n ensureAriaLabel(this);\n\n if (!this.editorController) {\n triggerEvent(\"trix-before-initialize\", {\n onElement: this\n });\n this.editorController = new EditorController({\n editorElement: this,\n html: this.defaultValue = this.value\n });\n requestAnimationFrame(function () {\n return triggerEvent(\"trix-initialize\", {\n onElement: _this75\n });\n });\n }\n\n this.editorController.registerSelectionManager();\n this.registerResetListener();\n this.registerClickListener();\n autofocus(this);\n }\n }\n }, {\n key: \"disconnectedCallback\",\n value: function disconnectedCallback() {\n var _this$editorControlle2;\n\n (_this$editorControlle2 = this.editorController) === null || _this$editorControlle2 === void 0 ? void 0 : _this$editorControlle2.unregisterSelectionManager();\n this.unregisterResetListener();\n return this.unregisterClickListener();\n } // Form support\n\n }, {\n key: \"registerResetListener\",\n value: function registerResetListener() {\n this.resetListener = this.resetBubbled.bind(this);\n return window.addEventListener(\"reset\", this.resetListener, false);\n }\n }, {\n key: \"unregisterResetListener\",\n value: function unregisterResetListener() {\n return window.removeEventListener(\"reset\", this.resetListener, false);\n }\n }, {\n key: \"registerClickListener\",\n value: function registerClickListener() {\n this.clickListener = this.clickBubbled.bind(this);\n return window.addEventListener(\"click\", this.clickListener, false);\n }\n }, {\n key: \"unregisterClickListener\",\n value: function unregisterClickListener() {\n return window.removeEventListener(\"click\", this.clickListener, false);\n }\n }, {\n key: \"resetBubbled\",\n value: function resetBubbled(event) {\n if (event.defaultPrevented) return;\n if (event.target !== this.form) return;\n return this.reset();\n }\n }, {\n key: \"clickBubbled\",\n value: function clickBubbled(event) {\n if (event.defaultPrevented) return;\n if (this.contains(event.target)) return;\n var label = findClosestElementFromNode(event.target, {\n matchingSelector: \"label\"\n });\n if (!label) return;\n if (!Array.from(this.labels).includes(label)) return;\n return this.focus();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.value = this.defaultValue;\n }\n }]);\n\n return TrixEditorElement;\n}( /*#__PURE__*/_wrapNativeSuper2(HTMLElement));\n\nwindow.customElements.define(\"trix-editor\", TrixEditorElement);\nexport { Trix as default };","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\nimport ActionCable from 'actioncable'\nActionCable.startDebugging()\nwindow.Cable = ActionCable.createConsumer()\n\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\nimport 'trix'\nimport 'trix/dist/trix.css'\n\nconst application = Application.start()\nconst context = require.context(\"controllers\", true, /.js$/)\napplication.load(definitionsFromContext(context))\n\nif (window.dataConfirmModal) {\n dataConfirmModal.setDefaults({\n zIndex: 10099\n })\n}\n","export function definitionsFromContext(context) {\n return context.keys().map(function (key) {\n return definitionForModuleWithContextAndKey(context, key);\n }).filter(function (value) {\n return value;\n });\n}\n\nfunction definitionForModuleWithContextAndKey(context, key) {\n var identifier = identifierForContextKey(key);\n\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\n\nfunction definitionForModuleAndIdentifier(module, identifier) {\n var controllerConstructor = module[\"default\"];\n\n if (typeof controllerConstructor == \"function\") {\n return {\n identifier: identifier,\n controllerConstructor: controllerConstructor\n };\n }\n}\n\nexport function identifierForContextKey(key) {\n var logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}"],"sourceRoot":""}