{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@stimulus/core/dist/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/action.js","webpack:///./node_modules/@stimulus/core/dist/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/attribute_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/string_map_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/value_observer.js","webpack:///./node_modules/@stimulus/core/dist/context.js","webpack:///./node_modules/@stimulus/core/dist/inheritable_statics.js","webpack:///./node_modules/@stimulus/core/dist/blessing.js","webpack:///./node_modules/@stimulus/core/dist/module.js","webpack:///./node_modules/@stimulus/core/dist/definition.js","webpack:///./node_modules/@stimulus/core/dist/class_map.js","webpack:///./node_modules/@stimulus/core/dist/string_helpers.js","webpack:///./node_modules/@stimulus/core/dist/data_map.js","webpack:///./node_modules/@stimulus/core/dist/guide.js","webpack:///./node_modules/@stimulus/core/dist/selectors.js","webpack:///./node_modules/@stimulus/core/dist/target_set.js","webpack:///./node_modules/@stimulus/core/dist/scope.js","webpack:///./node_modules/@stimulus/core/dist/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/router.js","webpack:///./node_modules/@stimulus/core/dist/schema.js","webpack:///./node_modules/@stimulus/core/dist/application.js","webpack:///./node_modules/@stimulus/core/dist/class_properties.js","webpack:///./node_modules/@stimulus/core/dist/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/value_properties.js","webpack:///./node_modules/@stimulus/core/dist/controller.js","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./node_modules/trix/dist/trix.js","webpack:///./app/javascript/controllers/columns_controller.js","webpack:///./app/javascript/controllers/drag_controller.js","webpack:///./app/javascript/controllers/emaildraft_controller.js","webpack:///./app/javascript/controllers/favorites_controller.js","webpack:///./app/javascript/controllers/form-response-bulk_controller.js","webpack:///./app/javascript/controllers/hello_controller.js","webpack:///./app/javascript/controllers/jobdescription_controller.js","webpack:///./app/javascript/controllers/mailflowactive_controller.js","webpack:///./app/javascript/controllers/mailflowtaskactive_controller.js","webpack:///./app/javascript/controllers/mentions_controller.js","webpack:///(webpack)/buildin/global.js","webpack:///./app/javascript/controllers/personalized-field_controller.js","webpack:///./app/javascript/controllers/position_controller.js","webpack:///./app/javascript/controllers/widgets_controller.js","webpack:///./app/javascript/controllers/workflow_controller.js","webpack:///./node_modules/tributejs/dist/tribute.min.js","webpack:///./app/javascript/packs/application.js","webpack:///./app/javascript/controllers sync \\.js$","webpack:///./app/javascript/controllers/index.js","webpack:///./app/javascript/controllers sync _controller\\.js$","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/process/browser.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/@rails/actiontext/app/javascript/actiontext/attachment_upload.js","webpack:///./node_modules/@rails/actiontext/app/javascript/actiontext/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","eventOptions","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","cacheKey","createEventListener","set","parts","keys","push","join","descriptorPattern","Action","element","descriptor","tagName","toLowerCase","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","forToken","token","descriptorString","content","matches","trim","match","eventTargetName","window","document","split","options","replace","test","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","StringMapObserver","stringMap","knownAttributeNames","refreshAttribute","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","fetch","del","size","prune","_extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","filter","__extends","b","setPrototypeOf","__proto__","__","constructor","_super","IndexedMultimap","keysByValue","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","_","findIndex","tokensAreEqual","slice","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","attributeValue","invokeChangedCallbackForValue","valueDescriptors","name_1","undefined","defaultValue","data","Context","controllerConstructor","bindingObserver","dispatcher","valueObserver","initialize","parentElement","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","isArray","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","apply","getOwnStaticObjectPairs","getPrototypeOf","reverse","__spreadArrays","il","arguments","k","a","j","jl","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","_newTarget","Reflect","construct","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAttributeName","getAttributeNameForKey","capitalize","charAt","toUpperCase","dasherize","_char2","DataMap","setAttribute","removeAttribute","Guide","logger","warnedKeysByObject","warn","warnedKeys","attributeValueContainsToken","TargetSet","targetName","find","targetNames","findTarget","findLegacyTarget","findAll","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","guide","Scope","classes","closest","controllerSelector","queryElements","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","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","Application","documentElement","console","router","readyState","register","load","head","rest","definitions","unload","identifiers","getControllerForElementAndIdentifier","ClassPropertiesBlessing","classDefinition","TargetPropertiesBlessing","targetDefinition","_typeof","obj","ValuePropertiesBlessing","valueDefinitionPairs","propertyDescriptorMap","valueDefinitionPair","valueDescriptor","parseValueDefinitionPair","read","readers","write","writers","propertiesForValueDefinitionPair","_char","defaultValuesByType","valueDescriptorForTokenAndType","typeConstant","Boolean","Number","String","parseValueTypeConstant","number","string","array","JSON","parse","parseFloat","writeJSON","stringify","Controller","blessings","_typeof2","_defineProperty","writable","_extends","source","_objectSpread","ownKeys","sym","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","userAgent","pattern","navigator","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","on","el","fn","off","substring","msMatchesSelector","webkitMatchesSelector","getParentOrHost","host","parentNode","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","css","prop","val","style","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","list","getElementsByTagName","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","bottom","height","width","innerHeight","innerWidth","containerRect","parseInt","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","currentChild","children","display","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","nodeName","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","isRectEqual","rect1","rect2","round","throttle","callback","ms","args","setTimeout","scrollBy","x","Polymer","$","jQuery","Zepto","dom","cloneNode","expando","Date","getTime","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","animation","child","rect","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","splice","arr","indexOfObject","animateAll","clearTimeout","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","forRepaintDummy","offsetWidth","repaint","easing","animated","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","pluginName","pluginEvent","sortable","evt","eventCanceled","cancel","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","dispatchEvent","_ref","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","substr","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","item","pullMode","lastPutMode","allEventProperties","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","active","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","preventDefault","stopPropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","disabled","store","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","str","src","href","sum","charCodeAt","_nextTick","_cancelNextTick","id","_getDirection","touch","pointerType","originalTarget","shadowRoot","path","composedPath","root","inputs","idx","checked","_saveInputCheckedState","button","isContentEditable","criteria","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","appendChild","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","save","dropEffect","_globalDragOver","toArray","order","useAnimation","items","destroy","utils","is","dst","nextTick","cancelNextTick","detectDirection","_len","_key","version","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","factory","sparkMd5","createCommonjsModule","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","tail","tmp","lo","hi","rhex","hex","toUtf8","unescape","encodeURIComponent","hexToBinaryString","bytes","fromCharCode","SparkMD5","reset","ArrayBuffer","clamp","min","num","targetArray","sourceArray","byteLength","begin","end","Uint8Array","append","appendBinary","contents","_buff","_length","_hash","raw","buff","_finish","getState","hash","setState","hashBinary","first","second","returnUInt8Array","buffer","subarray","utf8Str2ArrayBuffer","md51_array","classCallCheck","instance","Constructor","createClass","props","protoProps","staticProps","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","ceil","chunkIndex","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","querySelector","eventInit","toArray$1","BlobRecord","checksum","url","filename","content_type","byte_size","xhr","XMLHttpRequest","open","responseType","setRequestHeader","csrfToken","getMetaValue","requestDidLoad","requestDidError","send","blob","status","response","direct_upload","directUploadData","toJSON","_xhr","BlobUpload","_blob$directUploadDat","headers","DirectUpload","notify","upload","messages","DirectUploadController","input","directUpload","dispatch","hiddenInput","insertAdjacentElement","dispatchError","signed_id","progress","loaded","total","defaultPrevented","alert","_this2","uploadRequestDidProgress","DirectUploadsController","form","files","controllers","createDirectUploadControllers","startNextController","shift","submitButtonsByForm","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","disable","enable","focus","click","submitForm","ActiveStorage","definitionsFromContext","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","_state","_handled","_value","_deferreds","h","onFulfilled","onRejected","promise","u","setImmediate","all","race","_setImmediateFn","_setUnhandledRejectionFn","customElements","registerElement","now","random","A","uid_","nodes_","observer","removeTransientObservers","callback_","enqueue","records_","C","previousSibling","attributeNamespace","oldValue","w","transientObservedNodes","JsMutationObserver","postMessage","ShadowDOMPolyfill","wrapIfNeeded","characterData","attributeOldValue","attributeFilter","characterDataOldValue","SyntaxError","removeListeners","addListeners","addListeners_","removeListeners_","addTransientObserver","attrName","relatedNode","namespaceURI","attrChange","MutationEvent","ADDITION","prevValue","_isPolyfilled","self","performance","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","Event","initCustomEvent","WebComponents","CustomElements","flags","addModule","initializeModules","hasNative","isIE","useNative","HTMLImports","firstElementChild","firstChild","olderShadowRoot","IMPORT_LINK_TYPE","forDocumentTree","wrap","forSubtree","upgrade","__upgraded__","__attached","attachedCallback","detachedCallback","URL","_URL","localName","DOCUMENT_FRAGMENT_NODE","E","groupEnd","__observer","baseURI","hasPolyfillMutations","hasThrottledAttached","S","createShadowRoot","watchShadow","__watched","log","upgradeDocumentTree","upgradeDocument","upgradeSubtree","upgradeAll","attached","createdCallback","HTMLElement","HTMLTemplateElement","decorate","getRegisteredDefinition","tag","upgradeWithDefinition","implementPrototype","_polyfilled","attributeChangedCallback","ctor","createElementNS","__name","lifecycle","ancestry","ready","registry","reservedTagList","readyTime","elapsed","unwrap","unwrapIfNeeded","__importsParsingHook","eager","attachEvent","Trix","VERSION","ZERO_WIDTH_SPACE","NON_BREAKING_SPACE","OBJECT_REPLACEMENT_CHARACTER","browser","composesExistingText","forcesObjectResizing","supportsInputEvents","InputEvent","config","BasicObject","proxyMethod","toMethod","toProperty","optional","Function","_t","__super__","fromJSONString","fromJSON","hasSameConstructorAs","isEqualTo","inspect","contentsForInspection","toJSONString","toUTF16String","UTF16String","box","getCacheKey","defer","normalizeSpaces","RegExp","normalizeNewlines","breakableWhitespacePattern","squishBreakableWhitespace","summarizeStringChange","added","removed","_n","utf16String","offset","codepoints","fromCodepoints","_t2","copyObject","objectsAreEqual","arraysAreEqual","arrayStartsWith","spliceArray","summarizeArrayChange","getAllAttributeNames","getTextAttributeNames","getBlockAttributeNames","getBlockConfig","blockAttributes","getTextConfig","textAttributes","getListAttributeNames","listAttribute","matchesSelector","mozMatchesSelector","_s","onElement","matchingSelector","withCallback","inPhase","times","findClosestElementFromNode","handleEventOnce","triggerEvent","elementMatchesSelector","untilNode","findInnerElement","innerElementIsActive","activeElement","elementContainsNode","findNodeFromContainerAndOffset","TEXT_NODE","childNodes","findElementFromContainerAndOffset","findChildIndexOfNode","removeNode","walkTree","onlyNodesOfType","usingFilter","expandEntityReferences","NodeFilter","SHOW_ELEMENT","SHOW_TEXT","SHOW_COMMENT","SHOW_ALL","createTreeWalker","makeElement","editable","contenteditable","dataset","getBlockTagNames","blockTagNames","nodeIsBlockContainer","nodeIsBlockStartComment","nodeProbablyIsBlockContainer","nodeIsBlockStart","strict","nodeIsCommentNode","COMMENT_NODE","nodeIsCursorTarget","nodeIsTextNode","trixCursorTarget","nodeIsAttachmentElement","AttachmentView","attachmentSelector","nodeIsEmptyTextNode","normalizeRange","rangeIsCollapsed","rangesAreEqual","defaultCSS","_t3","connectedCallback","disconnectedCallback","_n2","define","getDOMSelection","rangeCount","getDOMRange","getRangeAt","setDOMRange","addRange","selectionChangeObserver","update","_t4","startContainer","endContainer","dataTransferIsPlainText","getData","DOMParser","parseFromString","dataTransferIsWritable","keyEventIsKeyboardCommand","platform","metaKey","ctrlKey","RTL_PATTERN","getDirection","dir","dirName","FormData","Hash","fromCommonAttributesOfObjects","getKeys","getKeysCommonToHash","merge","remove","isEmpty","toObject","ObjectGroup","objects","depth","asTree","groupObjects","canBeGrouped","canBeGroupedWith","getObjects","getDepth","_t5","ObjectMap","ElementStore","trixStoreKey","_t6","Operation","isPerforming","performing","hasPerformed","performed","hasSucceeded","succeeded","hasFailed","getPromise","perform","release","ucs2String","ucs2Length","fromUCS2String","offsetToUCS2Offset","offsetFromUCS2Offset","codePointAt","fromCodePoint","lang","attachFiles","bold","bullets","captionPlaceholder","code","heading1","indent","italic","link","numbers","outdent","quote","redo","strike","undo","unlink","urlPlaceholder","GB","KB","MB","PB","TB","attachment","attachmentCaption","attachmentCaptionEditor","attachmentMetadata","attachmentMetadataContainer","attachmentName","attachmentProgress","attachmentSize","attachmentToolbar","attachmentGallery","nestable","terminal","breakOnReturn","text","plaintext","bulletList","bullet","numberList","exclusive","fileSize","prefix","precision","formatter","toFixed","inheritable","parser","fontWeight","fontStyle","groupTagName","frozen","backgroundColor","serializers","Document","fromHTML","innerHTML","toSerializableDocument","DocumentView","render","deserializers","serializeToContentType","deserializeFromContentType","toolbar","getDefaultHTML","undoInterval","attachments","preview","presentation","caption","keyNames","8","9","13","27","37","39","46","68","72","79","level2Enabled","getLevel","pickFiles","multiple","hidden","fileInputId","getElementById","_t7","ObjectView","childViews","rootView","getNodes","createNodes","invalidate","parentView","invalidateViewForObject","findViewForObject","findOrCreateCachedChildView","getCachedViewForObject","recordChildView","createChildView","cacheViewForObject","viewClass","ObjectGroupView","getAllChildViews","findElementForObject","getViewCache","isViewCachingEnabled","viewCache","shouldCacheViews","enableViewCaching","disableViewCaching","garbageCollectCachedViews","_t8","objectGroup","getChildViews","createContainerElement","_t9","didMutate","_h","findSignificantMutations","elementDidMutate","getMutationSummary","mutationIsSignificant","nodeIsMutable","nodesModifiedByMutation","nodeIsSignificant","getTextMutationSummary","getTextChangesFromCharacterData","additions","deletions","getTextChangesFromChildList","textAdded","textDeleted","getMutationsByType","_t10","FileVerificationOperation","onerror","onload","abort","InputController","events","handlerFor","editorWillSyncDocumentView","editorDidSyncDocumentView","requestRender","inputControllerDidRequestRender","requestReparse","inputControllerDidRequestReparse","handleInput","inputControllerWillAttachFiles","responder","insertFiles","inputControllerWillHandleInput","inputControllerDidHandleInput","createLinkHTML","outerHTML","Level0InputController","resetInputSummary","setInputSummary","inputSummary","isComposing","inputControllerDidAllowUnhandledInput","mutationIsExpected","preferDocument","didDelete","getSelectedRange","positionIsBlockBreak","compositionInput","getEndData","keydown","didInput","keyCode","keyName","inputControllerDidReceiveKeyboardCommand","keypress","altKey","inputControllerWillPerformTyping","insertString","selectionIsExpanded","textInput","setSelectedRange","dragenter","dragstart","serializeSelectionToDataTransfer","draggedRange","inputControllerDidStartDrag","dragover","canAcceptDataTransfer","draggingPoint","inputControllerDidReceiveDragOverPoint","dragend","inputControllerDidCancelDrag","setLocationRangeFromPointRange","inputControllerWillMoveText","moveTextFromRange","insertDocument","cut","clipboardData","inputControllerWillCutText","deleteInDirection","copy","paste","R","D","L","testClipboardData","clipboard","getPastedHTMLUsingHiddenElement","html","inputControllerWillPaste","insertHTML","inputControllerDidPaste","types","getAsFile","insertFile","compositionstart","getCompositionInput","compositionupdate","compositionend","beforeinput","backspace","insertLineBreak","tab","canIncreaseNestingLevel","increaseNestingLevel","selectionIsInCursorTarget","moveCursorInDirection","control","updatePosition","canDecreaseNestingLevel","decreaseNestingLevel","expandSelectionInDirection","alt","meta","isEnded","getSelectedDocument","Files","position","pageXOffset","pageYOffset","opacity","which","charCode","inputController","isSignificant","insertPlaceholder","range","selectPlaceholder","forgetPlaceholder","canApplyToDocument","Level2InputController","scheduledRender","composing","reparse","scheduleRender","afterRender","shiftKey","withEvent","inputTypes","inputType","selectionContainsAttachments","dragging","point","ArrowLeft","shouldManageMovingCursorInDirection","ArrowRight","Backspace","shouldManageDeletingInDirection","Tab","deleteByComposition","recordUndoEntry","deleteByCut","deleteByDrag","withTargetDOMRange","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","removeCurrentAttribute","formatSetBlockTextDirection","formatSetInlineTextDirection","formatStrikeThrough","formatSubscript","formatSuperscript","formatUnderline","historyRedo","inputControllerWillPerformRedo","historyUndo","inputControllerWillPerformUndo","insertCompositionText","insertFromComposition","insertFromDrop","insertFromPaste","insertFromYank","insertLink","insertOrderedList","insertParagraph","insertReplacementText","insertText","insertTranspose","insertUnorderedList","inputControllerWillPerformFormatting","toggleCurrentAttribute","setCurrentAttribute","getTargetDOMRange","minLength","getTargetRanges","createRange","setStart","startOffset","setEnd","endOffset","AttachmentEditorController","attachmentPiece","didBlurCaption","didChangeCaption","didInputCaption","didKeyDownCaption","didClickActionButton","didClickToolbar","install","undos","makeElementMutable","addToolbar","isPreviewable","installCaptionEditor","uninstall","savePendingCaption","didUninstallAttachmentEditor","pendingCaption","attachmentEditorDidRequestUpdatingAttributesForAttachment","attachmentEditorDidRequestRemovingAttributeForAttachment","trixMutable","title","trixAction","getFilename","getFormattedFilesize","placeholder","getCaption","tabIndex","editCaption","attachmentEditorDidRequestRemovalOfAttachment","attachmentEditorDidRequestDeselectingAttachment","uploadProgressDelegate","piece","createContentNodes","getClassName","getHref","tabindex","hasContent","getContent","createCaptionElement","isPending","progressElement","getUploadProgress","getCaptionConfig","createTextNode","getType","getExtension","trixAttachment","trixContentType","getContentType","trixId","trixAttributes","trixSerialize","findProgressElement","attachmentDidChangeUploadProgress","PreviewableAttachmentView","previewDelegate","image","updateAttributesForImage","getURL","getPreviewURL","getWidth","getHeight","attachmentDidChangeAttributes","PieceView","getAttributes","textConfig","createAttachmentNodes","createStringNodes","preserveSpaces","styleProperty","isLast","isFirst","followsWhitespace","_t11","TextView","getPieces","BlockView","block","createComment","getLastAttribute","shouldAddExtraNewlineElement","isRTL","getBlockBreakPosition","elementStore","setDocument","sync","shadowElement","getBlocks","isSynced","createDocumentFragmentForSync","didSync","createDocumentFragment","replaceChild","CompositionController","composition","didClickAttachment","didBlur","didFocus","documentView","focused","compositionControllerDidFocus","blurPromise","compositionControllerDidBlur","findAttachmentForElement","compositionControllerDidSelectAttachment","getSerializableElement","isEditingAttachment","revision","canSyncDocumentView","compositionControllerWillSyncDocumentView","compositionControllerDidSyncDocumentView","compositionControllerDidRender","rerenderViewForObject","refreshViewCache","attachmentEditor","installAttachmentEditorForAttachment","uninstallAttachmentEditor","getAttachmentPieceForAttachment","compositionControllerWillUpdateAttachment","updateAttributesForAttachment","removeAttributeForAttachment","compositionControllerDidRequestRemovalOfAttachment","compositionControllerDidRequestDeselectingAttachment","getAttachmentById","ToolbarController","didKeyDownDialogInput","didClickDialogButton","didClickAttributeButton","actions","resetDialogInputs","toolbarDidClickButton","getDialog","toggleDialog","toolbarDidInvokeAction","toolbarDidToggleAttribute","refreshAttributeButtons","hideDialog","updateActions","refreshActionButtons","eachActionButton","updateAttributes","eachAttributeButton","dialogIsVisible","applyKeyboardCommand","showDialog","toolbarWillShowDialog","select","toolbarDidShowDialog","willValidate","checkValidity","toolbarDidUpdateAttribute","toolbarDidRemoveAttribute","toolbarDidHideDialog","_t12","ImagePreloadOperation","Image","naturalWidth","naturalHeight","_t13","Attachment","releaseFile","didChangeAttributes","previewablePattern","attachmentForFile","attributesForFile","setFile","filesize","contentType","setAttributes","preloadURL","getFilesize","getFile","preloadFile","releasePreloadedFile","uploadProgress","setUploadProgress","previewURL","preloadingURL","setPreviewURL","attachmentDidChangePreviewURL","preload","fileObjectURL","createObjectURL","revokeObjectURL","_t14","Piece","registerType","copyWithAttributes","getValue","copyWithAdditionalAttributes","copyWithoutAttribute","getAttributesHash","getCommonAttributes","pieceList","getPieceAtIndex","eachPiece","hasSameStringValueAsPiece","hasSameAttributesAsPiece","isBlockBreak","isSerializable","getLength","canBeConsolidatedWith","_t15","AttachmentPiece","ensureAttachmentExclusivelyHasAttribute","removeProhibitedAttributes","permittedAttributes","toConsole","StringPiece","consolidateWith","splitAtOffset","SplittableList","eachObject","insertObjectAtIndex","insertSplittableListAtIndex","insertSplittableListAtPosition","splitObjectAtPosition","editObjectAtIndex","replaceObjectAtIndex","removeObjectAtIndex","getObjectAtIndex","getSplittableListInRange","splitObjectsAtRange","selectSplittableList","removeObjectsInRange","transformObjectsInRange","getObjectAtPosition","findIndexAndOffsetAtPosition","consolidate","consolidateFromIndexToIndex","findPositionAtIndexAndOffset","getEndPosition","endPosition","_t16","Text","textForAttachmentWithAttributes","textForStringWithAttributes","copyWithPieceList","copyUsingObjectMap","appendText","insertTextAtPosition","removeTextAtRange","replaceTextAtRange","moveTextFromRangeToPosition","getTextAtRange","addAttributeAtRange","addAttributesAtRange","removeAttributeAtRange","setAttributesAtRange","getAttributesAtPosition","getCommonAttributesAtRange","getExpandedRangeForAttributeAtOffset","getStringAtRange","getStringAtPosition","startsWithString","endsWithString","getAttachmentPieces","getAttachments","getAttachmentAndPositionById","getRangeOfAttachment","getPieceAtPosition","toSerializableText","Block","copyWithText","copyWithoutText","copyWithoutAttributes","addAttribute","removeLastAttribute","getAttributeLevel","getAttributeAtLevel","hasAttributes","getLastNestableAttribute","getNestableAttributes","getNestingLevel","lastIndexOf","getListItemAttributes","isListItem","isTerminalBlock","breaksOnReturn","findLineBreakInDirectionFromPosition","getTextWithoutBlockBreak","blockBreak","HTMLSanitizer","allowedAttributes","forbiddenProtocols","forbiddenElements","sanitize","sanitizeElements","normalizeListElementNesting","getHTML","getBody","nextNode","currentNode","elementIsRemovable","sanitizeElement","protocol","elementIsForbidden","elementIsntSerializable","implementation","createHTMLDocument","HTMLParser","referenceElement","blocks","blockElements","processedElements","getDocument","createHiddenContainer","containerElement","processNode","translateBlockElementMarginsToNewlines","removeHiddenContainer","FILTER_REJECT","FILTER_ACCEPT","isInsignificantTextNode","appendBlockForTextNode","processTextNode","appendBlockForElement","processElement","currentBlockElement","isBlockElement","appendStringWithAttributes","getBlockAttributes","currentBlock","appendBlockForAttributesWithElement","findParentBlockElement","appendEmptyBlock","getTextAttributes","appendAttachmentWithAttributes","isExtraBR","appendPiece","appendStringToTextAtIndex","prependStringToTextAtIndex","unshift","findBlockElementAncestors","whiteSpace","getMarginOfDefaultBlockElement","getMarginOfBlockElementAtIndex","marginTop","marginBottom","blockList","fromString","getBlockAtIndex","consolidateBlocks","copyUsingObjectsFromDocument","copyWithBaseBlockAttributes","replaceBlock","insertDocumentAtRange","locationFromPosition","getBlockAtPosition","mergeDocumentAtRange","getBaseBlockAttributes","getBlockCount","insertTextAtRange","locationRangeFromRange","getDocumentAtRange","eachBlockAtRange","eachBlock","getTextAtIndex","insertBlockBreakAtRange","applyBlockAttributeAtRange","expandRangeToLineBreaksAndSplitBlocks","removeLastListAttributeAtRange","exceptAttributeName","convertLineBreaksToBlockBreaksInRange","removeBlockAttributesAtRange","removeLastTerminalAttributeAtRange","consolidateBlocksAtRange","positionFromLocation","getTextAtPosition","getCharacterAtPosition","getEditCount","editCount","getCommonAttributesAtPosition","getRangeOfCommonAttributeAtPosition","getLocationRangeOfAttachment","findRangesForBlockAttribute","findRangesForTextAttribute","withValue","locationRangeFromPosition","rangeFromLocationRange","getTexts","LineBreakInsertion","startPosition","startLocation","endLocation","previousCharacter","nextCharacter","shouldInsertBlockBreak","shouldBreakFormattedBlock","shouldDecreaseListLevel","shouldPrependListItem","shouldRemoveLastBlockAttribute","Composition","currentAttributes","refreshAttachments","compositionDidChangeDocument","getSnapshot","selectedRange","loadSnapshot","compositionWillLoadSnapshot","setSelection","compositionDidLoadSnapshot","notifyDelegateOfInsertionAtRange","insertBlock","getCurrentTextAttributes","insertBlockBreak","decreaseListLevel","removeLastBlockAttribute","breakFormattedBlock","replaceHTML","getLocationRange","compositionShouldAcceptFile","insertAttachments","insertAttachment","canDecreaseBlockAttributeLevel","getBlock","decreaseBlockAttributeLevel","getExpandedRangeInDirection","getAttachmentAtRange","editAttachment","removeAttachment","stopEditingAttachment","placeholderPosition","getPosition","hasCurrentAttribute","canSetCurrentAttribute","canSetCurrentBlockAttribute","canSetCurrentTextAttribute","setBlockAttribute","setTextAttribute","notifyDelegateOfCurrentAttributesChange","removeBlockAttribute","updateCurrentAttributes","removeTextAttribute","getPreviousBlock","ignoreLock","freezeSelection","thawSelection","hasFrozenSelection","compositionDidRequestChangingSelectionToLocationRange","getSelectionManager","setLocationRange","targetLocationRange","withTargetLocationRange","withTargetRange","createLocationRangeFromDOMRange","translateUTF16PositionFromOffset","editingAttachment","expandSelectionForEditing","expandSelectionAroundCommonAttribute","getSelectedAttachments","positionIsCursorTarget","locationIsCursorTarget","compositionDidRemoveAttachment","compositionDidAddAttachment","compositionDidEditAttachment","compositionDidChangeAttachmentPreviewURL","compositionDidStartEditingAttachment","compositionDidStopEditingAttachment","compositionDidChangeCurrentAttributes","compositionDidPerformInsertionAtRange","_t17","UndoManager","undoEntries","redoEntries","consolidatable","createEntry","description","snapshot","canUndo","canRedo","attachmentGalleryFilter","applyBlockAttribute","findRangesOfBlocks","findRangesOfPieces","moveSelectedRangeForward","Editor","selectionManager","_t18","undoManager","filters","loadDocument","loadHTML","loadJSON","getClientRectAtPosition","getClientRectAtLocationRange","activateAttribute","attributeIsActive","canActivateAttribute","deactivateAttribute","_t19","ManagedAttachment","attachmentManager","requestRemovalOfAttachment","_t20","AttachmentManager","managedAttachments","manageAttachment","attachmentIsManaged","attachmentManagerDidRequestRemovalOfAttachment","unmanageAttachment","LocationMapper","findLocationFromContainerAndOffset","findAttachmentElementParentForNode","findContainerAndOffsetFromLocation","findNodeAndOffsetFromLocation","getSignificantNodesForIndex","PointMapper","createDOMRangeFromPoint","caretPositionFromPoint","offsetNode","caretRangeFromPoint","createTextRange","moveToPoint","getClientRectsForDOMRange","getClientRects","SelectionChangeObserver","run","selectionManagers","registerSelectionManager","unregisterSelectionManager","notifySelectionManagersOfSelectionChange","selectionDidChange","domRange","SelectionManager","didMouseDown","locationMapper","pointMapper","lockCount","currentLocationRange","lockedLocationRange","createDOMRangeFromLocationRange","updateCurrentLocationRange","getLocationAtPoint","lock","unlock","clearSelection","selectionIsCollapsed","collapsed","domRangeWithinElement","pauseTemporarily","paused","locationRangeDidChange","EditorController","editorElement","compositionController","toolbarController","toolbarElement","editor","notifyEditorElement","handlingInput","updateCurrentActions","pasting","pastedRange","attachmentLocationRange","loadingSnapshot","isFocused","requestedLocationRange","compositionRevisionWhenLocationRangeRequested","renderedCompositionRevision","runEditorFilters","isFocusedInvisibly","requestedRender","recordTypingUndoEntry","recordFormattingUndoEntry","locationRangeBeforeDrag","invokeAction","selectionFrozen","dialogName","canInvokeAction","actionIsExternal","actionName","getCurrentActions","currentActions","updateInputElement","setInputElementValue","documentChangedSinceLastRender","getUndoContext","getLocationContext","getTimeContext","queryCommandSupported","execCommand","labels","inputElement","editorController","registerResetListener","registerClickListener","unregisterResetListener","unregisterClickListener","resetListener","resetBubbled","clickListener","clickBubbled","onEnd","savePreferences","handleCheckboxChange","optItems","preferences","checkbox","itemKey","horizontal_alignment","updateList","dataString","ajax","success","processData","email_draft_id","attr","credentials","selectedResponses","updateBulkActions","checkboxTargets","updateSelection","responseId","response_id","count","selectedCountTarget","bulkActionsTarget","toggle","responseIds","export_url","downloadUrl","selectedIds","modal","outputTarget","position_id","mail_flow_id","hasClass","fieldTarget","initializeTribute","tribute","detach","Tribute","allowSpaces","lookup","user","mentionText","firstname","lastname","fetchUsers","attach","pasteHtml","_pasteHtml","replaced","json","users","mention","original","sgid","startPos","endPos","dropdownTarget","insertField","holderTarget","selectedValue","closestInput","inputTarget","getCursorPosition","newContent","closeDropdown","selectionStart","work_flow_id","boundKeydown","boundKeyup","keyup","boundInput","shouldDeactivate","isActive","hideMenu","commandEvent","callbacks","inputEvent","menu","selectItemAtIndex","current","externalTrigger","hasTrailingSpace","space","autocompleteMode","triggerChar","getKeyCode","isNaN","triggers","collection","menuShowMinLength","trigger","showMenuFor","getTriggerInfo","mentionTriggerChar","selectedPath","mentionSelectedPath","selectedOffset","mentionSelectedOffset","enter","filteredItems","menuSelected","escape","spaceSelectsMatch","up","setActiveLi","down","selectClass","menuEvents","menuClickEvent","menuContainerScrollEvent","debounce","windowResizeEvent","positionMenuAtCaret","menuContainer","iframe","contentWindow","positionMenu","getContentEditableCaretPosition","mentionPosition","getTextAreaOrInputUnderlinePosition","scrollIntoView","offsetHeight","isMenuOffScreen","getWindowSelection","collapse","replaceTextSuffix","selectionEnd","anchorNode","deleteContents","insertNode","cloneRange","setStartAfter","contentEditable","getNodePositionInParent","selected","getContentEditableSelectedPath","getTextPrecedingCurrentSelection","getLastWordInText","mentionSelectedElement","requireLeadingSpace","lastIndexWithLeadingSpace","clientLeft","clientTop","mozInnerScreenX","wordWrap","visibility","overflow","menuContainerIsBody","borderTopWidth","fontSize","getMenuDimensions","scrollTo","search","pre","post","caseSensitive","skip","rendered","score","traverse","cache","calculateScore","extract","containerClass","itemClass","T","selectTemplate","menuItemTemplate","M","fillAttr","I","N","O","noMatchTemplate","W","H","B","F","Y","z","K","q","U","X","searchOpts","Q","V","menuItemLimit","G","J","Z","defaultSelectTemplate","defaultMenuItemTemplate","NodeList","HTMLCollection","_attach","ensureEditable","currentMentionTextSnapshot","createMenu","tributeMenu","_findLiTarget","movementY","placeCaretAtEnd","insertTextAtCursor","insertAtCaret","selectNodeContents","moveToElementText","replaceText","replaceTriggerText","_append","_detach","unbind","_isActive","require","webpackContext","req","webpackContextResolve","Timeout","clearFn","_id","_clearFn","timeout","close","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","global","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","process","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","script","onreadystatechange","task","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","len","marker","runClearTimeout","Item","noop","env","argv","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","umask","webpackPolyfill","paths","_defineProperties","AttachmentUpload","_classCallCheck","directUploadUrl","directUploadDidComplete","attachable_sgid","createBlobUrl","signedId","blobUrlTemplate"],"mappings":"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","file":"js/application-da275cf0aceb4228954a.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 = 27);\n","var EventListener =\n/** @class */\nfunction () {\n function EventListener(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n };\n\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }; // Binding observer delegate\n\n /** @hidden */\n\n\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\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: false,\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: false,\n configurable: true\n }); // Binding observer delegate\n\n /** @hidden */\n\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\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 eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n };\n\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName, eventOptions) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var cacheKey = this.cacheKey(eventName, eventOptions);\n var eventListener = eventListenerMap.get(cacheKey);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName, eventOptions) {\n var eventListener = new EventListener(eventTarget, eventName, eventOptions);\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 Dispatcher.prototype.cacheKey = function (eventName, eventOptions) {\n var parts = [eventName];\n Object.keys(eventOptions).sort().forEach(function (key) {\n parts.push(\"\" + (eventOptions[key] ? \"\" : \"!\") + key);\n });\n return parts.join(\":\");\n };\n\n return Dispatcher;\n}();\n\nexport { Dispatcher };","// capture nos.: 12 23 4 43 1 5 56 7 768 9 98\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nexport function parseActionDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\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\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce(function (options, token) {\n var _a;\n\n return Object.assign(options, (_a = {}, _a[token.replace(/^!/, \"\")] = !/^!/.test(token), _a));\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 { parseActionDescriptorString, 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.eventOptions = descriptor.eventOptions || {};\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, parseActionDescriptorString(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: false,\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\" : \"input\";\n },\n \"select\": function select(e) {\n return \"change\";\n },\n \"textarea\": function textarea(e) {\n return \"input\";\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: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function get() {\n return this.action.eventTarget;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventOptions\", {\n get: function get() {\n return this.action.eventOptions;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: false,\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: false,\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: false,\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 this.scope.containsElement(this.action.element);\n }\n };\n\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function get() {\n return this.context.controller;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function get() {\n return this.action.methodName;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: false,\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: false,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function get() {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: false,\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: false,\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 };","var StringMapObserver =\n/** @class */\nfunction () {\n function StringMapObserver(element, delegate) {\n var _this = this;\n\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n StringMapObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true\n });\n this.refresh();\n }\n };\n\n StringMapObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n\n StringMapObserver.prototype.refresh = function () {\n if (this.started) {\n for (var _i = 0, _a = this.knownAttributeNames; _i < _a.length; _i++) {\n var attributeName = _a[_i];\n this.refreshAttribute(attributeName);\n }\n }\n }; // Mutation record processing\n\n\n StringMapObserver.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 StringMapObserver.prototype.processMutation = function (mutation) {\n var attributeName = mutation.attributeName;\n\n if (attributeName) {\n this.refreshAttribute(attributeName);\n }\n }; // State tracking\n\n\n StringMapObserver.prototype.refreshAttribute = function (attributeName) {\n var key = this.delegate.getStringMapKeyForAttribute(attributeName);\n\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n\n var value = this.element.getAttribute(attributeName);\n\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key);\n }\n\n if (value == null) {\n this.stringMap[\"delete\"](attributeName);\n this.stringMapKeyRemoved(key, attributeName);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n };\n\n StringMapObserver.prototype.stringMapKeyAdded = function (key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n };\n\n StringMapObserver.prototype.stringMapValueChanged = function (value, key) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key);\n }\n };\n\n StringMapObserver.prototype.stringMapKeyRemoved = function (key, attributeName) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName);\n }\n };\n\n Object.defineProperty(StringMapObserver.prototype, \"knownAttributeNames\", {\n get: function get() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StringMapObserver.prototype, \"currentAttributeNames\", {\n get: function get() {\n return Array.from(this.element.attributes).map(function (attribute) {\n return attribute.name;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StringMapObserver.prototype, \"recordedAttributeNames\", {\n get: function get() {\n return Array.from(this.stringMap.keys());\n },\n enumerable: false,\n configurable: true\n });\n return StringMapObserver;\n}();\n\nexport { StringMapObserver };","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: false,\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: false,\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 = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\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: false,\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: false,\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: false,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.attributeObserver.attributeName;\n },\n enumerable: false,\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: false,\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: false,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.tokenListObserver.attributeName;\n },\n enumerable: false,\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: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function get() {\n return this.schema.actionAttribute;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function get() {\n return this.context.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: false,\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 { StringMapObserver } from \"@stimulus/mutation-observers\";\n\nvar ValueObserver =\n/** @class */\nfunction () {\n function ValueObserver(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n this.invokeChangedCallbacksForDefaultValues();\n }\n\n ValueObserver.prototype.start = function () {\n this.stringMapObserver.start();\n };\n\n ValueObserver.prototype.stop = function () {\n this.stringMapObserver.stop();\n };\n\n Object.defineProperty(ValueObserver.prototype, \"element\", {\n get: function get() {\n return this.context.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ValueObserver.prototype, \"controller\", {\n get: function get() {\n return this.context.controller;\n },\n enumerable: false,\n configurable: true\n }); // String map observer delegate\n\n ValueObserver.prototype.getStringMapKeyForAttribute = function (attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n };\n\n ValueObserver.prototype.stringMapValueChanged = function (attributeValue, name) {\n this.invokeChangedCallbackForValue(name);\n };\n\n ValueObserver.prototype.invokeChangedCallbacksForDefaultValues = function () {\n for (var _i = 0, _a = this.valueDescriptors; _i < _a.length; _i++) {\n var _b = _a[_i],\n key = _b.key,\n name_1 = _b.name,\n defaultValue = _b.defaultValue;\n\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallbackForValue(name_1);\n }\n }\n };\n\n ValueObserver.prototype.invokeChangedCallbackForValue = function (name) {\n var methodName = name + \"Changed\";\n var method = this.receiver[methodName];\n\n if (typeof method == \"function\") {\n var value = this.receiver[name];\n method.call(this.receiver, value);\n }\n };\n\n Object.defineProperty(ValueObserver.prototype, \"valueDescriptors\", {\n get: function get() {\n var valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(function (key) {\n return valueDescriptorMap[key];\n });\n },\n enumerable: false,\n configurable: true\n });\n return ValueObserver;\n}();\n\nexport { ValueObserver };","import { BindingObserver } from \"./binding_observer\";\nimport { ValueObserver } from \"./value_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 this.valueObserver = new ValueObserver(this, this.controller);\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 this.valueObserver.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.valueObserver.stop();\n this.bindingObserver.stop();\n };\n\n Object.defineProperty(Context.prototype, \"application\", {\n get: function get() {\n return this.module.application;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function get() {\n return this.module.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function get() {\n return this.application.dispatcher;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function get() {\n return this.element.parentElement;\n },\n enumerable: false,\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 };","export function readInheritableStaticArrayValues(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (values, constructor) {\n getOwnStaticArrayValues(constructor, propertyName).forEach(function (name) {\n return values.add(name);\n });\n return values;\n }, new Set()));\n}\nexport function readInheritableStaticObjectPairs(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce(function (pairs, constructor) {\n pairs.push.apply(pairs, getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\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.reverse();\n}\n\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n var definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n var definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(function (key) {\n return [key, definition[key]];\n }) : [];\n}","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\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\nvar __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n};\n\nimport { readInheritableStaticArrayValues } from \"./inheritable_statics\";\n/** @hidden */\n\nexport function bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\n\nfunction shadow(constructor, properties) {\n var shadowConstructor = extend(constructor);\n var shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\n\nfunction getBlessedProperties(constructor) {\n var blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce(function (blessedProperties, blessing) {\n var properties = blessing(constructor);\n\n for (var key in properties) {\n var descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n\n return blessedProperties;\n }, {});\n}\n\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce(function (shadowProperties, key) {\n var _a;\n\n var descriptor = getShadowedDescriptor(prototype, properties, key);\n\n if (descriptor) {\n Object.assign(shadowProperties, (_a = {}, _a[key] = descriptor, _a));\n }\n\n return shadowProperties;\n }, {});\n}\n\nfunction getShadowedDescriptor(prototype, properties, key) {\n var shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n var shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n\n if (!shadowedByValue) {\n var descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n\n return descriptor;\n }\n}\n\nvar getOwnKeys = function () {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return function (object) {\n return __spreadArrays(Object.getOwnPropertyNames(object), Object.getOwnPropertySymbols(object));\n };\n } else {\n return Object.getOwnPropertyNames;\n }\n}();\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function extended() {\n var _newTarget = this && this instanceof extended ? this.constructor : void 0;\n\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\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(extended, _super);\n\n function extended() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return extended;\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: false,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function get() {\n return this.definition.controllerConstructor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function get() {\n return Array.from(this.connectedContexts);\n },\n enumerable: false,\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 };","import { bless } from \"./blessing\";\n/** @hidden */\n\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}","var ClassMap =\n/** @class */\nfunction () {\n function ClassMap(scope) {\n this.scope = scope;\n }\n\n ClassMap.prototype.has = function (name) {\n return this.data.has(this.getDataKey(name));\n };\n\n ClassMap.prototype.get = function (name) {\n return this.data.get(this.getDataKey(name));\n };\n\n ClassMap.prototype.getAttributeName = function (name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n };\n\n ClassMap.prototype.getDataKey = function (name) {\n return name + \"-class\";\n };\n\n Object.defineProperty(ClassMap.prototype, \"data\", {\n get: function get() {\n return this.scope.data;\n },\n enumerable: false,\n configurable: true\n });\n return ClassMap;\n}();\n\nexport { ClassMap };","export function camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, function (_, _char) {\n return _char.toUpperCase();\n });\n}\nexport function capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nexport function dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, _char2) {\n return \"-\" + _char2.toLowerCase();\n });\n}","import { dasherize } from \"./string_helpers\";\n\nvar 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: false,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n\n DataMap.prototype.get = function (key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n };\n\n DataMap.prototype.set = function (key, value) {\n var name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n };\n\n DataMap.prototype.has = function (key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n };\n\n DataMap.prototype[\"delete\"] = function (key) {\n if (this.has(key)) {\n var name_1 = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name_1);\n return true;\n } else {\n return false;\n }\n };\n\n DataMap.prototype.getAttributeNameForKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n\n return DataMap;\n}();\n\nexport { DataMap };","var Guide =\n/** @class */\nfunction () {\n function Guide(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n\n Guide.prototype.warn = function (object, key, message) {\n var warnedKeys = this.warnedKeysByObject.get(object);\n\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n };\n\n return Guide;\n}();\n\nexport { Guide };","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","var __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n};\n\nimport { 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: false,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function get() {\n return this.scope.schema;\n },\n enumerable: false,\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 _this = this;\n\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n return targetNames.reduce(function (target, targetName) {\n return target || _this.findTarget(targetName) || _this.findLegacyTarget(targetName);\n }, undefined);\n };\n\n TargetSet.prototype.findAll = function () {\n var _this = this;\n\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n return targetNames.reduce(function (targets, targetName) {\n return __spreadArrays(targets, _this.findAllTargets(targetName), _this.findAllLegacyTargets(targetName));\n }, []);\n };\n\n TargetSet.prototype.findTarget = function (targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n };\n\n TargetSet.prototype.findAllTargets = function (targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n };\n\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var attributeName = \"data-\" + this.identifier + \"-target\";\n return attributeValueContainsToken(attributeName, targetName);\n };\n\n TargetSet.prototype.findLegacyTarget = function (targetName) {\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n };\n\n TargetSet.prototype.findAllLegacyTargets = function (targetName) {\n var _this = this;\n\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(function (element) {\n return _this.deprecate(element, targetName);\n });\n };\n\n TargetSet.prototype.getLegacySelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n\n TargetSet.prototype.deprecate = function (element, targetName) {\n if (element) {\n var identifier = this.identifier;\n var attributeName = this.schema.targetAttribute;\n this.guide.warn(element, \"target:\" + targetName, \"Please replace \" + attributeName + \"=\\\"\" + identifier + \".\" + targetName + \"\\\" with data-\" + identifier + \"-target=\\\"\" + targetName + \"\\\". \" + (\"The \" + attributeName + \" attribute is deprecated and will be removed in a future version of Stimulus.\"));\n }\n\n return element;\n };\n\n Object.defineProperty(TargetSet.prototype, \"guide\", {\n get: function get() {\n return this.scope.guide;\n },\n enumerable: false,\n configurable: true\n });\n return TargetSet;\n}();\n\nexport { TargetSet };","var __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n};\n\nimport { ClassMap } from \"./class_map\";\nimport { DataMap } from \"./data_map\";\nimport { Guide } from \"./guide\";\nimport { attributeValueContainsToken } from \"./selectors\";\nimport { TargetSet } from \"./target_set\";\n\nvar Scope =\n/** @class */\nfunction () {\n function Scope(schema, element, identifier, logger) {\n var _this = this;\n\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n\n this.containsElement = function (element) {\n return element.closest(_this.controllerSelector) === _this.element;\n };\n\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n }\n\n Scope.prototype.findElement = function (selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n };\n\n Scope.prototype.findAllElements = function (selector) {\n return __spreadArrays(this.element.matches(selector) ? [this.element] : [], this.queryElements(selector).filter(this.containsElement));\n };\n\n Scope.prototype.queryElements = function (selector) {\n return Array.from(this.element.querySelectorAll(selector));\n };\n\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: false,\n configurable: true\n });\n return Scope;\n}();\n\nexport { Scope };","import { 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: false,\n configurable: true\n }); // Value observer delegate\n\n /** @hidden */\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 = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n };\n /** @hidden */\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 /** @hidden */\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 { Scope } from \"./scope\";\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: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"logger\", {\n get: function get() {\n return this.application.logger;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: false,\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: false,\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 /** @hidden */\n\n\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n }; // Scope observer delegate\n\n /** @hidden */\n\n\n Router.prototype.createScopeForElementAndIdentifier = function (element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n };\n /** @hidden */\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 /** @hidden */\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 function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\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) : adopt(result.value).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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, 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\nvar __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\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.logger = console;\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.dispatcher.start();\n this.router.start();\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Application.prototype.stop = function () {\n this.dispatcher.stop();\n this.router.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 : __spreadArrays([head], 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 : __spreadArrays([head], 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: false,\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 this.logger.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}","import { readInheritableStaticArrayValues } from \"./inheritable_statics\";\nimport { capitalize } from \"./string_helpers\";\n/** @hidden */\n\nexport function ClassPropertiesBlessing(constructor) {\n var classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce(function (properties, classDefinition) {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\n\nfunction propertiesForClassDefinition(key) {\n var _a;\n\n var name = key + \"Class\";\n return _a = {}, _a[name] = {\n get: function get() {\n var classes = this.classes;\n\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n var attribute = classes.getAttributeName(key);\n throw new Error(\"Missing attribute \\\"\" + attribute + \"\\\"\");\n }\n }\n }, _a[\"has\" + capitalize(name)] = {\n get: function get() {\n return this.classes.has(key);\n }\n }, _a;\n}","import { readInheritableStaticArrayValues } from \"./inheritable_statics\";\nimport { capitalize } from \"./string_helpers\";\n/** @hidden */\n\nexport function TargetPropertiesBlessing(constructor) {\n var targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce(function (properties, targetDefinition) {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\n\nfunction propertiesForTargetDefinition(name) {\n var _a;\n\n return _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}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { readInheritableStaticObjectPairs } from \"./inheritable_statics\";\nimport { camelize, capitalize, dasherize } from \"./string_helpers\";\n/** @hidden */\n\nexport function ValuePropertiesBlessing(constructor) {\n var valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n var propertyDescriptorMap = {\n valueDescriptorMap: {\n get: function get() {\n var _this = this;\n\n return valueDefinitionPairs.reduce(function (result, valueDefinitionPair) {\n var _a;\n\n var valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n\n var attributeName = _this.data.getAttributeNameForKey(valueDescriptor.key);\n\n return Object.assign(result, (_a = {}, _a[attributeName] = valueDescriptor, _a));\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce(function (properties, valueDefinitionPair) {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\n/** @hidden */\n\nexport function propertiesForValueDefinitionPair(valueDefinitionPair) {\n var _a;\n\n var definition = parseValueDefinitionPair(valueDefinitionPair);\n var type = definition.type,\n key = definition.key,\n name = definition.name;\n var read = readers[type],\n write = writers[type] || writers[\"default\"];\n return _a = {}, _a[name] = {\n get: function get() {\n var value = this.data.get(key);\n\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set: function set(value) {\n if (value === undefined) {\n this.data[\"delete\"](key);\n } else {\n this.data.set(key, write(value));\n }\n }\n }, _a[\"has\" + capitalize(name)] = {\n get: function get() {\n return this.data.has(key);\n }\n }, _a;\n}\n\nfunction parseValueDefinitionPair(_a) {\n var token = _a[0],\n typeConstant = _a[1];\n var type = parseValueTypeConstant(typeConstant);\n return valueDescriptorForTokenAndType(token, type);\n}\n\nfunction parseValueTypeConstant(typeConstant) {\n switch (typeConstant) {\n case Array:\n return \"array\";\n\n case Boolean:\n return \"boolean\";\n\n case Number:\n return \"number\";\n\n case Object:\n return \"object\";\n\n case String:\n return \"string\";\n }\n\n throw new Error(\"Unknown value type constant \\\"\" + typeConstant + \"\\\"\");\n}\n\nfunction valueDescriptorForTokenAndType(token, type) {\n var key = dasherize(token) + \"-value\";\n return {\n type: type,\n key: key,\n name: camelize(key),\n\n get defaultValue() {\n return defaultValuesByType[type];\n }\n\n };\n}\n\nvar defaultValuesByType = {\n get array() {\n return [];\n },\n\n \"boolean\": false,\n number: 0,\n\n get object() {\n return {};\n },\n\n string: \"\"\n};\nvar readers = {\n array: function array(value) {\n var array = JSON.parse(value);\n\n if (!Array.isArray(array)) {\n throw new TypeError(\"Expected array\");\n }\n\n return array;\n },\n \"boolean\": function boolean(value) {\n return !(value == \"0\" || value == \"false\");\n },\n number: function number(value) {\n return parseFloat(value);\n },\n object: function object(value) {\n var object = JSON.parse(value);\n\n if (object === null || _typeof(object) != \"object\" || Array.isArray(object)) {\n throw new TypeError(\"Expected object\");\n }\n\n return object;\n },\n string: function string(value) {\n return value;\n }\n};\nvar writers = {\n \"default\": writeString,\n array: writeJSON,\n object: writeJSON\n};\n\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\n\nfunction writeString(value) {\n return \"\" + value;\n}","import { ClassPropertiesBlessing } from \"./class_properties\";\nimport { TargetPropertiesBlessing } from \"./target_properties\";\nimport { ValuePropertiesBlessing } from \"./value_properties\";\n\nvar Controller =\n/** @class */\nfunction () {\n function Controller(context) {\n this.context = context;\n }\n\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function get() {\n return this.context.application;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function get() {\n return this.scope.targets;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"classes\", {\n get: function get() {\n return this.scope.classes;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function get() {\n return this.scope.data;\n },\n enumerable: false,\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.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\n Controller.targets = [];\n Controller.values = {};\n return Controller;\n}();\n\nexport { Controller };","function _typeof2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\n/**!\n * Sortable 1.13.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _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\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 ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\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 _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.13.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\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 } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : 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\nvar R_SPACE = /\\s+/g;\n\nfunction 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\nfunction 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) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction 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\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction 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] !== Sortable.ghost && children[i] !== Sortable.dragged && 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 * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\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.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction 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\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\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\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\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 && !IE11OrLess && !Edge) {\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 = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\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) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\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 _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\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 removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\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 easing: null,\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 delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).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 && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\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;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\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 if (!evt.cancelable) return;\n\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] || evt.pointerType && evt.pointerType === 'touch' && evt,\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\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 and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\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 oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\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({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\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);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\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 var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // 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 on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\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\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, 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 (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\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;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\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(fallback, evt) {\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !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 _unhideGhostForTarget();\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 ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\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);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\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 css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\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 vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\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 capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\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(s)\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 classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 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 /**\n * Serializes the item into an array of string.\n * @returns {String[]}\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 /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order, useAnimation) {\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 useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\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.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\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 var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\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\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !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 cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, 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 && !IE11OrLess && !Edge) {\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 || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < 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 // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\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 _getInsertDirection(target);\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/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _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\nfunction _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\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.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/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // 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 }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent; // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\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 (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._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\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 (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActiveStorage = {});\n})(this, function (exports) {\n \"use strict\";\n\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n\n var sparkMd5 = createCommonjsModule(function (module, exports) {\n (function (factory) {\n {\n module.exports = factory();\n }\n })(function (undefined) {\n var hex_chr = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i;\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i;\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(state, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(state, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n\n function rhex(n) {\n var s = \"\",\n j;\n\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n\n return s;\n }\n\n function hex(x) {\n var i;\n\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n\n return x.join(\"\");\n }\n\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = val | 0 || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n function SparkMD5() {\n this.reset();\n }\n\n SparkMD5.prototype.append = function (str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n\n this._finish(tail, length);\n\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n return ret;\n };\n\n SparkMD5.prototype.reset = function () {\n this._buff = \"\";\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(this._hash, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n SparkMD5.hash = function (str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n SparkMD5.ArrayBuffer = function () {\n this.reset();\n };\n\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n\n this._finish(tail, length);\n\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n return ret;\n };\n\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n });\n });\n\n var classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n var createClass = function () {\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 return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\n var FileChecksum = function () {\n createClass(FileChecksum, null, [{\n key: \"create\",\n value: function create(file, callback) {\n var instance = new FileChecksum(file);\n instance.create(callback);\n }\n }]);\n\n function FileChecksum(file) {\n classCallCheck(this, FileChecksum);\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n\n createClass(FileChecksum, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n\n this.callback = callback;\n this.md5Buffer = new sparkMd5.ArrayBuffer();\n this.fileReader = new FileReader();\n this.fileReader.addEventListener(\"load\", function (event) {\n return _this.fileReaderDidLoad(event);\n });\n this.fileReader.addEventListener(\"error\", function (event) {\n return _this.fileReaderDidError(event);\n });\n this.readNextChunk();\n }\n }, {\n key: \"fileReaderDidLoad\",\n value: function fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n\n if (!this.readNextChunk()) {\n var binaryDigest = this.md5Buffer.end(true);\n var base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n }, {\n key: \"fileReaderDidError\",\n value: function fileReaderDidError(event) {\n this.callback(\"Error reading \" + this.file.name);\n }\n }, {\n key: \"readNextChunk\",\n value: function readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n var start = this.chunkIndex * this.chunkSize;\n var end = Math.min(start + this.chunkSize, this.file.size);\n var bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n }]);\n return FileChecksum;\n }();\n\n function getMetaValue(name) {\n var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n\n var elements = root.querySelectorAll(selector);\n return toArray$1(elements);\n }\n\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n\n return root.querySelector(selector);\n }\n\n function dispatchEvent(element, type) {\n var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disabled = element.disabled;\n var bubbles = eventInit.bubbles,\n cancelable = eventInit.cancelable,\n detail = eventInit.detail;\n var event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n\n return event;\n }\n\n function toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n\n var BlobRecord = function () {\n function BlobRecord(file, checksum, url) {\n var _this = this;\n\n classCallCheck(this, BlobRecord);\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n var csrfToken = getMetaValue(\"csrf-token\");\n\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n\n createClass(BlobRecord, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n var response = this.response;\n var direct_upload = response.direct_upload;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = {};\n\n for (var key in this.attributes) {\n result[key] = this.attributes[key];\n }\n\n return result;\n }\n }, {\n key: \"status\",\n get: function get$$1() {\n return this.xhr.status;\n }\n }, {\n key: \"response\",\n get: function get$$1() {\n var _xhr = this.xhr,\n responseType = _xhr.responseType,\n response = _xhr.response;\n\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n }]);\n return BlobRecord;\n }();\n\n var BlobUpload = function () {\n function BlobUpload(blob) {\n var _this = this;\n\n classCallCheck(this, BlobUpload);\n this.blob = blob;\n this.file = blob.file;\n var _blob$directUploadDat = blob.directUploadData,\n url = _blob$directUploadDat.url,\n headers = _blob$directUploadDat.headers;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n\n for (var key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n\n createClass(BlobUpload, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n var _xhr = this.xhr,\n status = _xhr.status,\n response = _xhr.response;\n\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n }\n }]);\n return BlobUpload;\n }();\n\n var id = 0;\n\n var DirectUpload = function () {\n function DirectUpload(file, url, delegate) {\n classCallCheck(this, DirectUpload);\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n\n createClass(DirectUpload, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n\n FileChecksum.create(this.file, function (error, checksum) {\n if (error) {\n callback(error);\n return;\n }\n\n var blob = new BlobRecord(_this.file, checksum, _this.url);\n notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create(function (error) {\n if (error) {\n callback(error);\n } else {\n var upload = new BlobUpload(blob);\n notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create(function (error) {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n });\n }\n });\n });\n }\n }]);\n return DirectUpload;\n }();\n\n function notify(object, methodName) {\n if (object && typeof object[methodName] == \"function\") {\n for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n messages[_key - 2] = arguments[_key];\n }\n\n return object[methodName].apply(object, messages);\n }\n }\n\n var DirectUploadController = function () {\n function DirectUploadController(input, file) {\n classCallCheck(this, DirectUploadController);\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n\n createClass(DirectUploadController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n\n var hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(function (error, attributes) {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n\n _this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n\n _this.dispatch(\"end\");\n\n callback(error);\n });\n }\n }, {\n key: \"uploadRequestDidProgress\",\n value: function uploadRequestDidProgress(event) {\n var progress = event.loaded / event.total * 100;\n\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, \"direct-upload:\" + name, {\n detail: detail\n });\n }\n }, {\n key: \"dispatchError\",\n value: function dispatchError(error) {\n var event = this.dispatch(\"error\", {\n error: error\n });\n\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n }, {\n key: \"directUploadWillCreateBlobWithXHR\",\n value: function directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this2 = this;\n\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", function (event) {\n return _this2.uploadRequestDidProgress(event);\n });\n }\n }, {\n key: \"url\",\n get: function get$$1() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n }]);\n return DirectUploadController;\n }();\n\n var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\n var DirectUploadsController = function () {\n function DirectUploadsController(form) {\n classCallCheck(this, DirectUploadsController);\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter(function (input) {\n return input.files.length;\n });\n }\n\n createClass(DirectUploadsController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n\n var controllers = this.createDirectUploadControllers();\n\n var startNextController = function startNextController() {\n var controller = controllers.shift();\n\n if (controller) {\n controller.start(function (error) {\n if (error) {\n callback(error);\n\n _this.dispatch(\"end\");\n } else {\n startNextController();\n }\n });\n } else {\n callback();\n\n _this.dispatch(\"end\");\n }\n };\n\n this.dispatch(\"start\");\n startNextController();\n }\n }, {\n key: \"createDirectUploadControllers\",\n value: function createDirectUploadControllers() {\n var controllers = [];\n this.inputs.forEach(function (input) {\n toArray$1(input.files).forEach(function (file) {\n var controller = new DirectUploadController(input, file);\n controllers.push(controller);\n });\n });\n return controllers;\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n detail: detail\n });\n }\n }]);\n return DirectUploadsController;\n }();\n\n var processingAttribute = \"data-direct-uploads-processing\";\n var submitButtonsByForm = new WeakMap();\n var started = false;\n\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n\n function didClick(event) {\n var target = event.target;\n\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n }\n\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n\n function handleFormSubmissionEvent(event) {\n var form = event.target;\n\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n\n var controller = new DirectUploadsController(form);\n var inputs = controller.inputs;\n\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start(function (error) {\n form.removeAttribute(processingAttribute);\n\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n });\n }\n }\n\n function submitForm(form) {\n var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n\n if (button) {\n var _button = button,\n disabled = _button.disabled;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n\n submitButtonsByForm[\"delete\"](form);\n }\n\n function disable(input) {\n input.disabled = true;\n }\n\n function enable(input) {\n input.disabled = false;\n }\n\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n\n setTimeout(autostart, 1);\n exports.start = start;\n exports.DirectUpload = DirectUpload;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\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}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\nTrix 1.3.1\nCopyright © 2020 Basecamp, LLC\nhttp://trix-editor.org/\n */\n(function () {}).call(this), function () {\n var t;\n null == window.Set && (window.Set = t = function () {\n function t() {\n this.clear();\n }\n\n return t.prototype.clear = function () {\n return this.values = [];\n }, t.prototype.has = function (t) {\n return -1 !== this.values.indexOf(t);\n }, t.prototype.add = function (t) {\n return this.has(t) || this.values.push(t), this;\n }, t.prototype[\"delete\"] = function (t) {\n var e;\n return -1 === (e = this.values.indexOf(t)) ? !1 : (this.values.splice(e, 1), !0);\n }, t.prototype.forEach = function () {\n var t;\n return (t = this.values).forEach.apply(t, arguments);\n }, t;\n }());\n}.call(this), function (t) {\n function e() {}\n\n function n(t, e) {\n return function () {\n t.apply(e, arguments);\n };\n }\n\n function i(t) {\n if (\"object\" != _typeof(this)) throw new TypeError(\"Promises must be constructed via new\");\n if (\"function\" != typeof t) throw new TypeError(\"not a function\");\n this._state = 0, this._handled = !1, this._value = void 0, this._deferreds = [], c(t, this);\n }\n\n function o(t, e) {\n for (; 3 === t._state;) {\n t = t._value;\n }\n\n return 0 === t._state ? void t._deferreds.push(e) : (t._handled = !0, void h(function () {\n var n = 1 === t._state ? e.onFulfilled : e.onRejected;\n if (null === n) return void (1 === t._state ? r : s)(e.promise, t._value);\n var i;\n\n try {\n i = n(t._value);\n } catch (o) {\n return void s(e.promise, o);\n }\n\n r(e.promise, i);\n }));\n }\n\n function r(t, e) {\n try {\n if (e === t) throw new TypeError(\"A promise cannot be resolved with itself.\");\n\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) {\n var o = e.then;\n if (e instanceof i) return t._state = 3, t._value = e, void a(t);\n if (\"function\" == typeof o) return void c(n(o, e), t);\n }\n\n t._state = 1, t._value = e, a(t);\n } catch (r) {\n s(t, r);\n }\n }\n\n function s(t, e) {\n t._state = 2, t._value = e, a(t);\n }\n\n function a(t) {\n 2 === t._state && 0 === t._deferreds.length && setTimeout(function () {\n t._handled || p(t._value);\n }, 1);\n\n for (var e = 0, n = t._deferreds.length; n > e; e++) {\n o(t, t._deferreds[e]);\n }\n\n t._deferreds = null;\n }\n\n function u(t, e, n) {\n this.onFulfilled = \"function\" == typeof t ? t : null, this.onRejected = \"function\" == typeof e ? e : null, this.promise = n;\n }\n\n function c(t, e) {\n var n = !1;\n\n try {\n t(function (t) {\n n || (n = !0, r(e, t));\n }, function (t) {\n n || (n = !0, s(e, t));\n });\n } catch (i) {\n if (n) return;\n n = !0, s(e, i);\n }\n }\n\n var l = setTimeout,\n h = \"function\" == typeof setImmediate && setImmediate || function (t) {\n l(t, 1);\n },\n p = function p(t) {\n \"undefined\" != typeof console && console && console.warn(\"Possible Unhandled Promise Rejection:\", t);\n };\n\n i.prototype[\"catch\"] = function (t) {\n return this.then(null, t);\n }, i.prototype.then = function (t, n) {\n var r = new i(e);\n return o(this, new u(t, n, r)), r;\n }, i.all = function (t) {\n var e = Array.prototype.slice.call(t);\n return new i(function (t, n) {\n function i(r, s) {\n try {\n if (s && (\"object\" == _typeof(s) || \"function\" == typeof s)) {\n var a = s.then;\n if (\"function\" == typeof a) return void a.call(s, function (t) {\n i(r, t);\n }, n);\n }\n\n e[r] = s, 0 === --o && t(e);\n } catch (u) {\n n(u);\n }\n }\n\n if (0 === e.length) return t([]);\n\n for (var o = e.length, r = 0; r < e.length; r++) {\n i(r, e[r]);\n }\n });\n }, i.resolve = function (t) {\n return t && \"object\" == _typeof(t) && t.constructor === i ? t : new i(function (e) {\n e(t);\n });\n }, i.reject = function (t) {\n return new i(function (e, n) {\n n(t);\n });\n }, i.race = function (t) {\n return new i(function (e, n) {\n for (var i = 0, o = t.length; o > i; i++) {\n t[i].then(e, n);\n }\n });\n }, i._setImmediateFn = function (t) {\n h = t;\n }, i._setUnhandledRejectionFn = function (t) {\n p = t;\n }, \"undefined\" != typeof module && module.exports ? module.exports = i : t.Promise || (t.Promise = i);\n}(this), function () {\n var t = \"object\" == _typeof(window.customElements),\n e = \"function\" == typeof document.registerElement,\n n = t || e;\n\n n || (\n /**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n \"undefined\" == typeof WeakMap && !function () {\n var t = Object.defineProperty,\n e = Date.now() % 1e9,\n n = function n() {\n this.name = \"__st\" + (1e9 * Math.random() >>> 0) + (e++ + \"__\");\n };\n\n n.prototype = {\n set: function set(e, n) {\n var i = e[this.name];\n return i && i[0] === e ? i[1] = n : t(e, this.name, {\n value: [e, n],\n writable: !0\n }), this;\n },\n get: function get(t) {\n var e;\n return (e = t[this.name]) && e[0] === t ? e[1] : void 0;\n },\n \"delete\": function _delete(t) {\n var e = t[this.name];\n return e && e[0] === t ? (e[0] = e[1] = void 0, !0) : !1;\n },\n has: function has(t) {\n var e = t[this.name];\n return e ? e[0] === t : !1;\n }\n }, window.WeakMap = n;\n }(), function (t) {\n function e(t) {\n A.push(t), b || (b = !0, g(i));\n }\n\n function n(t) {\n return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(t) || t;\n }\n\n function i() {\n b = !1;\n var t = A;\n A = [], t.sort(function (t, e) {\n return t.uid_ - e.uid_;\n });\n var e = !1;\n t.forEach(function (t) {\n var n = t.takeRecords();\n o(t), n.length && (t.callback_(n, t), e = !0);\n }), e && i();\n }\n\n function o(t) {\n t.nodes_.forEach(function (e) {\n var n = m.get(e);\n n && n.forEach(function (e) {\n e.observer === t && e.removeTransientObservers();\n });\n });\n }\n\n function r(t, e) {\n for (var n = t; n; n = n.parentNode) {\n var i = m.get(n);\n if (i) for (var o = 0; o < i.length; o++) {\n var r = i[o],\n s = r.options;\n\n if (n === t || s.subtree) {\n var a = e(s);\n a && r.enqueue(a);\n }\n }\n }\n }\n\n function s(t) {\n this.callback_ = t, this.nodes_ = [], this.records_ = [], this.uid_ = ++C;\n }\n\n function a(t, e) {\n this.type = t, this.target = e, this.addedNodes = [], this.removedNodes = [], this.previousSibling = null, this.nextSibling = null, this.attributeName = null, this.attributeNamespace = null, this.oldValue = null;\n }\n\n function u(t) {\n var e = new a(t.type, t.target);\n return e.addedNodes = t.addedNodes.slice(), e.removedNodes = t.removedNodes.slice(), e.previousSibling = t.previousSibling, e.nextSibling = t.nextSibling, e.attributeName = t.attributeName, e.attributeNamespace = t.attributeNamespace, e.oldValue = t.oldValue, e;\n }\n\n function c(t, e) {\n return x = new a(t, e);\n }\n\n function l(t) {\n return w ? w : (w = u(x), w.oldValue = t, w);\n }\n\n function h() {\n x = w = void 0;\n }\n\n function p(t) {\n return t === w || t === x;\n }\n\n function d(t, e) {\n return t === e ? t : w && p(t) ? w : null;\n }\n\n function f(t, e, n) {\n this.observer = t, this.target = e, this.options = n, this.transientObservedNodes = [];\n }\n\n if (!t.JsMutationObserver) {\n var g,\n m = new WeakMap();\n if (/Trident|Edge/.test(navigator.userAgent)) g = setTimeout;else if (window.setImmediate) g = window.setImmediate;else {\n var v = [],\n y = String(Math.random());\n window.addEventListener(\"message\", function (t) {\n if (t.data === y) {\n var e = v;\n v = [], e.forEach(function (t) {\n t();\n });\n }\n }), g = function g(t) {\n v.push(t), window.postMessage(y, \"*\");\n };\n }\n var b = !1,\n A = [],\n C = 0;\n s.prototype = {\n observe: function observe(t, e) {\n if (t = n(t), !e.childList && !e.attributes && !e.characterData || e.attributeOldValue && !e.attributes || e.attributeFilter && e.attributeFilter.length && !e.attributes || e.characterDataOldValue && !e.characterData) throw new SyntaxError();\n var i = m.get(t);\n i || m.set(t, i = []);\n\n for (var o, r = 0; r < i.length; r++) {\n if (i[r].observer === this) {\n o = i[r], o.removeListeners(), o.options = e;\n break;\n }\n }\n\n o || (o = new f(this, t, e), i.push(o), this.nodes_.push(t)), o.addListeners();\n },\n disconnect: function disconnect() {\n this.nodes_.forEach(function (t) {\n for (var e = m.get(t), n = 0; n < e.length; n++) {\n var i = e[n];\n\n if (i.observer === this) {\n i.removeListeners(), e.splice(n, 1);\n break;\n }\n }\n }, this), this.records_ = [];\n },\n takeRecords: function takeRecords() {\n var t = this.records_;\n return this.records_ = [], t;\n }\n };\n var x, w;\n f.prototype = {\n enqueue: function enqueue(t) {\n var n = this.observer.records_,\n i = n.length;\n\n if (n.length > 0) {\n var o = n[i - 1],\n r = d(o, t);\n if (r) return void (n[i - 1] = r);\n } else e(this.observer);\n\n n[i] = t;\n },\n addListeners: function addListeners() {\n this.addListeners_(this.target);\n },\n addListeners_: function addListeners_(t) {\n var e = this.options;\n e.attributes && t.addEventListener(\"DOMAttrModified\", this, !0), e.characterData && t.addEventListener(\"DOMCharacterDataModified\", this, !0), e.childList && t.addEventListener(\"DOMNodeInserted\", this, !0), (e.childList || e.subtree) && t.addEventListener(\"DOMNodeRemoved\", this, !0);\n },\n removeListeners: function removeListeners() {\n this.removeListeners_(this.target);\n },\n removeListeners_: function removeListeners_(t) {\n var e = this.options;\n e.attributes && t.removeEventListener(\"DOMAttrModified\", this, !0), e.characterData && t.removeEventListener(\"DOMCharacterDataModified\", this, !0), e.childList && t.removeEventListener(\"DOMNodeInserted\", this, !0), (e.childList || e.subtree) && t.removeEventListener(\"DOMNodeRemoved\", this, !0);\n },\n addTransientObserver: function addTransientObserver(t) {\n if (t !== this.target) {\n this.addListeners_(t), this.transientObservedNodes.push(t);\n var e = m.get(t);\n e || m.set(t, e = []), e.push(this);\n }\n },\n removeTransientObservers: function removeTransientObservers() {\n var t = this.transientObservedNodes;\n this.transientObservedNodes = [], t.forEach(function (t) {\n this.removeListeners_(t);\n\n for (var e = m.get(t), n = 0; n < e.length; n++) {\n if (e[n] === this) {\n e.splice(n, 1);\n break;\n }\n }\n }, this);\n },\n handleEvent: function handleEvent(t) {\n switch (t.stopImmediatePropagation(), t.type) {\n case \"DOMAttrModified\":\n var e = t.attrName,\n n = t.relatedNode.namespaceURI,\n i = t.target,\n o = new c(\"attributes\", i);\n o.attributeName = e, o.attributeNamespace = n;\n var s = t.attrChange === MutationEvent.ADDITION ? null : t.prevValue;\n r(i, function (t) {\n return !t.attributes || t.attributeFilter && t.attributeFilter.length && -1 === t.attributeFilter.indexOf(e) && -1 === t.attributeFilter.indexOf(n) ? void 0 : t.attributeOldValue ? l(s) : o;\n });\n break;\n\n case \"DOMCharacterDataModified\":\n var i = t.target,\n o = c(\"characterData\", i),\n s = t.prevValue;\n r(i, function (t) {\n return t.characterData ? t.characterDataOldValue ? l(s) : o : void 0;\n });\n break;\n\n case \"DOMNodeRemoved\":\n this.addTransientObserver(t.target);\n\n case \"DOMNodeInserted\":\n var a,\n u,\n p = t.target;\n \"DOMNodeInserted\" === t.type ? (a = [p], u = []) : (a = [], u = [p]);\n var d = p.previousSibling,\n f = p.nextSibling,\n o = c(\"childList\", t.target.parentNode);\n o.addedNodes = a, o.removedNodes = u, o.previousSibling = d, o.nextSibling = f, r(t.relatedNode, function (t) {\n return t.childList ? o : void 0;\n });\n }\n\n h();\n }\n }, t.JsMutationObserver = s, t.MutationObserver || (t.MutationObserver = s, s._isPolyfilled = !0);\n }\n }(self), function () {\n \"use strict\";\n\n if (!window.performance || !window.performance.now) {\n var t = Date.now();\n window.performance = {\n now: function now() {\n return Date.now() - t;\n }\n };\n }\n\n window.requestAnimationFrame || (window.requestAnimationFrame = function () {\n var t = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\n return t ? function (e) {\n return t(function () {\n e(performance.now());\n });\n } : function (t) {\n return window.setTimeout(t, 1e3 / 60);\n };\n }()), window.cancelAnimationFrame || (window.cancelAnimationFrame = function () {\n return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function (t) {\n clearTimeout(t);\n };\n }());\n\n var e = function () {\n var t = document.createEvent(\"Event\");\n return t.initEvent(\"foo\", !0, !0), t.preventDefault(), t.defaultPrevented;\n }();\n\n if (!e) {\n var n = Event.prototype.preventDefault;\n\n Event.prototype.preventDefault = function () {\n this.cancelable && (n.call(this), Object.defineProperty(this, \"defaultPrevented\", {\n get: function get() {\n return !0;\n },\n configurable: !0\n }));\n };\n }\n\n var i = /Trident/.test(navigator.userAgent);\n\n if ((!window.CustomEvent || i && \"function\" != typeof window.CustomEvent) && (window.CustomEvent = function (t, e) {\n e = e || {};\n var n = document.createEvent(\"CustomEvent\");\n return n.initCustomEvent(t, Boolean(e.bubbles), Boolean(e.cancelable), e.detail), n;\n }, window.CustomEvent.prototype = window.Event.prototype), !window.Event || i && \"function\" != typeof window.Event) {\n var o = window.Event;\n window.Event = function (t, e) {\n e = e || {};\n var n = document.createEvent(\"Event\");\n return n.initEvent(t, Boolean(e.bubbles), Boolean(e.cancelable)), n;\n }, window.Event.prototype = o.prototype;\n }\n }(window.WebComponents), window.CustomElements = window.CustomElements || {\n flags: {}\n }, function (t) {\n var e = t.flags,\n n = [],\n i = function i(t) {\n n.push(t);\n },\n o = function o() {\n n.forEach(function (e) {\n e(t);\n });\n };\n\n t.addModule = i, t.initializeModules = o, t.hasNative = Boolean(document.registerElement), t.isIE = /Trident/.test(navigator.userAgent), t.useNative = !e.register && t.hasNative && !window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative);\n }(window.CustomElements), window.CustomElements.addModule(function (t) {\n function e(t, e) {\n n(t, function (t) {\n return e(t) ? !0 : void i(t, e);\n }), i(t, e);\n }\n\n function n(t, e, i) {\n var o = t.firstElementChild;\n if (!o) for (o = t.firstChild; o && o.nodeType !== Node.ELEMENT_NODE;) {\n o = o.nextSibling;\n }\n\n for (; o;) {\n e(o, i) !== !0 && n(o, e, i), o = o.nextElementSibling;\n }\n\n return null;\n }\n\n function i(t, n) {\n for (var i = t.shadowRoot; i;) {\n e(i, n), i = i.olderShadowRoot;\n }\n }\n\n function o(t, e) {\n r(t, e, []);\n }\n\n function r(t, e, n) {\n if (t = window.wrap(t), !(n.indexOf(t) >= 0)) {\n n.push(t);\n\n for (var i, o = t.querySelectorAll(\"link[rel=\" + s + \"]\"), a = 0, u = o.length; u > a && (i = o[a]); a++) {\n i[\"import\"] && r(i[\"import\"], e, n);\n }\n\n e(t);\n }\n }\n\n var s = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYPE : \"none\";\n t.forDocumentTree = o, t.forSubtree = e;\n }), window.CustomElements.addModule(function (t) {\n function e(t, e) {\n return n(t, e) || i(t, e);\n }\n\n function n(e, n) {\n return t.upgrade(e, n) ? !0 : void (n && s(e));\n }\n\n function i(t, e) {\n b(t, function (t) {\n return n(t, e) ? !0 : void 0;\n });\n }\n\n function o(t) {\n w.push(t), x || (x = !0, setTimeout(r));\n }\n\n function r() {\n x = !1;\n\n for (var t, e = w, n = 0, i = e.length; i > n && (t = e[n]); n++) {\n t();\n }\n\n w = [];\n }\n\n function s(t) {\n C ? o(function () {\n a(t);\n }) : a(t);\n }\n\n function a(t) {\n t.__upgraded__ && !t.__attached && (t.__attached = !0, t.attachedCallback && t.attachedCallback());\n }\n\n function u(t) {\n c(t), b(t, function (t) {\n c(t);\n });\n }\n\n function c(t) {\n C ? o(function () {\n l(t);\n }) : l(t);\n }\n\n function l(t) {\n t.__upgraded__ && t.__attached && (t.__attached = !1, t.detachedCallback && t.detachedCallback());\n }\n\n function h(t) {\n for (var e = t, n = window.wrap(document); e;) {\n if (e == n) return !0;\n e = e.parentNode || e.nodeType === Node.DOCUMENT_FRAGMENT_NODE && e.host;\n }\n }\n\n function p(t) {\n if (t.shadowRoot && !t.shadowRoot.__watched) {\n y.dom && console.log(\"watching shadow-root for: \", t.localName);\n\n for (var e = t.shadowRoot; e;) {\n g(e), e = e.olderShadowRoot;\n }\n }\n }\n\n function d(t, n) {\n if (y.dom) {\n var i = n[0];\n\n if (i && \"childList\" === i.type && i.addedNodes && i.addedNodes) {\n for (var o = i.addedNodes[0]; o && o !== document && !o.host;) {\n o = o.parentNode;\n }\n\n var r = o && (o.URL || o._URL || o.host && o.host.localName) || \"\";\n r = r.split(\"/?\").shift().split(\"/\").pop();\n }\n\n console.group(\"mutations (%d) [%s]\", n.length, r || \"\");\n }\n\n var s = h(t);\n n.forEach(function (t) {\n \"childList\" === t.type && (E(t.addedNodes, function (t) {\n t.localName && e(t, s);\n }), E(t.removedNodes, function (t) {\n t.localName && u(t);\n }));\n }), y.dom && console.groupEnd();\n }\n\n function f(t) {\n for (t = window.wrap(t), t || (t = window.wrap(document)); t.parentNode;) {\n t = t.parentNode;\n }\n\n var e = t.__observer;\n e && (d(t, e.takeRecords()), r());\n }\n\n function g(t) {\n if (!t.__observer) {\n var e = new MutationObserver(d.bind(this, t));\n e.observe(t, {\n childList: !0,\n subtree: !0\n }), t.__observer = e;\n }\n }\n\n function m(t) {\n t = window.wrap(t), y.dom && console.group(\"upgradeDocument: \", t.baseURI.split(\"/\").pop());\n var n = t === window.wrap(document);\n e(t, n), g(t), y.dom && console.groupEnd();\n }\n\n function v(t) {\n A(t, m);\n }\n\n var y = t.flags,\n b = t.forSubtree,\n A = t.forDocumentTree,\n C = window.MutationObserver._isPolyfilled && y[\"throttle-attached\"];\n t.hasPolyfillMutations = C, t.hasThrottledAttached = C;\n var x = !1,\n w = [],\n E = Array.prototype.forEach.call.bind(Array.prototype.forEach),\n S = Element.prototype.createShadowRoot;\n S && (Element.prototype.createShadowRoot = function () {\n var t = S.call(this);\n return window.CustomElements.watchShadow(this), t;\n }), t.watchShadow = p, t.upgradeDocumentTree = v, t.upgradeDocument = m, t.upgradeSubtree = i, t.upgradeAll = e, t.attached = s, t.takeRecords = f;\n }), window.CustomElements.addModule(function (t) {\n function e(e, i) {\n if (\"template\" === e.localName && window.HTMLTemplateElement && HTMLTemplateElement.decorate && HTMLTemplateElement.decorate(e), !e.__upgraded__ && e.nodeType === Node.ELEMENT_NODE) {\n var o = e.getAttribute(\"is\"),\n r = t.getRegisteredDefinition(e.localName) || t.getRegisteredDefinition(o);\n if (r && (o && r.tag == e.localName || !o && !r[\"extends\"])) return n(e, r, i);\n }\n }\n\n function n(e, n, o) {\n return s.upgrade && console.group(\"upgrade:\", e.localName), n.is && e.setAttribute(\"is\", n.is), i(e, n), e.__upgraded__ = !0, r(e), o && t.attached(e), t.upgradeSubtree(e, o), s.upgrade && console.groupEnd(), e;\n }\n\n function i(t, e) {\n Object.__proto__ ? t.__proto__ = e.prototype : (o(t, e.prototype, e[\"native\"]), t.__proto__ = e.prototype);\n }\n\n function o(t, e, n) {\n for (var i = {}, o = e; o !== n && o !== HTMLElement.prototype;) {\n for (var r, s = Object.getOwnPropertyNames(o), a = 0; r = s[a]; a++) {\n i[r] || (Object.defineProperty(t, r, Object.getOwnPropertyDescriptor(o, r)), i[r] = 1);\n }\n\n o = Object.getPrototypeOf(o);\n }\n }\n\n function r(t) {\n t.createdCallback && t.createdCallback();\n }\n\n var s = t.flags;\n t.upgrade = e, t.upgradeWithDefinition = n, t.implementPrototype = i;\n }), window.CustomElements.addModule(function (t) {\n function e(e, i) {\n var u = i || {};\n if (!e) throw new Error(\"document.registerElement: first argument `name` must not be empty\");\n if (e.indexOf(\"-\") < 0) throw new Error(\"document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '\" + String(e) + \"'.\");\n if (o(e)) throw new Error(\"Failed to execute 'registerElement' on 'Document': Registration failed for type '\" + String(e) + \"'. The type name is invalid.\");\n if (c(e)) throw new Error(\"DuplicateDefinitionError: a type with name '\" + String(e) + \"' is already registered\");\n return u.prototype || (u.prototype = Object.create(HTMLElement.prototype)), u.__name = e.toLowerCase(), u[\"extends\"] && (u[\"extends\"] = u[\"extends\"].toLowerCase()), u.lifecycle = u.lifecycle || {}, u.ancestry = r(u[\"extends\"]), s(u), a(u), n(u.prototype), l(u.__name, u), u.ctor = h(u), u.ctor.prototype = u.prototype, u.prototype.constructor = u.ctor, t.ready && m(document), u.ctor;\n }\n\n function n(t) {\n if (!t.setAttribute._polyfilled) {\n var e = t.setAttribute;\n\n t.setAttribute = function (t, n) {\n i.call(this, t, n, e);\n };\n\n var n = t.removeAttribute;\n t.removeAttribute = function (t) {\n i.call(this, t, null, n);\n }, t.setAttribute._polyfilled = !0;\n }\n }\n\n function i(t, e, n) {\n t = t.toLowerCase();\n var i = this.getAttribute(t);\n n.apply(this, arguments);\n var o = this.getAttribute(t);\n this.attributeChangedCallback && o !== i && this.attributeChangedCallback(t, i, o);\n }\n\n function o(t) {\n for (var e = 0; e < C.length; e++) {\n if (t === C[e]) return !0;\n }\n }\n\n function r(t) {\n var e = c(t);\n return e ? r(e[\"extends\"]).concat([e]) : [];\n }\n\n function s(t) {\n for (var e, n = t[\"extends\"], i = 0; e = t.ancestry[i]; i++) {\n n = e.is && e.tag;\n }\n\n t.tag = n || t.__name, n && (t.is = t.__name);\n }\n\n function a(t) {\n if (!Object.__proto__) {\n var e = HTMLElement.prototype;\n\n if (t.is) {\n var n = document.createElement(t.tag);\n e = Object.getPrototypeOf(n);\n }\n\n for (var i, o = t.prototype, r = !1; o;) {\n o == e && (r = !0), i = Object.getPrototypeOf(o), i && (o.__proto__ = i), o = i;\n }\n\n r || console.warn(t.tag + \" prototype not found in prototype chain for \" + t.is), t[\"native\"] = e;\n }\n }\n\n function u(t) {\n return y(E(t.tag), t);\n }\n\n function c(t) {\n return t ? x[t.toLowerCase()] : void 0;\n }\n\n function l(t, e) {\n x[t] = e;\n }\n\n function h(t) {\n return function () {\n return u(t);\n };\n }\n\n function p(t, e, n) {\n return t === w ? d(e, n) : S(t, e);\n }\n\n function d(t, e) {\n t && (t = t.toLowerCase()), e && (e = e.toLowerCase());\n var n = c(e || t);\n\n if (n) {\n if (t == n.tag && e == n.is) return new n.ctor();\n if (!e && !n.is) return new n.ctor();\n }\n\n var i;\n return e ? (i = d(t), i.setAttribute(\"is\", e), i) : (i = E(t), t.indexOf(\"-\") >= 0 && b(i, HTMLElement), i);\n }\n\n function f(t, e) {\n var n = t[e];\n\n t[e] = function () {\n var t = n.apply(this, arguments);\n return v(t), t;\n };\n }\n\n var g,\n m = (t.isIE, t.upgradeDocumentTree),\n v = t.upgradeAll,\n y = t.upgradeWithDefinition,\n b = t.implementPrototype,\n A = t.useNative,\n C = [\"annotation-xml\", \"color-profile\", \"font-face\", \"font-face-src\", \"font-face-uri\", \"font-face-format\", \"font-face-name\", \"missing-glyph\"],\n x = {},\n w = \"http://www.w3.org/1999/xhtml\",\n E = document.createElement.bind(document),\n S = document.createElementNS.bind(document);\n g = Object.__proto__ || A ? function (t, e) {\n return t instanceof e;\n } : function (t, e) {\n if (t instanceof e) return !0;\n\n for (var n = t; n;) {\n if (n === e.prototype) return !0;\n n = n.__proto__;\n }\n\n return !1;\n }, f(Node.prototype, \"cloneNode\"), f(document, \"importNode\"), document.registerElement = e, document.createElement = d, document.createElementNS = p, t.registry = x, t[\"instanceof\"] = g, t.reservedTagList = C, t.getRegisteredDefinition = c, document.register = document.registerElement;\n }), function (t) {\n function e() {\n r(window.wrap(document)), window.CustomElements.ready = !0;\n\n var t = window.requestAnimationFrame || function (t) {\n setTimeout(t, 16);\n };\n\n t(function () {\n setTimeout(function () {\n window.CustomElements.readyTime = Date.now(), window.HTMLImports && (window.CustomElements.elapsed = window.CustomElements.readyTime - window.HTMLImports.readyTime), document.dispatchEvent(new CustomEvent(\"WebComponentsReady\", {\n bubbles: !0\n }));\n });\n });\n }\n\n var n = t.useNative,\n i = t.initializeModules;\n\n if (t.isIE, n) {\n var o = function o() {};\n\n t.watchShadow = o, t.upgrade = o, t.upgradeAll = o, t.upgradeDocumentTree = o, t.upgradeSubtree = o, t.takeRecords = o, t[\"instanceof\"] = function (t, e) {\n return t instanceof e;\n };\n } else i();\n\n var r = t.upgradeDocumentTree,\n s = t.upgradeDocument;\n if (window.wrap || (window.ShadowDOMPolyfill ? (window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded, window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded) : window.wrap = window.unwrap = function (t) {\n return t;\n }), window.HTMLImports && (window.HTMLImports.__importsParsingHook = function (t) {\n t[\"import\"] && s(wrap(t[\"import\"]));\n }), \"complete\" === document.readyState || t.flags.eager) e();else if (\"interactive\" !== document.readyState || window.attachEvent || window.HTMLImports && !window.HTMLImports.ready) {\n var a = window.HTMLImports && !window.HTMLImports.ready ? \"HTMLImportsLoaded\" : \"DOMContentLoaded\";\n window.addEventListener(a, e);\n } else e();\n }(window.CustomElements));\n}.call(this), function () {}.call(this), function () {\n var t = this;\n (function () {\n (function () {\n this.Trix = {\n VERSION: \"1.3.1\",\n ZERO_WIDTH_SPACE: \"\\uFEFF\",\n NON_BREAKING_SPACE: \"\\xa0\",\n OBJECT_REPLACEMENT_CHARACTER: \"\\uFFFC\",\n browser: {\n composesExistingText: /Android.*Chrome/.test(navigator.userAgent),\n forcesObjectResizing: /Trident.*rv:11/.test(navigator.userAgent),\n supportsInputEvents: function () {\n var t, e, n, i;\n if (\"undefined\" == typeof InputEvent) return !1;\n\n for (i = [\"data\", \"getTargetRanges\", \"inputType\"], t = 0, e = i.length; e > t; t++) {\n if (n = i[t], !(n in InputEvent.prototype)) return !1;\n }\n\n return !0;\n }()\n },\n config: {}\n };\n }).call(this);\n }).call(t);\n var e = t.Trix;\n (function () {\n (function () {\n e.BasicObject = function () {\n function t() {}\n\n var e, n, i;\n return t.proxyMethod = function (t) {\n var i, o, r, s, a;\n return r = n(t), i = r.name, s = r.toMethod, a = r.toProperty, o = r.optional, this.prototype[i] = function () {\n var t, n;\n return t = null != s ? o ? \"function\" == typeof this[s] ? this[s]() : void 0 : this[s]() : null != a ? this[a] : void 0, o ? (n = null != t ? t[i] : void 0, null != n ? e.call(n, t, arguments) : void 0) : (n = t[i], e.call(n, t, arguments));\n };\n }, n = function n(t) {\n var e, n;\n if (!(n = t.match(i))) throw new Error(\"can't parse @proxyMethod expression: \" + t);\n return e = {\n name: n[4]\n }, null != n[2] ? e.toMethod = n[1] : e.toProperty = n[1], null != n[3] && (e.optional = !0), e;\n }, e = Function.prototype.apply, i = /^(.+?)(\\(\\))?(\\?)?\\.(.+?)$/, t;\n }();\n }).call(this), function () {\n var t = function t(_t, e) {\n function i() {\n this.constructor = _t;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t.prototype = new i(), _t.__super__ = e.prototype, _t;\n },\n n = {}.hasOwnProperty;\n\n e.Object = function (n) {\n function i() {\n this.id = ++o;\n }\n\n var o;\n return t(i, n), o = 0, i.fromJSONString = function (t) {\n return this.fromJSON(JSON.parse(t));\n }, i.prototype.hasSameConstructorAs = function (t) {\n return this.constructor === (null != t ? t.constructor : void 0);\n }, i.prototype.isEqualTo = function (t) {\n return this === t;\n }, i.prototype.inspect = function () {\n var t, e, n;\n return t = function () {\n var t, i, o;\n i = null != (t = this.contentsForInspection()) ? t : {}, o = [];\n\n for (e in i) {\n n = i[e], o.push(e + \"=\" + n);\n }\n\n return o;\n }.call(this), \"#<\" + this.constructor.name + \":\" + this.id + (t.length ? \" \" + t.join(\", \") : \"\") + \">\";\n }, i.prototype.contentsForInspection = function () {}, i.prototype.toJSONString = function () {\n return JSON.stringify(this);\n }, i.prototype.toUTF16String = function () {\n return e.UTF16String.box(this);\n }, i.prototype.getCacheKey = function () {\n return this.id.toString();\n }, i;\n }(e.BasicObject);\n }.call(this), function () {\n e.extend = function (t) {\n var e, n;\n\n for (e in t) {\n n = t[e], this[e] = n;\n }\n\n return this;\n };\n }.call(this), function () {\n e.extend({\n defer: function defer(t) {\n return setTimeout(t, 1);\n }\n });\n }.call(this), function () {\n var t, n;\n e.extend({\n normalizeSpaces: function normalizeSpaces(t) {\n return t.replace(RegExp(\"\" + e.ZERO_WIDTH_SPACE, \"g\"), \"\").replace(RegExp(\"\" + e.NON_BREAKING_SPACE, \"g\"), \" \");\n },\n normalizeNewlines: function normalizeNewlines(t) {\n return t.replace(/\\r\\n/g, \"\\n\");\n },\n breakableWhitespacePattern: RegExp(\"[^\\\\S\" + e.NON_BREAKING_SPACE + \"]\"),\n squishBreakableWhitespace: function squishBreakableWhitespace(t) {\n return t.replace(RegExp(\"\" + e.breakableWhitespacePattern.source, \"g\"), \" \").replace(/\\ {2,}/g, \" \");\n },\n summarizeStringChange: function summarizeStringChange(t, i) {\n var o, r, s, a;\n return t = e.UTF16String.box(t), i = e.UTF16String.box(i), i.length < t.length ? (r = n(t, i), a = r[0], o = r[1]) : (s = n(i, t), o = s[0], a = s[1]), {\n added: o,\n removed: a\n };\n }\n }), n = function n(_n, i) {\n var o, r, s, a, u;\n return _n.isEqualTo(i) ? [\"\", \"\"] : (r = t(_n, i), a = r.utf16String.length, s = a ? (u = r.offset, r, o = _n.codepoints.slice(0, u).concat(_n.codepoints.slice(u + a)), t(i, e.UTF16String.fromCodepoints(o))) : t(i, _n), [r.utf16String.toString(), s.utf16String.toString()]);\n }, t = function t(_t2, e) {\n var n, i, o;\n\n for (n = 0, i = _t2.length, o = e.length; i > n && _t2.charAt(n).isEqualTo(e.charAt(n));) {\n n++;\n }\n\n for (; i > n + 1 && _t2.charAt(i - 1).isEqualTo(e.charAt(o - 1));) {\n i--, o--;\n }\n\n return {\n utf16String: _t2.slice(n, i),\n offset: n\n };\n };\n }.call(this), function () {\n e.extend({\n copyObject: function copyObject(t) {\n var e, n, i;\n null == t && (t = {}), n = {};\n\n for (e in t) {\n i = t[e], n[e] = i;\n }\n\n return n;\n },\n objectsAreEqual: function objectsAreEqual(t, e) {\n var n, i;\n if (null == t && (t = {}), null == e && (e = {}), Object.keys(t).length !== Object.keys(e).length) return !1;\n\n for (n in t) {\n if (i = t[n], i !== e[n]) return !1;\n }\n\n return !0;\n }\n });\n }.call(this), function () {\n var t = [].slice;\n e.extend({\n arraysAreEqual: function arraysAreEqual(t, e) {\n var n, i, o, r;\n if (null == t && (t = []), null == e && (e = []), t.length !== e.length) return !1;\n\n for (i = n = 0, o = t.length; o > n; i = ++n) {\n if (r = t[i], r !== e[i]) return !1;\n }\n\n return !0;\n },\n arrayStartsWith: function arrayStartsWith(t, n) {\n return null == t && (t = []), null == n && (n = []), e.arraysAreEqual(t.slice(0, n.length), n);\n },\n spliceArray: function spliceArray() {\n var e, n, i;\n return n = arguments[0], e = 2 <= arguments.length ? t.call(arguments, 1) : [], i = n.slice(0), i.splice.apply(i, e), i;\n },\n summarizeArrayChange: function summarizeArrayChange(t, e) {\n var n, i, o, r, s, a, u, c, l, h, p;\n\n for (null == t && (t = []), null == e && (e = []), n = [], h = [], o = new Set(), r = 0, u = t.length; u > r; r++) {\n p = t[r], o.add(p);\n }\n\n for (i = new Set(), s = 0, c = e.length; c > s; s++) {\n p = e[s], i.add(p), o.has(p) || n.push(p);\n }\n\n for (a = 0, l = t.length; l > a; a++) {\n p = t[a], i.has(p) || h.push(p);\n }\n\n return {\n added: n,\n removed: h\n };\n }\n });\n }.call(this), function () {\n var t, n, i, o;\n t = null, n = null, o = null, i = null, e.extend({\n getAllAttributeNames: function getAllAttributeNames() {\n return null != t ? t : t = e.getTextAttributeNames().concat(e.getBlockAttributeNames());\n },\n getBlockConfig: function getBlockConfig(t) {\n return e.config.blockAttributes[t];\n },\n getBlockAttributeNames: function getBlockAttributeNames() {\n return null != n ? n : n = Object.keys(e.config.blockAttributes);\n },\n getTextConfig: function getTextConfig(t) {\n return e.config.textAttributes[t];\n },\n getTextAttributeNames: function getTextAttributeNames() {\n return null != o ? o : o = Object.keys(e.config.textAttributes);\n },\n getListAttributeNames: function getListAttributeNames() {\n var t, n;\n return null != i ? i : i = function () {\n var i, o;\n i = e.config.blockAttributes, o = [];\n\n for (t in i) {\n n = i[t].listAttribute, null != n && o.push(n);\n }\n\n return o;\n }();\n }\n });\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r,\n s = [].indexOf || function (t) {\n for (var e = 0, n = this.length; n > e; e++) {\n if (e in this && this[e] === t) return e;\n }\n\n return -1;\n };\n\n t = document.documentElement, n = null != (i = null != (o = null != (r = t.matchesSelector) ? r : t.webkitMatchesSelector) ? o : t.msMatchesSelector) ? i : t.mozMatchesSelector, e.extend({\n handleEvent: function handleEvent(n, i) {\n var o, r, _s, a, u, c, l, h, p, d, f, g;\n\n return h = null != i ? i : {}, c = h.onElement, u = h.matchingSelector, g = h.withCallback, a = h.inPhase, l = h.preventDefault, d = h.times, r = null != c ? c : t, p = u, o = g, f = \"capturing\" === a, _s = function s(t) {\n var n;\n return null != d && 0 === --d && _s.destroy(), n = e.findClosestElementFromNode(t.target, {\n matchingSelector: p\n }), null != n && (null != g && g.call(n, t, n), l) ? t.preventDefault() : void 0;\n }, _s.destroy = function () {\n return r.removeEventListener(n, _s, f);\n }, r.addEventListener(n, _s, f), _s;\n },\n handleEventOnce: function handleEventOnce(t, n) {\n return null == n && (n = {}), n.times = 1, e.handleEvent(t, n);\n },\n triggerEvent: function triggerEvent(n, i) {\n var o, r, s, a, u, c, l;\n return l = null != i ? i : {}, c = l.onElement, r = l.bubbles, s = l.cancelable, o = l.attributes, a = null != c ? c : t, r = r !== !1, s = s !== !1, u = document.createEvent(\"Events\"), u.initEvent(n, r, s), null != o && e.extend.call(u, o), a.dispatchEvent(u);\n },\n elementMatchesSelector: function elementMatchesSelector(t, e) {\n return 1 === (null != t ? t.nodeType : void 0) ? n.call(t, e) : void 0;\n },\n findClosestElementFromNode: function findClosestElementFromNode(t, n) {\n var i, o, r;\n\n for (o = null != n ? n : {}, i = o.matchingSelector, r = o.untilNode; null != t && t.nodeType !== Node.ELEMENT_NODE;) {\n t = t.parentNode;\n }\n\n if (null != t) {\n if (null == i) return t;\n if (t.closest && null == r) return t.closest(i);\n\n for (; t && t !== r;) {\n if (e.elementMatchesSelector(t, i)) return t;\n t = t.parentNode;\n }\n }\n },\n findInnerElement: function findInnerElement(t) {\n for (; null != t ? t.firstElementChild : void 0;) {\n t = t.firstElementChild;\n }\n\n return t;\n },\n innerElementIsActive: function innerElementIsActive(t) {\n return document.activeElement !== t && e.elementContainsNode(t, document.activeElement);\n },\n elementContainsNode: function elementContainsNode(t, e) {\n if (t && e) for (; e;) {\n if (e === t) return !0;\n e = e.parentNode;\n }\n },\n findNodeFromContainerAndOffset: function findNodeFromContainerAndOffset(t, e) {\n var n;\n if (t) return t.nodeType === Node.TEXT_NODE ? t : 0 === e ? null != (n = t.firstChild) ? n : t : t.childNodes.item(e - 1);\n },\n findElementFromContainerAndOffset: function findElementFromContainerAndOffset(t, n) {\n var i;\n return i = e.findNodeFromContainerAndOffset(t, n), e.findClosestElementFromNode(i);\n },\n findChildIndexOfNode: function findChildIndexOfNode(t) {\n var e;\n\n if (null != t ? t.parentNode : void 0) {\n for (e = 0; t = t.previousSibling;) {\n e++;\n }\n\n return e;\n }\n },\n removeNode: function removeNode(t) {\n var e;\n return null != t && null != (e = t.parentNode) ? e.removeChild(t) : void 0;\n },\n walkTree: function walkTree(t, e) {\n var n, i, o, r, s;\n return o = null != e ? e : {}, i = o.onlyNodesOfType, r = o.usingFilter, n = o.expandEntityReferences, s = function () {\n switch (i) {\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 }(), document.createTreeWalker(t, s, null != r ? r : null, n === !0);\n },\n tagName: function tagName(t) {\n var e;\n return null != t && null != (e = t.tagName) ? e.toLowerCase() : void 0;\n },\n makeElement: function makeElement(t, e) {\n var n, i, o, r, s, a, u, c, l, h, p, d, f, g;\n\n if (null == e && (e = {}), \"object\" == _typeof(t) ? (e = t, t = e.tagName) : e = {\n attributes: e\n }, o = document.createElement(t), null != e.editable && (null == e.attributes && (e.attributes = {}), e.attributes.contenteditable = e.editable), e.attributes) {\n l = e.attributes;\n\n for (a in l) {\n g = l[a], o.setAttribute(a, g);\n }\n }\n\n if (e.style) {\n h = e.style;\n\n for (a in h) {\n g = h[a], o.style[a] = g;\n }\n }\n\n if (e.data) {\n p = e.data;\n\n for (a in p) {\n g = p[a], o.dataset[a] = g;\n }\n }\n\n if (e.className) for (d = e.className.split(\" \"), r = 0, u = d.length; u > r; r++) {\n i = d[r], o.classList.add(i);\n }\n if (e.textContent && (o.textContent = e.textContent), e.childNodes) for (f = [].concat(e.childNodes), s = 0, c = f.length; c > s; s++) {\n n = f[s], o.appendChild(n);\n }\n return o;\n },\n getBlockTagNames: function getBlockTagNames() {\n var t, n;\n return null != e.blockTagNames ? e.blockTagNames : e.blockTagNames = function () {\n var i, o;\n i = e.config.blockAttributes, o = [];\n\n for (t in i) {\n n = i[t].tagName, n && o.push(n);\n }\n\n return o;\n }();\n },\n nodeIsBlockContainer: function nodeIsBlockContainer(t) {\n return e.nodeIsBlockStartComment(null != t ? t.firstChild : void 0);\n },\n nodeProbablyIsBlockContainer: function nodeProbablyIsBlockContainer(t) {\n var n, i;\n return n = e.tagName(t), s.call(e.getBlockTagNames(), n) >= 0 && (i = e.tagName(t.firstChild), s.call(e.getBlockTagNames(), i) < 0);\n },\n nodeIsBlockStart: function nodeIsBlockStart(t, n) {\n var i;\n return i = (null != n ? n : {\n strict: !0\n }).strict, i ? e.nodeIsBlockStartComment(t) : e.nodeIsBlockStartComment(t) || !e.nodeIsBlockStartComment(t.firstChild) && e.nodeProbablyIsBlockContainer(t);\n },\n nodeIsBlockStartComment: function nodeIsBlockStartComment(t) {\n return e.nodeIsCommentNode(t) && \"block\" === (null != t ? t.data : void 0);\n },\n nodeIsCommentNode: function nodeIsCommentNode(t) {\n return (null != t ? t.nodeType : void 0) === Node.COMMENT_NODE;\n },\n nodeIsCursorTarget: function nodeIsCursorTarget(t, n) {\n var i;\n return i = (null != n ? n : {}).name, t ? e.nodeIsTextNode(t) ? t.data === e.ZERO_WIDTH_SPACE ? i ? t.parentNode.dataset.trixCursorTarget === i : !0 : void 0 : e.nodeIsCursorTarget(t.firstChild) : void 0;\n },\n nodeIsAttachmentElement: function nodeIsAttachmentElement(t) {\n return e.elementMatchesSelector(t, e.AttachmentView.attachmentSelector);\n },\n nodeIsEmptyTextNode: function nodeIsEmptyTextNode(t) {\n return e.nodeIsTextNode(t) && \"\" === (null != t ? t.data : void 0);\n },\n nodeIsTextNode: function nodeIsTextNode(t) {\n return (null != t ? t.nodeType : void 0) === Node.TEXT_NODE;\n }\n });\n }.call(this), function () {\n var t, n, i, o, r;\n t = e.copyObject, o = e.objectsAreEqual, e.extend({\n normalizeRange: i = function i(t) {\n var e;\n if (null != t) return Array.isArray(t) || (t = [t, t]), [n(t[0]), n(null != (e = t[1]) ? e : t[0])];\n },\n rangeIsCollapsed: function rangeIsCollapsed(t) {\n var e, n, o;\n if (null != t) return n = i(t), o = n[0], e = n[1], r(o, e);\n },\n rangesAreEqual: function rangesAreEqual(t, e) {\n var n, o, s, a, u, c;\n if (null != t && null != e) return s = i(t), o = s[0], n = s[1], a = i(e), c = a[0], u = a[1], r(o, c) && r(n, u);\n }\n }), n = function n(e) {\n return \"number\" == typeof e ? e : t(e);\n }, r = function r(t, e) {\n return \"number\" == typeof t ? t === e : o(t, e);\n };\n }.call(this), function () {\n var t, n, i, o, r, s, a;\n e.registerElement = function (t, e) {\n var n, i;\n return null == e && (e = {}), t = t.toLowerCase(), e = a(e), i = s(e), (n = i.defaultCSS) && (delete i.defaultCSS, o(n, t)), r(t, i);\n }, o = function o(t, e) {\n var n;\n return n = i(e), n.textContent = t.replace(/%t/g, e);\n }, i = function i(e) {\n var n, i;\n return n = document.createElement(\"style\"), n.setAttribute(\"type\", \"text/css\"), n.setAttribute(\"data-tag-name\", e.toLowerCase()), (i = t()) && n.setAttribute(\"nonce\", i), document.head.insertBefore(n, document.head.firstChild), n;\n }, t = function t() {\n var t;\n return (t = n(\"trix-csp-nonce\") || n(\"csp-nonce\")) ? t.getAttribute(\"content\") : void 0;\n }, n = function n(t) {\n return document.head.querySelector(\"meta[name=\" + t + \"]\");\n }, s = function s(t) {\n var e, n, i;\n n = {};\n\n for (e in t) {\n i = t[e], n[e] = \"function\" == typeof i ? {\n value: i\n } : i;\n }\n\n return n;\n }, a = function () {\n var t;\n return t = function t(_t3) {\n var e, n, i, o, r;\n\n for (e = {}, r = [\"initialize\", \"connect\", \"disconnect\"], n = 0, o = r.length; o > n; n++) {\n i = r[n], e[i] = _t3[i], delete _t3[i];\n }\n\n return e;\n }, window.customElements ? function (e) {\n var n, i, o, r, s;\n return s = t(e), o = s.initialize, n = s.connect, i = s.disconnect, o && (r = n, n = function n() {\n return this.initialized || (this.initialized = !0, o.call(this)), null != r ? r.call(this) : void 0;\n }), n && (e.connectedCallback = n), i && (e.disconnectedCallback = i), e;\n } : function (e) {\n var n, i, o, r;\n return r = t(e), o = r.initialize, n = r.connect, i = r.disconnect, o && (e.createdCallback = o), n && (e.attachedCallback = n), i && (e.detachedCallback = i), e;\n };\n }(), r = function () {\n return window.customElements ? function (t, e) {\n var _n2;\n\n return _n2 = function n() {\n return \"object\" == (typeof Reflect === \"undefined\" ? \"undefined\" : _typeof(Reflect)) ? Reflect.construct(HTMLElement, [], _n2) : HTMLElement.apply(this);\n }, Object.setPrototypeOf(_n2.prototype, HTMLElement.prototype), Object.setPrototypeOf(_n2, HTMLElement), Object.defineProperties(_n2.prototype, e), window.customElements.define(t, _n2), _n2;\n } : function (t, e) {\n var n, i;\n return i = Object.create(HTMLElement.prototype, e), n = document.registerElement(t, {\n prototype: i\n }), Object.defineProperty(i, \"constructor\", {\n value: n\n }), n;\n };\n }();\n }.call(this), function () {\n var t, n;\n e.extend({\n getDOMSelection: function getDOMSelection() {\n var t;\n return t = window.getSelection(), t.rangeCount > 0 ? t : void 0;\n },\n getDOMRange: function getDOMRange() {\n var n, i;\n return (n = null != (i = e.getDOMSelection()) ? i.getRangeAt(0) : void 0) && !t(n) ? n : void 0;\n },\n setDOMRange: function setDOMRange(t) {\n var n;\n return n = window.getSelection(), n.removeAllRanges(), n.addRange(t), e.selectionChangeObserver.update();\n }\n }), t = function t(_t4) {\n return n(_t4.startContainer) || n(_t4.endContainer);\n }, n = function n(t) {\n return !Object.getPrototypeOf(t);\n };\n }.call(this), function () {\n var t;\n t = {\n \"application/x-trix-feature-detection\": \"test\"\n }, e.extend({\n dataTransferIsPlainText: function dataTransferIsPlainText(t) {\n var e, n, i;\n return i = t.getData(\"text/plain\"), n = t.getData(\"text/html\"), i && n ? (e = new DOMParser().parseFromString(n, \"text/html\").body, e.textContent === i ? !e.querySelector(\"*\") : void 0) : null != i ? i.length : void 0;\n },\n dataTransferIsWritable: function dataTransferIsWritable(e) {\n var n, i;\n\n if (null != (null != e ? e.setData : void 0)) {\n for (n in t) {\n if (i = t[n], !function () {\n try {\n return e.setData(n, i), e.getData(n) === i;\n } catch (t) {}\n }()) return;\n }\n\n return !0;\n }\n },\n keyEventIsKeyboardCommand: function () {\n return /Mac|^iP/.test(navigator.platform) ? function (t) {\n return t.metaKey;\n } : function (t) {\n return t.ctrlKey;\n };\n }()\n });\n }.call(this), function () {\n e.extend({\n 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 getDirection: function () {\n var t, n, i, o;\n return n = e.makeElement(\"input\", {\n dir: \"auto\",\n name: \"x\",\n dirName: \"x.dir\"\n }), t = e.makeElement(\"form\"), t.appendChild(n), i = function () {\n try {\n return new FormData(t).has(n.dirName);\n } catch (e) {}\n }(), o = function () {\n try {\n return n.matches(\":dir(ltr),:dir(rtl)\");\n } catch (t) {}\n }(), i ? function (e) {\n return n.value = e, new FormData(t).get(n.dirName);\n } : o ? function (t) {\n return n.value = t, n.matches(\":dir(rtl)\") ? \"rtl\" : \"ltr\";\n } : function (t) {\n var n;\n return n = t.trim().charAt(0), e.RTL_PATTERN.test(n) ? \"rtl\" : \"ltr\";\n };\n }()\n });\n }.call(this), function () {}.call(this), function () {\n var t,\n n = function n(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var o in e) {\n i.call(e, o) && (t[o] = e[o]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n i = {}.hasOwnProperty;\n\n t = e.arraysAreEqual, e.Hash = function (i) {\n function o(t) {\n null == t && (t = {}), this.values = s(t), o.__super__.constructor.apply(this, arguments);\n }\n\n var r, s, a, u, c;\n return n(o, i), o.fromCommonAttributesOfObjects = function (t) {\n var e, n, i, o, s, a;\n if (null == t && (t = []), !t.length) return new this();\n\n for (e = r(t[0]), i = e.getKeys(), a = t.slice(1), n = 0, o = a.length; o > n; n++) {\n s = a[n], i = e.getKeysCommonToHash(r(s)), e = e.slice(i);\n }\n\n return e;\n }, o.box = function (t) {\n return r(t);\n }, o.prototype.add = function (t, e) {\n return this.merge(u(t, e));\n }, o.prototype.remove = function (t) {\n return new e.Hash(s(this.values, t));\n }, o.prototype.get = function (t) {\n return this.values[t];\n }, o.prototype.has = function (t) {\n return t in this.values;\n }, o.prototype.merge = function (t) {\n return new e.Hash(a(this.values, c(t)));\n }, o.prototype.slice = function (t) {\n var n, i, o, r;\n\n for (r = {}, n = 0, o = t.length; o > n; n++) {\n i = t[n], this.has(i) && (r[i] = this.values[i]);\n }\n\n return new e.Hash(r);\n }, o.prototype.getKeys = function () {\n return Object.keys(this.values);\n }, o.prototype.getKeysCommonToHash = function (t) {\n var e, n, i, o, s;\n\n for (t = r(t), o = this.getKeys(), s = [], e = 0, i = o.length; i > e; e++) {\n n = o[e], this.values[n] === t.values[n] && s.push(n);\n }\n\n return s;\n }, o.prototype.isEqualTo = function (e) {\n return t(this.toArray(), r(e).toArray());\n }, o.prototype.isEmpty = function () {\n return 0 === this.getKeys().length;\n }, o.prototype.toArray = function () {\n var t, e, n;\n return (null != this.array ? this.array : this.array = function () {\n var i;\n e = [], i = this.values;\n\n for (t in i) {\n n = i[t], e.push(t, n);\n }\n\n return e;\n }.call(this)).slice(0);\n }, o.prototype.toObject = function () {\n return s(this.values);\n }, o.prototype.toJSON = function () {\n return this.toObject();\n }, o.prototype.contentsForInspection = function () {\n return {\n values: JSON.stringify(this.values)\n };\n }, u = function u(t, e) {\n var n;\n return n = {}, n[t] = e, n;\n }, a = function a(t, e) {\n var n, i, o;\n i = s(t);\n\n for (n in e) {\n o = e[n], i[n] = o;\n }\n\n return i;\n }, s = function s(t, e) {\n var n, i, o, r, s;\n\n for (r = {}, s = Object.keys(t).sort(), n = 0, o = s.length; o > n; n++) {\n i = s[n], i !== e && (r[i] = t[i]);\n }\n\n return r;\n }, r = function r(t) {\n return t instanceof e.Hash ? t : new e.Hash(t);\n }, c = function c(t) {\n return t instanceof e.Hash ? t.values : t;\n }, o;\n }(e.Object);\n }.call(this), function () {\n e.ObjectGroup = function () {\n function t(t, e) {\n var n, i;\n this.objects = null != t ? t : [], i = e.depth, n = e.asTree, n && (this.depth = i, this.objects = this.constructor.groupObjects(this.objects, {\n asTree: n,\n depth: this.depth + 1\n }));\n }\n\n return t.groupObjects = function (t, e) {\n var n, i, o, r, s, a, u, c, l;\n\n for (null == t && (t = []), l = null != e ? e : {}, o = l.depth, n = l.asTree, n && null == o && (o = 0), c = [], s = 0, a = t.length; a > s; s++) {\n if (u = t[s], r) {\n if ((\"function\" == typeof u.canBeGrouped ? u.canBeGrouped(o) : void 0) && (\"function\" == typeof (i = r[r.length - 1]).canBeGroupedWith ? i.canBeGroupedWith(u, o) : void 0)) {\n r.push(u);\n continue;\n }\n\n c.push(new this(r, {\n depth: o,\n asTree: n\n })), r = null;\n }\n\n (\"function\" == typeof u.canBeGrouped ? u.canBeGrouped(o) : void 0) ? r = [u] : c.push(u);\n }\n\n return r && c.push(new this(r, {\n depth: o,\n asTree: n\n })), c;\n }, t.prototype.getObjects = function () {\n return this.objects;\n }, t.prototype.getDepth = function () {\n return this.depth;\n }, t.prototype.getCacheKey = function () {\n var t, e, n, i, o;\n\n for (e = [\"objectGroup\"], o = this.getObjects(), t = 0, n = o.length; n > t; t++) {\n i = o[t], e.push(i.getCacheKey());\n }\n\n return e.join(\"/\");\n }, t;\n }();\n }.call(this), function () {\n var t = function t(_t5, e) {\n function i() {\n this.constructor = _t5;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t5[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t5.prototype = new i(), _t5.__super__ = e.prototype, _t5;\n },\n n = {}.hasOwnProperty;\n\n e.ObjectMap = function (e) {\n function n(t) {\n var e, n, i, o, r;\n\n for (null == t && (t = []), this.objects = {}, i = 0, o = t.length; o > i; i++) {\n r = t[i], n = JSON.stringify(r), null == (e = this.objects)[n] && (e[n] = r);\n }\n }\n\n return t(n, e), n.prototype.find = function (t) {\n var e;\n return e = JSON.stringify(t), this.objects[e];\n }, n;\n }(e.BasicObject);\n }.call(this), function () {\n e.ElementStore = function () {\n function t(t) {\n this.reset(t);\n }\n\n var e;\n return t.prototype.add = function (t) {\n var n;\n return n = e(t), this.elements[n] = t;\n }, t.prototype.remove = function (t) {\n var n, i;\n return n = e(t), (i = this.elements[n]) ? (delete this.elements[n], i) : void 0;\n }, t.prototype.reset = function (t) {\n var e, n, i;\n\n for (null == t && (t = []), this.elements = {}, n = 0, i = t.length; i > n; n++) {\n e = t[n], this.add(e);\n }\n\n return t;\n }, e = function e(t) {\n return t.dataset.trixStoreKey;\n }, t;\n }();\n }.call(this), function () {}.call(this), function () {\n var t = function t(_t6, e) {\n function i() {\n this.constructor = _t6;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t6[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t6.prototype = new i(), _t6.__super__ = e.prototype, _t6;\n },\n n = {}.hasOwnProperty;\n\n e.Operation = function (e) {\n function n() {\n return n.__super__.constructor.apply(this, arguments);\n }\n\n return t(n, e), n.prototype.isPerforming = function () {\n return this.performing === !0;\n }, n.prototype.hasPerformed = function () {\n return this.performed === !0;\n }, n.prototype.hasSucceeded = function () {\n return this.performed && this.succeeded;\n }, n.prototype.hasFailed = function () {\n return this.performed && !this.succeeded;\n }, n.prototype.getPromise = function () {\n return null != this.promise ? this.promise : this.promise = new Promise(function (t) {\n return function (e, n) {\n return t.performing = !0, t.perform(function (i, o) {\n return t.succeeded = i, t.performing = !1, t.performed = !0, t.succeeded ? e(o) : n(o);\n });\n };\n }(this));\n }, n.prototype.perform = function (t) {\n return t(!1);\n }, n.prototype.release = function () {\n var t;\n return null != (t = this.promise) && \"function\" == typeof t.cancel && t.cancel(), this.promise = null, this.performing = null, this.performed = null, this.succeeded = null;\n }, n.proxyMethod(\"getPromise().then\"), n.proxyMethod(\"getPromise().catch\"), n;\n }(e.BasicObject);\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r,\n s = function s(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n a.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n a = {}.hasOwnProperty;\n\n e.UTF16String = function (t) {\n function e(t, e) {\n this.ucs2String = t, this.codepoints = e, this.length = this.codepoints.length, this.ucs2Length = this.ucs2String.length;\n }\n\n return s(e, t), e.box = function (t) {\n return null == t && (t = \"\"), t instanceof this ? t : this.fromUCS2String(null != t ? t.toString() : void 0);\n }, e.fromUCS2String = function (t) {\n return new this(t, o(t));\n }, e.fromCodepoints = function (t) {\n return new this(r(t), t);\n }, e.prototype.offsetToUCS2Offset = function (t) {\n return r(this.codepoints.slice(0, Math.max(0, t))).length;\n }, e.prototype.offsetFromUCS2Offset = function (t) {\n return o(this.ucs2String.slice(0, Math.max(0, t))).length;\n }, e.prototype.slice = function () {\n var t;\n return this.constructor.fromCodepoints((t = this.codepoints).slice.apply(t, arguments));\n }, e.prototype.charAt = function (t) {\n return this.slice(t, t + 1);\n }, e.prototype.isEqualTo = function (t) {\n return this.constructor.box(t).ucs2String === this.ucs2String;\n }, e.prototype.toJSON = function () {\n return this.ucs2String;\n }, e.prototype.getCacheKey = function () {\n return this.ucs2String;\n }, e.prototype.toString = function () {\n return this.ucs2String;\n }, e;\n }(e.BasicObject), t = 1 === (\"function\" == typeof Array.from ? Array.from(\"\\uD83D\\uDC7C\").length : void 0), n = null != (\"function\" == typeof \" \".codePointAt ? \" \".codePointAt(0) : void 0), i = \" \\uD83D\\uDC7C\" === (\"function\" == typeof String.fromCodePoint ? String.fromCodePoint(32, 128124) : void 0), o = t && n ? function (t) {\n return Array.from(t).map(function (t) {\n return t.codePointAt(0);\n });\n } : function (t) {\n var e, n, i, o, r;\n\n for (o = [], e = 0, i = t.length; i > e;) {\n r = t.charCodeAt(e++), r >= 55296 && 56319 >= r && i > e && (n = t.charCodeAt(e++), 56320 === (64512 & n) ? r = ((1023 & r) << 10) + (1023 & n) + 65536 : e--), o.push(r);\n }\n\n return o;\n }, r = i ? function (t) {\n return String.fromCodePoint.apply(String, t);\n } : function (t) {\n var e, n, i;\n return e = function () {\n var e, o, r;\n\n for (r = [], e = 0, o = t.length; o > e; e++) {\n i = t[e], n = \"\", i > 65535 && (i -= 65536, n += String.fromCharCode(i >>> 10 & 1023 | 55296), i = 56320 | 1023 & i), r.push(n + String.fromCharCode(i));\n }\n\n return r;\n }(), e.join(\"\");\n };\n }.call(this), function () {}.call(this), function () {}.call(this), function () {\n e.config.lang = {\n attachFiles: \"Attach Files\",\n bold: \"Bold\",\n bullets: \"Bullets\",\n \"byte\": \"Byte\",\n bytes: \"Bytes\",\n captionPlaceholder: \"Add a caption\\u2026\",\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\\u2026\",\n GB: \"GB\",\n KB: \"KB\",\n MB: \"MB\",\n PB: \"PB\",\n TB: \"TB\"\n };\n }.call(this), function () {\n e.config.css = {\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 };\n }.call(this), function () {\n var t;\n e.config.blockAttributes = t = {\n \"default\": {\n tagName: \"div\",\n parse: !1\n },\n quote: {\n tagName: \"blockquote\",\n nestable: !0\n },\n heading1: {\n tagName: \"h1\",\n terminal: !0,\n breakOnReturn: !0,\n group: !1\n },\n code: {\n tagName: \"pre\",\n terminal: !0,\n text: {\n plaintext: !0\n }\n },\n bulletList: {\n tagName: \"ul\",\n parse: !1\n },\n bullet: {\n tagName: \"li\",\n listAttribute: \"bulletList\",\n group: !1,\n nestable: !0,\n test: function test(n) {\n return e.tagName(n.parentNode) === t[this.listAttribute].tagName;\n }\n },\n numberList: {\n tagName: \"ol\",\n parse: !1\n },\n number: {\n tagName: \"li\",\n listAttribute: \"numberList\",\n group: !1,\n nestable: !0,\n test: function test(n) {\n return e.tagName(n.parentNode) === t[this.listAttribute].tagName;\n }\n },\n attachmentGallery: {\n tagName: \"div\",\n exclusive: !0,\n terminal: !0,\n parse: !1,\n group: !1\n }\n };\n }.call(this), function () {\n var t, n;\n t = e.config.lang, n = [t.bytes, t.KB, t.MB, t.GB, t.TB, t.PB], e.config.fileSize = {\n prefix: \"IEC\",\n precision: 2,\n formatter: function formatter(e) {\n var i, o, r, s, a;\n\n switch (e) {\n case 0:\n return \"0 \" + t.bytes;\n\n case 1:\n return \"1 \" + t[\"byte\"];\n\n default:\n return i = function () {\n switch (this.prefix) {\n case \"SI\":\n return 1e3;\n\n case \"IEC\":\n return 1024;\n }\n }.call(this), o = Math.floor(Math.log(e) / Math.log(i)), r = e / Math.pow(i, o), s = r.toFixed(this.precision), a = s.replace(/0*$/, \"\").replace(/\\.$/, \"\"), a + \" \" + n[o];\n }\n }\n };\n }.call(this), function () {\n e.config.textAttributes = {\n bold: {\n tagName: \"strong\",\n inheritable: !0,\n parser: function parser(t) {\n var e;\n return e = window.getComputedStyle(t), \"bold\" === e.fontWeight || e.fontWeight >= 600;\n }\n },\n italic: {\n tagName: \"em\",\n inheritable: !0,\n parser: function parser(t) {\n var e;\n return e = window.getComputedStyle(t), \"italic\" === e.fontStyle;\n }\n },\n href: {\n groupTagName: \"a\",\n parser: function parser(t) {\n var n, i, o;\n return n = e.AttachmentView.attachmentSelector, o = \"a:not(\" + n + \")\", (i = e.findClosestElementFromNode(t, {\n matchingSelector: o\n })) ? i.getAttribute(\"href\") : void 0;\n }\n },\n strike: {\n tagName: \"del\",\n inheritable: !0\n },\n frozen: {\n style: {\n backgroundColor: \"highlight\"\n }\n }\n };\n }.call(this), function () {\n var t, n, i, o, r;\n r = \"[data-trix-serialize=false]\", o = [\"contenteditable\", \"data-trix-id\", \"data-trix-store-key\", \"data-trix-mutable\", \"data-trix-placeholder\", \"tabindex\"], n = \"data-trix-serialized-attributes\", i = \"[\" + n + \"]\", t = new RegExp(\"\", \"g\"), e.extend({\n serializers: {\n \"application/json\": function applicationJson(t) {\n var n;\n if (t instanceof e.Document) n = t;else {\n if (!(t instanceof HTMLElement)) throw new Error(\"unserializable object\");\n n = e.Document.fromHTML(t.innerHTML);\n }\n return n.toSerializableDocument().toJSONString();\n },\n \"text/html\": function textHtml(s) {\n var a, u, c, l, h, p, d, f, g, m, v, y, b, A, C, x, w;\n if (s instanceof e.Document) l = e.DocumentView.render(s);else {\n if (!(s instanceof HTMLElement)) throw new Error(\"unserializable object\");\n l = s.cloneNode(!0);\n }\n\n for (A = l.querySelectorAll(r), h = 0, g = A.length; g > h; h++) {\n c = A[h], e.removeNode(c);\n }\n\n for (p = 0, m = o.length; m > p; p++) {\n for (a = o[p], C = l.querySelectorAll(\"[\" + a + \"]\"), d = 0, v = C.length; v > d; d++) {\n c = C[d], c.removeAttribute(a);\n }\n }\n\n for (x = l.querySelectorAll(i), f = 0, y = x.length; y > f; f++) {\n c = x[f];\n\n try {\n u = JSON.parse(c.getAttribute(n)), c.removeAttribute(n);\n\n for (b in u) {\n w = u[b], c.setAttribute(b, w);\n }\n } catch (E) {}\n }\n\n return l.innerHTML.replace(t, \"\");\n }\n },\n deserializers: {\n \"application/json\": function applicationJson(t) {\n return e.Document.fromJSONString(t);\n },\n \"text/html\": function textHtml(t) {\n return e.Document.fromHTML(t);\n }\n },\n serializeToContentType: function serializeToContentType(t, n) {\n var i;\n if (i = e.serializers[n]) return i(t);\n throw new Error(\"unknown content type: \" + n);\n },\n deserializeFromContentType: function deserializeFromContentType(t, n) {\n var i;\n if (i = e.deserializers[n]) return i(t);\n throw new Error(\"unknown content type: \" + n);\n }\n });\n }.call(this), function () {\n var t;\n t = e.config.lang, e.config.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 };\n }.call(this), function () {\n e.config.undoInterval = 5e3;\n }.call(this), function () {\n e.config.attachments = {\n preview: {\n presentation: \"gallery\",\n caption: {\n name: !0,\n size: !0\n }\n },\n file: {\n caption: {\n size: !0\n }\n }\n };\n }.call(this), function () {\n e.config.keyNames = {\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 };\n }.call(this), function () {\n e.config.input = {\n level2Enabled: !0,\n getLevel: function getLevel() {\n return this.level2Enabled && e.browser.supportsInputEvents ? 2 : 0;\n },\n pickFiles: function pickFiles(t) {\n var n;\n return n = e.makeElement(\"input\", {\n type: \"file\",\n multiple: !0,\n hidden: !0,\n id: this.fileInputId\n }), n.addEventListener(\"change\", function () {\n return t(n.files), e.removeNode(n);\n }), e.removeNode(document.getElementById(this.fileInputId)), document.body.appendChild(n), n.click();\n },\n fileInputId: \"trix-file-input-\" + Date.now().toString(16)\n };\n }.call(this), function () {}.call(this), function () {\n e.registerElement(\"trix-toolbar\", {\n defaultCSS: \"%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 initialize: function initialize() {\n return \"\" === this.innerHTML ? this.innerHTML = e.config.toolbar.getDefaultHTML() : void 0;\n }\n });\n }.call(this), function () {\n var t = function t(_t7, e) {\n function i() {\n this.constructor = _t7;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t7[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t7.prototype = new i(), _t7.__super__ = e.prototype, _t7;\n },\n n = {}.hasOwnProperty,\n i = [].indexOf || function (t) {\n for (var e = 0, n = this.length; n > e; e++) {\n if (e in this && this[e] === t) return e;\n }\n\n return -1;\n };\n\n e.ObjectView = function (n) {\n function o(t, e) {\n this.object = t, this.options = null != e ? e : {}, this.childViews = [], this.rootView = this;\n }\n\n return t(o, n), o.prototype.getNodes = function () {\n var t, e, n, i, o;\n\n for (null == this.nodes && (this.nodes = this.createNodes()), i = this.nodes, o = [], t = 0, e = i.length; e > t; t++) {\n n = i[t], o.push(n.cloneNode(!0));\n }\n\n return o;\n }, o.prototype.invalidate = function () {\n var t;\n return this.nodes = null, this.childViews = [], null != (t = this.parentView) ? t.invalidate() : void 0;\n }, o.prototype.invalidateViewForObject = function (t) {\n var e;\n return null != (e = this.findViewForObject(t)) ? e.invalidate() : void 0;\n }, o.prototype.findOrCreateCachedChildView = function (t, e) {\n var n;\n return (n = this.getCachedViewForObject(e)) ? this.recordChildView(n) : (n = this.createChildView.apply(this, arguments), this.cacheViewForObject(n, e)), n;\n }, o.prototype.createChildView = function (t, n, i) {\n var o;\n return null == i && (i = {}), n instanceof e.ObjectGroup && (i.viewClass = t, t = e.ObjectGroupView), o = new t(n, i), this.recordChildView(o);\n }, o.prototype.recordChildView = function (t) {\n return t.parentView = this, t.rootView = this.rootView, this.childViews.push(t), t;\n }, o.prototype.getAllChildViews = function () {\n var t, e, n, i, o;\n\n for (o = [], i = this.childViews, e = 0, n = i.length; n > e; e++) {\n t = i[e], o.push(t), o = o.concat(t.getAllChildViews());\n }\n\n return o;\n }, o.prototype.findElement = function () {\n return this.findElementForObject(this.object);\n }, o.prototype.findElementForObject = function (t) {\n var e;\n return (e = null != t ? t.id : void 0) ? this.rootView.element.querySelector(\"[data-trix-id='\" + e + \"']\") : void 0;\n }, o.prototype.findViewForObject = function (t) {\n var e, n, i, o;\n\n for (i = this.getAllChildViews(), e = 0, n = i.length; n > e; e++) {\n if (o = i[e], o.object === t) return o;\n }\n }, o.prototype.getViewCache = function () {\n return this.rootView !== this ? this.rootView.getViewCache() : this.isViewCachingEnabled() ? null != this.viewCache ? this.viewCache : this.viewCache = {} : void 0;\n }, o.prototype.isViewCachingEnabled = function () {\n return this.shouldCacheViews !== !1;\n }, o.prototype.enableViewCaching = function () {\n return this.shouldCacheViews = !0;\n }, o.prototype.disableViewCaching = function () {\n return this.shouldCacheViews = !1;\n }, o.prototype.getCachedViewForObject = function (t) {\n var e;\n return null != (e = this.getViewCache()) ? e[t.getCacheKey()] : void 0;\n }, o.prototype.cacheViewForObject = function (t, e) {\n var n;\n return null != (n = this.getViewCache()) ? n[e.getCacheKey()] = t : void 0;\n }, o.prototype.garbageCollectCachedViews = function () {\n var t, e, n, o, r, s;\n\n if (t = this.getViewCache()) {\n s = this.getAllChildViews().concat(this), n = function () {\n var t, e, n;\n\n for (n = [], t = 0, e = s.length; e > t; t++) {\n r = s[t], n.push(r.object.getCacheKey());\n }\n\n return n;\n }(), o = [];\n\n for (e in t) {\n i.call(n, e) < 0 && o.push(delete t[e]);\n }\n\n return o;\n }\n }, o;\n }(e.BasicObject);\n }.call(this), function () {\n var t = function t(_t8, e) {\n function i() {\n this.constructor = _t8;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t8[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t8.prototype = new i(), _t8.__super__ = e.prototype, _t8;\n },\n n = {}.hasOwnProperty;\n\n e.ObjectGroupView = function (e) {\n function n() {\n n.__super__.constructor.apply(this, arguments), this.objectGroup = this.object, this.viewClass = this.options.viewClass, delete this.options.viewClass;\n }\n\n return t(n, e), n.prototype.getChildViews = function () {\n var t, e, n, i;\n if (!this.childViews.length) for (i = this.objectGroup.getObjects(), t = 0, e = i.length; e > t; t++) {\n n = i[t], this.findOrCreateCachedChildView(this.viewClass, n, this.options);\n }\n return this.childViews;\n }, n.prototype.createNodes = function () {\n var t, e, n, i, o, r, s, a, u;\n\n for (t = this.createContainerElement(), s = this.getChildViews(), e = 0, i = s.length; i > e; e++) {\n for (u = s[e], a = u.getNodes(), n = 0, o = a.length; o > n; n++) {\n r = a[n], t.appendChild(r);\n }\n }\n\n return [t];\n }, n.prototype.createContainerElement = function (t) {\n return null == t && (t = this.objectGroup.getDepth()), this.getChildViews()[0].createContainerElement(t);\n }, n;\n }(e.ObjectView);\n }.call(this), function () {\n var t = function t(_t9, e) {\n function i() {\n this.constructor = _t9;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t9[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t9.prototype = new i(), _t9.__super__ = e.prototype, _t9;\n },\n n = {}.hasOwnProperty;\n\n e.Controller = function (e) {\n function n() {\n return n.__super__.constructor.apply(this, arguments);\n }\n\n return t(n, e), n;\n }(e.BasicObject);\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r,\n s,\n a = function a(t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n },\n u = function u(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n c.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n c = {}.hasOwnProperty,\n l = [].indexOf || function (t) {\n for (var e = 0, n = this.length; n > e; e++) {\n if (e in this && this[e] === t) return e;\n }\n\n return -1;\n };\n\n t = e.findClosestElementFromNode, i = e.nodeIsEmptyTextNode, n = e.nodeIsBlockStartComment, o = e.normalizeSpaces, r = e.summarizeStringChange, s = e.tagName, e.MutationObserver = function (e) {\n function c(t) {\n this.element = t, this.didMutate = a(this.didMutate, this), this.observer = new window.MutationObserver(this.didMutate), this.start();\n }\n\n var _h, p, d, f;\n\n return u(c, e), p = \"data-trix-mutable\", d = \"[\" + p + \"]\", f = {\n attributes: !0,\n childList: !0,\n characterData: !0,\n characterDataOldValue: !0,\n subtree: !0\n }, c.prototype.start = function () {\n return this.reset(), this.observer.observe(this.element, f);\n }, c.prototype.stop = function () {\n return this.observer.disconnect();\n }, c.prototype.didMutate = function (t) {\n var e, n;\n return (e = this.mutations).push.apply(e, this.findSignificantMutations(t)), this.mutations.length ? (null != (n = this.delegate) && \"function\" == typeof n.elementDidMutate && n.elementDidMutate(this.getMutationSummary()), this.reset()) : void 0;\n }, c.prototype.reset = function () {\n return this.mutations = [];\n }, c.prototype.findSignificantMutations = function (t) {\n var e, n, i, o;\n\n for (o = [], e = 0, n = t.length; n > e; e++) {\n i = t[e], this.mutationIsSignificant(i) && o.push(i);\n }\n\n return o;\n }, c.prototype.mutationIsSignificant = function (t) {\n var e, n, i, o;\n if (this.nodeIsMutable(t.target)) return !1;\n\n for (o = this.nodesModifiedByMutation(t), e = 0, n = o.length; n > e; e++) {\n if (i = o[e], this.nodeIsSignificant(i)) return !0;\n }\n\n return !1;\n }, c.prototype.nodeIsSignificant = function (t) {\n return t !== this.element && !this.nodeIsMutable(t) && !i(t);\n }, c.prototype.nodeIsMutable = function (e) {\n return t(e, {\n matchingSelector: d\n });\n }, c.prototype.nodesModifiedByMutation = function (t) {\n var e;\n\n switch (e = [], t.type) {\n case \"attributes\":\n t.attributeName !== p && e.push(t.target);\n break;\n\n case \"characterData\":\n e.push(t.target.parentNode), e.push(t.target);\n break;\n\n case \"childList\":\n e.push.apply(e, t.addedNodes), e.push.apply(e, t.removedNodes);\n }\n\n return e;\n }, c.prototype.getMutationSummary = function () {\n return this.getTextMutationSummary();\n }, c.prototype.getTextMutationSummary = function () {\n var t, e, n, i, o, r, s, a, u, c, h;\n\n for (a = this.getTextChangesFromCharacterData(), n = a.additions, o = a.deletions, h = this.getTextChangesFromChildList(), u = h.additions, r = 0, s = u.length; s > r; r++) {\n e = u[r], l.call(n, e) < 0 && n.push(e);\n }\n\n return o.push.apply(o, h.deletions), c = {}, (t = n.join(\"\")) && (c.textAdded = t), (i = o.join(\"\")) && (c.textDeleted = i), c;\n }, c.prototype.getMutationsByType = function (t) {\n var e, n, i, o, r;\n\n for (o = this.mutations, r = [], e = 0, n = o.length; n > e; e++) {\n i = o[e], i.type === t && r.push(i);\n }\n\n return r;\n }, c.prototype.getTextChangesFromChildList = function () {\n var t, e, i, r, s, a, u, c, l, p, d;\n\n for (t = [], u = [], a = this.getMutationsByType(\"childList\"), e = 0, r = a.length; r > e; e++) {\n s = a[e], t.push.apply(t, s.addedNodes), u.push.apply(u, s.removedNodes);\n }\n\n return c = 0 === t.length && 1 === u.length && n(u[0]), c ? (p = [], d = [\"\\n\"]) : (p = _h(t), d = _h(u)), {\n additions: function () {\n var t, e, n;\n\n for (n = [], i = t = 0, e = p.length; e > t; i = ++t) {\n l = p[i], l !== d[i] && n.push(o(l));\n }\n\n return n;\n }(),\n deletions: function () {\n var t, e, n;\n\n for (n = [], i = t = 0, e = d.length; e > t; i = ++t) {\n l = d[i], l !== p[i] && n.push(o(l));\n }\n\n return n;\n }()\n };\n }, c.prototype.getTextChangesFromCharacterData = function () {\n var t, e, n, i, s, a, u, c;\n return e = this.getMutationsByType(\"characterData\"), e.length && (c = e[0], n = e[e.length - 1], s = o(c.oldValue), i = o(n.target.data), a = r(s, i), t = a.added, u = a.removed), {\n additions: t ? [t] : [],\n deletions: u ? [u] : []\n };\n }, _h = function h(t) {\n var e, n, i, o;\n\n for (null == t && (t = []), o = [], e = 0, n = t.length; n > e; e++) {\n switch (i = t[e], i.nodeType) {\n case Node.TEXT_NODE:\n o.push(i.data);\n break;\n\n case Node.ELEMENT_NODE:\n \"br\" === s(i) ? o.push(\"\\n\") : o.push.apply(o, _h(i.childNodes));\n }\n }\n\n return o;\n }, c;\n }(e.BasicObject);\n }.call(this), function () {\n var t = function t(_t10, e) {\n function i() {\n this.constructor = _t10;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t10[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t10.prototype = new i(), _t10.__super__ = e.prototype, _t10;\n },\n n = {}.hasOwnProperty;\n\n e.FileVerificationOperation = function (e) {\n function n(t) {\n this.file = t;\n }\n\n return t(n, e), n.prototype.perform = function (t) {\n var e;\n return e = new FileReader(), e.onerror = function () {\n return t(!1);\n }, e.onload = function (n) {\n return function () {\n e.onerror = null;\n\n try {\n e.abort();\n } catch (i) {}\n\n return t(!0, n.file);\n };\n }(this), e.readAsArrayBuffer(this.file);\n }, n;\n }(e.Operation);\n }.call(this), function () {\n var t,\n n,\n i = function i(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n o.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n o = {}.hasOwnProperty;\n\n t = e.handleEvent, n = e.innerElementIsActive, e.InputController = function (o) {\n function r(n) {\n var i;\n this.element = n, this.mutationObserver = new e.MutationObserver(this.element), this.mutationObserver.delegate = this;\n\n for (i in this.events) {\n t(i, {\n onElement: this.element,\n withCallback: this.handlerFor(i)\n });\n }\n }\n\n return i(r, o), r.prototype.events = {}, r.prototype.elementDidMutate = function () {}, r.prototype.editorWillSyncDocumentView = function () {\n return this.mutationObserver.stop();\n }, r.prototype.editorDidSyncDocumentView = function () {\n return this.mutationObserver.start();\n }, r.prototype.requestRender = function () {\n var t;\n return null != (t = this.delegate) && \"function\" == typeof t.inputControllerDidRequestRender ? t.inputControllerDidRequestRender() : void 0;\n }, r.prototype.requestReparse = function () {\n var t;\n return null != (t = this.delegate) && \"function\" == typeof t.inputControllerDidRequestReparse && t.inputControllerDidRequestReparse(), this.requestRender();\n }, r.prototype.attachFiles = function (t) {\n var n, i;\n return i = function () {\n var i, o, r;\n\n for (r = [], i = 0, o = t.length; o > i; i++) {\n n = t[i], r.push(new e.FileVerificationOperation(n));\n }\n\n return r;\n }(), Promise.all(i).then(function (t) {\n return function (e) {\n return t.handleInput(function () {\n var t, n;\n return null != (t = this.delegate) && t.inputControllerWillAttachFiles(), null != (n = this.responder) && n.insertFiles(e), this.requestRender();\n });\n };\n }(this));\n }, r.prototype.handlerFor = function (t) {\n return function (e) {\n return function (i) {\n return i.defaultPrevented ? void 0 : e.handleInput(function () {\n return n(this.element) ? void 0 : (this.eventName = t, this.events[t].call(this, i));\n });\n };\n }(this);\n }, r.prototype.handleInput = function (t) {\n var e, n;\n\n try {\n return null != (e = this.delegate) && e.inputControllerWillHandleInput(), t.call(this);\n } finally {\n null != (n = this.delegate) && n.inputControllerDidHandleInput();\n }\n }, r.prototype.createLinkHTML = function (t, e) {\n var n;\n return n = document.createElement(\"a\"), n.href = t, n.textContent = null != e ? e : t, n.outerHTML;\n }, r;\n }(e.BasicObject);\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r,\n s,\n a,\n u,\n c,\n l,\n h,\n p,\n d,\n f = function f(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n g.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n g = {}.hasOwnProperty,\n m = [].indexOf || function (t) {\n for (var e = 0, n = this.length; n > e; e++) {\n if (e in this && this[e] === t) return e;\n }\n\n return -1;\n };\n\n c = e.makeElement, l = e.objectsAreEqual, d = e.tagName, n = e.browser, a = e.keyEventIsKeyboardCommand, o = e.dataTransferIsWritable, i = e.dataTransferIsPlainText, u = e.config.keyNames, e.Level0InputController = function (n) {\n function s() {\n s.__super__.constructor.apply(this, arguments), this.resetInputSummary();\n }\n\n var d;\n return f(s, n), d = 0, s.prototype.setInputSummary = function (t) {\n var e, n;\n null == t && (t = {}), this.inputSummary.eventName = this.eventName;\n\n for (e in t) {\n n = t[e], this.inputSummary[e] = n;\n }\n\n return this.inputSummary;\n }, s.prototype.resetInputSummary = function () {\n return this.inputSummary = {};\n }, s.prototype.reset = function () {\n return this.resetInputSummary(), e.selectionChangeObserver.reset();\n }, s.prototype.elementDidMutate = function (t) {\n var e;\n return this.isComposing() ? null != (e = this.delegate) && \"function\" == typeof e.inputControllerDidAllowUnhandledInput ? e.inputControllerDidAllowUnhandledInput() : void 0 : this.handleInput(function () {\n return this.mutationIsSignificant(t) && (this.mutationIsExpected(t) ? this.requestRender() : this.requestReparse()), this.reset();\n });\n }, s.prototype.mutationIsExpected = function (t) {\n var e, n, i, o, r, s, a, u, c, l;\n return a = t.textAdded, u = t.textDeleted, this.inputSummary.preferDocument ? !0 : (e = null != a ? a === this.inputSummary.textAdded : !this.inputSummary.textAdded, n = null != u ? this.inputSummary.didDelete : !this.inputSummary.didDelete, c = (\"\\n\" === a || \" \\n\" === a) && !e, l = \"\\n\" === u && !n, s = c && !l || l && !c, s && (o = this.getSelectedRange()) && (i = c ? a.replace(/\\n$/, \"\").length || -1 : (null != a ? a.length : void 0) || 1, null != (r = this.responder) ? r.positionIsBlockBreak(o[1] + i) : void 0) ? !0 : e && n);\n }, s.prototype.mutationIsSignificant = function (t) {\n var e, n, i;\n return i = Object.keys(t).length > 0, e = \"\" === (null != (n = this.compositionInput) ? n.getEndData() : void 0), i || !e;\n }, s.prototype.events = {\n keydown: function keydown(t) {\n var n, i, o, r, s, c, l, h, p;\n\n if (this.isComposing() || this.resetInputSummary(), this.inputSummary.didInput = !0, r = u[t.keyCode]) {\n for (i = this.keys, h = [\"ctrl\", \"alt\", \"shift\", \"meta\"], o = 0, c = h.length; c > o; o++) {\n l = h[o], t[l + \"Key\"] && (\"ctrl\" === l && (l = \"control\"), i = null != i ? i[l] : void 0);\n }\n\n null != (null != i ? i[r] : void 0) && (this.setInputSummary({\n keyName: r\n }), e.selectionChangeObserver.reset(), i[r].call(this, t));\n }\n\n return a(t) && (n = String.fromCharCode(t.keyCode).toLowerCase()) && (s = function () {\n var e, n, i, o;\n\n for (i = [\"alt\", \"shift\"], o = [], e = 0, n = i.length; n > e; e++) {\n l = i[e], t[l + \"Key\"] && o.push(l);\n }\n\n return o;\n }(), s.push(n), null != (p = this.delegate) ? p.inputControllerDidReceiveKeyboardCommand(s) : void 0) ? t.preventDefault() : void 0;\n },\n keypress: function keypress(t) {\n var e, n, i;\n if (null == this.inputSummary.eventName && !t.metaKey && (!t.ctrlKey || t.altKey)) return (i = p(t)) ? (null != (e = this.delegate) && e.inputControllerWillPerformTyping(), null != (n = this.responder) && n.insertString(i), this.setInputSummary({\n textAdded: i,\n didDelete: this.selectionIsExpanded()\n })) : void 0;\n },\n textInput: function textInput(t) {\n var e, n, i, o;\n return e = t.data, o = this.inputSummary.textAdded, o && o !== e && o.toUpperCase() === e ? (n = this.getSelectedRange(), this.setSelectedRange([n[0], n[1] + o.length]), null != (i = this.responder) && i.insertString(e), this.setInputSummary({\n textAdded: e\n }), this.setSelectedRange(n)) : void 0;\n },\n dragenter: function dragenter(t) {\n return t.preventDefault();\n },\n dragstart: function dragstart(t) {\n var e, n;\n return n = t.target, this.serializeSelectionToDataTransfer(t.dataTransfer), this.draggedRange = this.getSelectedRange(), null != (e = this.delegate) && \"function\" == typeof e.inputControllerDidStartDrag ? e.inputControllerDidStartDrag() : void 0;\n },\n dragover: function dragover(t) {\n var e, n;\n return !this.draggedRange && !this.canAcceptDataTransfer(t.dataTransfer) || (t.preventDefault(), e = {\n x: t.clientX,\n y: t.clientY\n }, l(e, this.draggingPoint)) ? void 0 : (this.draggingPoint = e, null != (n = this.delegate) && \"function\" == typeof n.inputControllerDidReceiveDragOverPoint ? n.inputControllerDidReceiveDragOverPoint(this.draggingPoint) : void 0);\n },\n dragend: function dragend() {\n var t;\n return null != (t = this.delegate) && \"function\" == typeof t.inputControllerDidCancelDrag && t.inputControllerDidCancelDrag(), this.draggedRange = null, this.draggingPoint = null;\n },\n drop: function drop(t) {\n var n, i, o, r, s, a, u, c, l;\n return t.preventDefault(), o = null != (s = t.dataTransfer) ? s.files : void 0, r = {\n x: t.clientX,\n y: t.clientY\n }, null != (a = this.responder) && a.setLocationRangeFromPointRange(r), (null != o ? o.length : void 0) ? this.attachFiles(o) : this.draggedRange ? (null != (u = this.delegate) && u.inputControllerWillMoveText(), null != (c = this.responder) && c.moveTextFromRange(this.draggedRange), this.draggedRange = null, this.requestRender()) : (i = t.dataTransfer.getData(\"application/x-trix-document\")) && (n = e.Document.fromJSONString(i), null != (l = this.responder) && l.insertDocument(n), this.requestRender()), this.draggedRange = null, this.draggingPoint = null;\n },\n cut: function cut(t) {\n var e, n;\n return (null != (e = this.responder) ? e.selectionIsExpanded() : void 0) && (this.serializeSelectionToDataTransfer(t.clipboardData) && t.preventDefault(), null != (n = this.delegate) && n.inputControllerWillCutText(), this.deleteInDirection(\"backward\"), t.defaultPrevented) ? this.requestRender() : void 0;\n },\n copy: function copy(t) {\n var e;\n return (null != (e = this.responder) ? e.selectionIsExpanded() : void 0) && this.serializeSelectionToDataTransfer(t.clipboardData) ? t.preventDefault() : void 0;\n },\n paste: function paste(t) {\n var n, o, s, a, u, c, l, p, f, g, v, y, b, A, C, x, w, E, S, R, k, D, L;\n return n = null != (p = t.clipboardData) ? p : t.testClipboardData, l = {\n clipboard: n\n }, null == n || h(t) ? void this.getPastedHTMLUsingHiddenElement(function (t) {\n return function (e) {\n var n, i, o;\n return l.type = \"text/html\", l.html = e, null != (n = t.delegate) && n.inputControllerWillPaste(l), null != (i = t.responder) && i.insertHTML(l.html), t.requestRender(), null != (o = t.delegate) ? o.inputControllerDidPaste(l) : void 0;\n };\n }(this)) : ((a = n.getData(\"URL\")) ? (l.type = \"text/html\", L = (c = n.getData(\"public.url-name\")) ? e.squishBreakableWhitespace(c).trim() : a, l.html = this.createLinkHTML(a, L), null != (f = this.delegate) && f.inputControllerWillPaste(l), this.setInputSummary({\n textAdded: L,\n didDelete: this.selectionIsExpanded()\n }), null != (C = this.responder) && C.insertHTML(l.html), this.requestRender(), null != (x = this.delegate) && x.inputControllerDidPaste(l)) : i(n) ? (l.type = \"text/plain\", l.string = n.getData(\"text/plain\"), null != (w = this.delegate) && w.inputControllerWillPaste(l), this.setInputSummary({\n textAdded: l.string,\n didDelete: this.selectionIsExpanded()\n }), null != (E = this.responder) && E.insertString(l.string), this.requestRender(), null != (S = this.delegate) && S.inputControllerDidPaste(l)) : (u = n.getData(\"text/html\")) ? (l.type = \"text/html\", l.html = u, null != (R = this.delegate) && R.inputControllerWillPaste(l), null != (k = this.responder) && k.insertHTML(l.html), this.requestRender(), null != (D = this.delegate) && D.inputControllerDidPaste(l)) : m.call(n.types, \"Files\") >= 0 && (s = null != (g = n.items) && null != (v = g[0]) && \"function\" == typeof v.getAsFile ? v.getAsFile() : void 0) && (!s.name && (o = r(s)) && (s.name = \"pasted-file-\" + ++d + \".\" + o), l.type = \"File\", l.file = s, null != (y = this.delegate) && y.inputControllerWillAttachFiles(), null != (b = this.responder) && b.insertFile(l.file), this.requestRender(), null != (A = this.delegate) && A.inputControllerDidPaste(l)), t.preventDefault());\n },\n compositionstart: function compositionstart(t) {\n return this.getCompositionInput().start(t.data);\n },\n compositionupdate: function compositionupdate(t) {\n return this.getCompositionInput().update(t.data);\n },\n compositionend: function compositionend(t) {\n return this.getCompositionInput().end(t.data);\n },\n beforeinput: function beforeinput() {\n return this.inputSummary.didInput = !0;\n },\n input: function input(t) {\n return this.inputSummary.didInput = !0, t.stopPropagation();\n }\n }, s.prototype.keys = {\n backspace: function backspace(t) {\n var e;\n return null != (e = this.delegate) && e.inputControllerWillPerformTyping(), this.deleteInDirection(\"backward\", t);\n },\n \"delete\": function _delete(t) {\n var e;\n return null != (e = this.delegate) && e.inputControllerWillPerformTyping(), this.deleteInDirection(\"forward\", t);\n },\n \"return\": function _return() {\n var t, e;\n return this.setInputSummary({\n preferDocument: !0\n }), null != (t = this.delegate) && t.inputControllerWillPerformTyping(), null != (e = this.responder) ? e.insertLineBreak() : void 0;\n },\n tab: function tab(t) {\n var e, n;\n return (null != (e = this.responder) ? e.canIncreaseNestingLevel() : void 0) ? (null != (n = this.responder) && n.increaseNestingLevel(), this.requestRender(), t.preventDefault()) : void 0;\n },\n left: function left(t) {\n var e;\n return this.selectionIsInCursorTarget() ? (t.preventDefault(), null != (e = this.responder) ? e.moveCursorInDirection(\"backward\") : void 0) : void 0;\n },\n right: function right(t) {\n var e;\n return this.selectionIsInCursorTarget() ? (t.preventDefault(), null != (e = this.responder) ? e.moveCursorInDirection(\"forward\") : void 0) : void 0;\n },\n control: {\n d: function d(t) {\n var e;\n return null != (e = this.delegate) && e.inputControllerWillPerformTyping(), this.deleteInDirection(\"forward\", t);\n },\n h: function h(t) {\n var e;\n return null != (e = this.delegate) && e.inputControllerWillPerformTyping(), this.deleteInDirection(\"backward\", t);\n },\n o: function o(t) {\n var e, n;\n return t.preventDefault(), null != (e = this.delegate) && e.inputControllerWillPerformTyping(), null != (n = this.responder) && n.insertString(\"\\n\", {\n updatePosition: !1\n }), this.requestRender();\n }\n },\n shift: {\n \"return\": function _return(t) {\n var e, n;\n return null != (e = this.delegate) && e.inputControllerWillPerformTyping(), null != (n = this.responder) && n.insertString(\"\\n\"), this.requestRender(), t.preventDefault();\n },\n tab: function tab(t) {\n var e, n;\n return (null != (e = this.responder) ? e.canDecreaseNestingLevel() : void 0) ? (null != (n = this.responder) && n.decreaseNestingLevel(), this.requestRender(), t.preventDefault()) : void 0;\n },\n left: function left(t) {\n return this.selectionIsInCursorTarget() ? (t.preventDefault(), this.expandSelectionInDirection(\"backward\")) : void 0;\n },\n right: function right(t) {\n return this.selectionIsInCursorTarget() ? (t.preventDefault(), this.expandSelectionInDirection(\"forward\")) : void 0;\n }\n },\n alt: {\n backspace: function backspace() {\n var t;\n return this.setInputSummary({\n preferDocument: !1\n }), null != (t = this.delegate) ? t.inputControllerWillPerformTyping() : void 0;\n }\n },\n meta: {\n backspace: function backspace() {\n var t;\n return this.setInputSummary({\n preferDocument: !1\n }), null != (t = this.delegate) ? t.inputControllerWillPerformTyping() : void 0;\n }\n }\n }, s.prototype.getCompositionInput = function () {\n return this.isComposing() ? this.compositionInput : this.compositionInput = new t(this);\n }, s.prototype.isComposing = function () {\n return null != this.compositionInput && !this.compositionInput.isEnded();\n }, s.prototype.deleteInDirection = function (t, e) {\n var n;\n return (null != (n = this.responder) ? n.deleteInDirection(t) : void 0) !== !1 ? this.setInputSummary({\n didDelete: !0\n }) : e ? (e.preventDefault(), this.requestRender()) : void 0;\n }, s.prototype.serializeSelectionToDataTransfer = function (t) {\n var n, i;\n if (o(t)) return n = null != (i = this.responder) ? i.getSelectedDocument().toSerializableDocument() : void 0, t.setData(\"application/x-trix-document\", JSON.stringify(n)), t.setData(\"text/html\", e.DocumentView.render(n).innerHTML), t.setData(\"text/plain\", n.toString().replace(/\\n$/, \"\")), !0;\n }, s.prototype.canAcceptDataTransfer = function (t) {\n var e, n, i, o, r, s;\n\n for (s = {}, o = null != (i = null != t ? t.types : void 0) ? i : [], e = 0, n = o.length; n > e; e++) {\n r = o[e], s[r] = !0;\n }\n\n return s.Files || s[\"application/x-trix-document\"] || s[\"text/html\"] || s[\"text/plain\"];\n }, s.prototype.getPastedHTMLUsingHiddenElement = function (t) {\n var n, i, o;\n return i = this.getSelectedRange(), o = {\n position: \"absolute\",\n left: window.pageXOffset + \"px\",\n top: window.pageYOffset + \"px\",\n opacity: 0\n }, n = c({\n style: o,\n tagName: \"div\",\n editable: !0\n }), document.body.appendChild(n), n.focus(), requestAnimationFrame(function (o) {\n return function () {\n var r;\n return r = n.innerHTML, e.removeNode(n), o.setSelectedRange(i), t(r);\n };\n }(this));\n }, s.proxyMethod(\"responder?.getSelectedRange\"), s.proxyMethod(\"responder?.setSelectedRange\"), s.proxyMethod(\"responder?.expandSelectionInDirection\"), s.proxyMethod(\"responder?.selectionIsInCursorTarget\"), s.proxyMethod(\"responder?.selectionIsExpanded\"), s;\n }(e.InputController), r = function r(t) {\n var e, n;\n return null != (e = t.type) && null != (n = e.match(/\\/(\\w+)$/)) ? n[1] : void 0;\n }, s = null != (\"function\" == typeof \" \".codePointAt ? \" \".codePointAt(0) : void 0), p = function p(t) {\n var n;\n return t.key && s && t.key.codePointAt(0) === t.keyCode ? t.key : (null === t.which ? n = t.keyCode : 0 !== t.which && 0 !== t.charCode && (n = t.charCode), null != n && \"escape\" !== u[n] ? e.UTF16String.fromCodepoints([n]).toString() : void 0);\n }, h = function h(t) {\n var e, n, i, o, r, s, a, u, c, l;\n\n if (u = t.clipboardData) {\n if (m.call(u.types, \"text/html\") >= 0) {\n for (c = u.types, i = 0, s = c.length; s > i; i++) {\n if (l = c[i], e = /^CorePasteboardFlavorType/.test(l), n = /^dyn\\./.test(l) && u.getData(l), a = e || n) return !0;\n }\n\n return !1;\n }\n\n return o = m.call(u.types, \"com.apple.webarchive\") >= 0, r = m.call(u.types, \"com.apple.flat-rtfd\") >= 0, o || r;\n }\n }, t = function (t) {\n function e(t) {\n var e;\n this.inputController = t, e = this.inputController, this.responder = e.responder, this.delegate = e.delegate, this.inputSummary = e.inputSummary, this.data = {};\n }\n\n return f(e, t), e.prototype.start = function (t) {\n var e, n;\n return this.data.start = t, this.isSignificant() ? (\"keypress\" === this.inputSummary.eventName && this.inputSummary.textAdded && null != (e = this.responder) && e.deleteInDirection(\"left\"), this.selectionIsExpanded() || (this.insertPlaceholder(), this.requestRender()), this.range = null != (n = this.responder) ? n.getSelectedRange() : void 0) : void 0;\n }, e.prototype.update = function (t) {\n var e;\n return this.data.update = t, this.isSignificant() && (e = this.selectPlaceholder()) ? (this.forgetPlaceholder(), this.range = e) : void 0;\n }, e.prototype.end = function (t) {\n var e, n, i, o;\n return this.data.end = t, this.isSignificant() ? (this.forgetPlaceholder(), this.canApplyToDocument() ? (this.setInputSummary({\n preferDocument: !0,\n didInput: !1\n }), null != (e = this.delegate) && e.inputControllerWillPerformTyping(), null != (n = this.responder) && n.setSelectedRange(this.range), null != (i = this.responder) && i.insertString(this.data.end), null != (o = this.responder) ? o.setSelectedRange(this.range[0] + this.data.end.length) : void 0) : null != this.data.start || null != this.data.update ? (this.requestReparse(), this.inputController.reset()) : void 0) : this.inputController.reset();\n }, e.prototype.getEndData = function () {\n return this.data.end;\n }, e.prototype.isEnded = function () {\n return null != this.getEndData();\n }, e.prototype.isSignificant = function () {\n return n.composesExistingText ? this.inputSummary.didInput : !0;\n }, e.prototype.canApplyToDocument = function () {\n var t, e;\n return 0 === (null != (t = this.data.start) ? t.length : void 0) && (null != (e = this.data.end) ? e.length : void 0) > 0 && null != this.range;\n }, e.proxyMethod(\"inputController.setInputSummary\"), e.proxyMethod(\"inputController.requestRender\"), e.proxyMethod(\"inputController.requestReparse\"), e.proxyMethod(\"responder?.selectionIsExpanded\"), e.proxyMethod(\"responder?.insertPlaceholder\"), e.proxyMethod(\"responder?.selectPlaceholder\"), e.proxyMethod(\"responder?.forgetPlaceholder\"), e;\n }(e.BasicObject);\n }.call(this), function () {\n var t,\n n,\n i,\n o = function o(t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n },\n r = function r(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n s.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n s = {}.hasOwnProperty,\n a = [].indexOf || function (t) {\n for (var e = 0, n = this.length; n > e; e++) {\n if (e in this && this[e] === t) return e;\n }\n\n return -1;\n };\n\n t = e.dataTransferIsPlainText, n = e.keyEventIsKeyboardCommand, i = e.objectsAreEqual, e.Level2InputController = function (s) {\n function u() {\n return this.render = o(this.render, this), u.__super__.constructor.apply(this, arguments);\n }\n\n var c, l, h, p, d, f;\n return r(u, s), u.prototype.elementDidMutate = function () {\n var t;\n return this.scheduledRender ? this.composing && null != (t = this.delegate) && \"function\" == typeof t.inputControllerDidAllowUnhandledInput ? t.inputControllerDidAllowUnhandledInput() : void 0 : this.reparse();\n }, u.prototype.scheduleRender = function () {\n return null != this.scheduledRender ? this.scheduledRender : this.scheduledRender = requestAnimationFrame(this.render);\n }, u.prototype.render = function () {\n var t;\n return cancelAnimationFrame(this.scheduledRender), this.scheduledRender = null, this.composing || null != (t = this.delegate) && t.render(), \"function\" == typeof this.afterRender && this.afterRender(), this.afterRender = null;\n }, u.prototype.reparse = function () {\n var t;\n return null != (t = this.delegate) ? t.reparse() : void 0;\n }, u.prototype.events = {\n keydown: function keydown(t) {\n var e, i, o, r;\n\n if (n(t)) {\n if (e = l(t), null != (r = this.delegate) ? r.inputControllerDidReceiveKeyboardCommand(e) : void 0) return t.preventDefault();\n } else if (o = t.key, t.altKey && (o += \"+Alt\"), t.shiftKey && (o += \"+Shift\"), i = this.keys[o]) return this.withEvent(t, i);\n },\n paste: function paste(t) {\n var e, n, i, o, r, s, a, u, c;\n return h(t) ? (t.preventDefault(), this.attachFiles(t.clipboardData.files)) : p(t) ? (t.preventDefault(), n = {\n type: \"text/plain\",\n string: t.clipboardData.getData(\"text/plain\")\n }, null != (i = this.delegate) && i.inputControllerWillPaste(n), null != (o = this.responder) && o.insertString(n.string), this.render(), null != (r = this.delegate) ? r.inputControllerDidPaste(n) : void 0) : (e = null != (s = t.clipboardData) ? s.getData(\"URL\") : void 0) ? (t.preventDefault(), n = {\n type: \"text/html\",\n html: this.createLinkHTML(e)\n }, null != (a = this.delegate) && a.inputControllerWillPaste(n), null != (u = this.responder) && u.insertHTML(n.html), this.render(), null != (c = this.delegate) ? c.inputControllerDidPaste(n) : void 0) : void 0;\n },\n beforeinput: function beforeinput(t) {\n var e;\n return (e = this.inputTypes[t.inputType]) ? (this.withEvent(t, e), this.scheduleRender()) : void 0;\n },\n input: function input() {\n return e.selectionChangeObserver.reset();\n },\n dragstart: function dragstart(t) {\n var e, n;\n return (null != (e = this.responder) ? e.selectionContainsAttachments() : void 0) ? (t.dataTransfer.setData(\"application/x-trix-dragging\", !0), this.dragging = {\n range: null != (n = this.responder) ? n.getSelectedRange() : void 0,\n point: d(t)\n }) : void 0;\n },\n dragenter: function dragenter(t) {\n return c(t) ? t.preventDefault() : void 0;\n },\n dragover: function dragover(t) {\n var e, n;\n\n if (this.dragging) {\n if (t.preventDefault(), e = d(t), !i(e, this.dragging.point)) return this.dragging.point = e, null != (n = this.responder) ? n.setLocationRangeFromPointRange(e) : void 0;\n } else if (c(t)) return t.preventDefault();\n },\n drop: function drop(t) {\n var e, n, i, o;\n return this.dragging ? (t.preventDefault(), null != (n = this.delegate) && n.inputControllerWillMoveText(), null != (i = this.responder) && i.moveTextFromRange(this.dragging.range), this.dragging = null, this.scheduleRender()) : c(t) ? (t.preventDefault(), e = d(t), null != (o = this.responder) && o.setLocationRangeFromPointRange(e), this.attachFiles(t.dataTransfer.files)) : void 0;\n },\n dragend: function dragend() {\n var t;\n return this.dragging ? (null != (t = this.responder) && t.setSelectedRange(this.dragging.range), this.dragging = null) : void 0;\n },\n compositionend: function compositionend() {\n return this.composing ? (this.composing = !1, this.scheduleRender()) : void 0;\n }\n }, u.prototype.keys = {\n ArrowLeft: function ArrowLeft() {\n var t, e;\n return (null != (t = this.responder) ? t.shouldManageMovingCursorInDirection(\"backward\") : void 0) ? (this.event.preventDefault(), null != (e = this.responder) ? e.moveCursorInDirection(\"backward\") : void 0) : void 0;\n },\n ArrowRight: function ArrowRight() {\n var t, e;\n return (null != (t = this.responder) ? t.shouldManageMovingCursorInDirection(\"forward\") : void 0) ? (this.event.preventDefault(), null != (e = this.responder) ? e.moveCursorInDirection(\"forward\") : void 0) : void 0;\n },\n Backspace: function Backspace() {\n var t, e, n;\n return (null != (t = this.responder) ? t.shouldManageDeletingInDirection(\"backward\") : void 0) ? (this.event.preventDefault(), null != (e = this.delegate) && e.inputControllerWillPerformTyping(), null != (n = this.responder) && n.deleteInDirection(\"backward\"), this.render()) : void 0;\n },\n Tab: function Tab() {\n var t, e;\n return (null != (t = this.responder) ? t.canIncreaseNestingLevel() : void 0) ? (this.event.preventDefault(), null != (e = this.responder) && e.increaseNestingLevel(), this.render()) : void 0;\n },\n \"Tab+Shift\": function TabShift() {\n var t, e;\n return (null != (t = this.responder) ? t.canDecreaseNestingLevel() : void 0) ? (this.event.preventDefault(), null != (e = this.responder) && e.decreaseNestingLevel(), this.render()) : void 0;\n }\n }, u.prototype.inputTypes = {\n deleteByComposition: function deleteByComposition() {\n return this.deleteInDirection(\"backward\", {\n recordUndoEntry: !1\n });\n },\n deleteByCut: function deleteByCut() {\n return this.deleteInDirection(\"backward\");\n },\n deleteByDrag: function deleteByDrag() {\n return this.event.preventDefault(), this.withTargetDOMRange(function () {\n var t;\n return this.deleteByDragRange = null != (t = this.responder) ? t.getSelectedRange() : void 0;\n });\n },\n deleteCompositionText: function deleteCompositionText() {\n return this.deleteInDirection(\"backward\", {\n recordUndoEntry: !1\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 t;\n return (null != (t = this.responder) ? t.canIncreaseNestingLevel() : void 0) ? this.withTargetDOMRange(function () {\n var t;\n return null != (t = this.responder) ? t.increaseNestingLevel() : void 0;\n }) : void 0;\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 t;\n return (null != (t = this.responder) ? t.canDecreaseNestingLevel() : void 0) ? this.withTargetDOMRange(function () {\n var t;\n return null != (t = this.responder) ? t.decreaseNestingLevel() : void 0;\n }) : void 0;\n },\n formatRemove: function formatRemove() {\n return this.withTargetDOMRange(function () {\n var t, e, n, i;\n i = [];\n\n for (t in null != (e = this.responder) ? e.getCurrentAttributes() : void 0) {\n i.push(null != (n = this.responder) ? n.removeCurrentAttribute(t) : void 0);\n }\n\n return i;\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 t;\n return null != (t = this.delegate) ? t.inputControllerWillPerformRedo() : void 0;\n },\n historyUndo: function historyUndo() {\n var t;\n return null != (t = this.delegate) ? t.inputControllerWillPerformUndo() : void 0;\n },\n insertCompositionText: function insertCompositionText() {\n return this.composing = !0, this.insertString(this.event.data);\n },\n insertFromComposition: function insertFromComposition() {\n return this.composing = !1, this.insertString(this.event.data);\n },\n insertFromDrop: function insertFromDrop() {\n var t, e;\n return (t = this.deleteByDragRange) ? (this.deleteByDragRange = null, null != (e = this.delegate) && e.inputControllerWillMoveText(), this.withTargetDOMRange(function () {\n var e;\n return null != (e = this.responder) ? e.moveTextFromRange(t) : void 0;\n })) : void 0;\n },\n insertFromPaste: function insertFromPaste() {\n var n, i, o, r, s, a, u, c, l, h, p;\n return n = this.event.dataTransfer, s = {\n dataTransfer: n\n }, (i = n.getData(\"URL\")) ? (this.event.preventDefault(), s.type = \"text/html\", p = (r = n.getData(\"public.url-name\")) ? e.squishBreakableWhitespace(r).trim() : i, s.html = this.createLinkHTML(i, p), null != (a = this.delegate) && a.inputControllerWillPaste(s), this.withTargetDOMRange(function () {\n var t;\n return null != (t = this.responder) ? t.insertHTML(s.html) : void 0;\n }), this.afterRender = function (t) {\n return function () {\n var e;\n return null != (e = t.delegate) ? e.inputControllerDidPaste(s) : void 0;\n };\n }(this)) : t(n) ? (s.type = \"text/plain\", s.string = n.getData(\"text/plain\"), null != (u = this.delegate) && u.inputControllerWillPaste(s), this.withTargetDOMRange(function () {\n var t;\n return null != (t = this.responder) ? t.insertString(s.string) : void 0;\n }), this.afterRender = function (t) {\n return function () {\n var e;\n return null != (e = t.delegate) ? e.inputControllerDidPaste(s) : void 0;\n };\n }(this)) : (o = n.getData(\"text/html\")) ? (this.event.preventDefault(), s.type = \"text/html\", s.html = o, null != (c = this.delegate) && c.inputControllerWillPaste(s), this.withTargetDOMRange(function () {\n var t;\n return null != (t = this.responder) ? t.insertHTML(s.html) : void 0;\n }), this.afterRender = function (t) {\n return function () {\n var e;\n return null != (e = t.delegate) ? e.inputControllerDidPaste(s) : void 0;\n };\n }(this)) : (null != (l = n.files) ? l.length : void 0) ? (s.type = \"File\", s.file = n.files[0], null != (h = this.delegate) && h.inputControllerWillPaste(s), this.withTargetDOMRange(function () {\n var t;\n return null != (t = this.responder) ? t.insertFile(s.file) : void 0;\n }), this.afterRender = function (t) {\n return function () {\n var e;\n return null != (e = t.delegate) ? e.inputControllerDidPaste(s) : void 0;\n };\n }(this)) : void 0;\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 t;\n return null != (t = this.delegate) && t.inputControllerWillPerformTyping(), this.withTargetDOMRange(function () {\n var t;\n return null != (t = this.responder) ? t.insertLineBreak() : void 0;\n });\n },\n insertReplacementText: function insertReplacementText() {\n return this.insertString(this.event.dataTransfer.getData(\"text/plain\"), {\n updatePosition: !1\n });\n },\n insertText: function insertText() {\n var t, e;\n return this.insertString(null != (t = this.event.data) ? t : null != (e = this.event.dataTransfer) ? e.getData(\"text/plain\") : void 0);\n },\n insertTranspose: function insertTranspose() {\n return this.insertString(this.event.data);\n },\n insertUnorderedList: function insertUnorderedList() {\n return this.toggleAttributeIfSupported(\"bullet\");\n }\n }, u.prototype.insertString = function (t, e) {\n var n;\n return null == t && (t = \"\"), null != (n = this.delegate) && n.inputControllerWillPerformTyping(), this.withTargetDOMRange(function () {\n var n;\n return null != (n = this.responder) ? n.insertString(t, e) : void 0;\n });\n }, u.prototype.toggleAttributeIfSupported = function (t) {\n var n;\n return a.call(e.getAllAttributeNames(), t) >= 0 ? (null != (n = this.delegate) && n.inputControllerWillPerformFormatting(t), this.withTargetDOMRange(function () {\n var e;\n return null != (e = this.responder) ? e.toggleCurrentAttribute(t) : void 0;\n })) : void 0;\n }, u.prototype.activateAttributeIfSupported = function (t, n) {\n var i;\n return a.call(e.getAllAttributeNames(), t) >= 0 ? (null != (i = this.delegate) && i.inputControllerWillPerformFormatting(t), this.withTargetDOMRange(function () {\n var e;\n return null != (e = this.responder) ? e.setCurrentAttribute(t, n) : void 0;\n })) : void 0;\n }, u.prototype.deleteInDirection = function (t, e) {\n var n, i, o, r;\n return o = (null != e ? e : {\n recordUndoEntry: !0\n }).recordUndoEntry, o && null != (r = this.delegate) && r.inputControllerWillPerformTyping(), i = function (e) {\n return function () {\n var n;\n return null != (n = e.responder) ? n.deleteInDirection(t) : void 0;\n };\n }(this), (n = this.getTargetDOMRange({\n minLength: 2\n })) ? this.withTargetDOMRange(n, i) : i();\n }, u.prototype.withTargetDOMRange = function (t, n) {\n var i;\n return \"function\" == typeof t && (n = t, t = this.getTargetDOMRange()), t ? null != (i = this.responder) ? i.withTargetDOMRange(t, n.bind(this)) : void 0 : (e.selectionChangeObserver.reset(), n.call(this));\n }, u.prototype.getTargetDOMRange = function (t) {\n var e, n, i, o;\n return i = (null != t ? t : {\n minLength: 0\n }).minLength, (o = \"function\" == typeof (e = this.event).getTargetRanges ? e.getTargetRanges() : void 0) && o.length && (n = f(o[0]), 0 === i || n.toString().length >= i) ? n : void 0;\n }, f = function f(t) {\n var e;\n return e = document.createRange(), e.setStart(t.startContainer, t.startOffset), e.setEnd(t.endContainer, t.endOffset), e;\n }, u.prototype.withEvent = function (t, e) {\n var n;\n this.event = t;\n\n try {\n n = e.call(this);\n } finally {\n this.event = null;\n }\n\n return n;\n }, c = function c(t) {\n var e, n;\n return a.call(null != (e = null != (n = t.dataTransfer) ? n.types : void 0) ? e : [], \"Files\") >= 0;\n }, h = function h(t) {\n var e;\n return (e = t.clipboardData) ? a.call(e.types, \"Files\") >= 0 && 1 === e.types.length && e.files.length >= 1 : void 0;\n }, p = function p(t) {\n var e;\n return (e = t.clipboardData) ? a.call(e.types, \"text/plain\") >= 0 && 1 === e.types.length : void 0;\n }, l = function l(t) {\n var e;\n return e = [], t.altKey && e.push(\"alt\"), t.shiftKey && e.push(\"shift\"), e.push(t.key), e;\n }, d = function d(t) {\n return {\n x: t.clientX,\n y: t.clientY\n };\n }, u;\n }(e.InputController);\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r,\n s,\n a,\n u,\n c = function c(t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n },\n l = function l(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n h.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n h = {}.hasOwnProperty;\n\n n = e.defer, i = e.handleEvent, s = e.makeElement, u = e.tagName, a = e.config, r = a.lang, t = a.css, o = a.keyNames, e.AttachmentEditorController = function (a) {\n function h(t, e, n, i) {\n this.attachmentPiece = t, this.element = e, this.container = n, this.options = null != i ? i : {}, this.didBlurCaption = c(this.didBlurCaption, this), this.didChangeCaption = c(this.didChangeCaption, this), this.didInputCaption = c(this.didInputCaption, this), this.didKeyDownCaption = c(this.didKeyDownCaption, this), this.didClickActionButton = c(this.didClickActionButton, this), this.didClickToolbar = c(this.didClickToolbar, this), this.attachment = this.attachmentPiece.attachment, \"a\" === u(this.element) && (this.element = this.element.firstChild), this.install();\n }\n\n var p;\n return l(h, a), p = function p(t) {\n return function () {\n var e;\n return e = t.apply(this, arguments), e[\"do\"](), null == this.undos && (this.undos = []), this.undos.push(e.undo);\n };\n }, h.prototype.install = function () {\n return this.makeElementMutable(), this.addToolbar(), this.attachment.isPreviewable() ? this.installCaptionEditor() : void 0;\n }, h.prototype.uninstall = function () {\n var t, e;\n\n for (this.savePendingCaption(); e = this.undos.pop();) {\n e();\n }\n\n return null != (t = this.delegate) ? t.didUninstallAttachmentEditor(this) : void 0;\n }, h.prototype.savePendingCaption = function () {\n var t, e, n;\n return null != this.pendingCaption ? (t = this.pendingCaption, this.pendingCaption = null, t ? null != (e = this.delegate) && \"function\" == typeof e.attachmentEditorDidRequestUpdatingAttributesForAttachment ? e.attachmentEditorDidRequestUpdatingAttributesForAttachment({\n caption: t\n }, this.attachment) : void 0 : null != (n = this.delegate) && \"function\" == typeof n.attachmentEditorDidRequestRemovingAttributeForAttachment ? n.attachmentEditorDidRequestRemovingAttributeForAttachment(\"caption\", this.attachment) : void 0) : void 0;\n }, h.prototype.makeElementMutable = p(function () {\n return {\n \"do\": function (t) {\n return function () {\n return t.element.dataset.trixMutable = !0;\n };\n }(this),\n undo: function (t) {\n return function () {\n return delete t.element.dataset.trixMutable;\n };\n }(this)\n };\n }), h.prototype.addToolbar = p(function () {\n var n;\n return n = s({\n tagName: \"div\",\n className: t.attachmentToolbar,\n data: {\n trixMutable: !0\n },\n childNodes: s({\n tagName: \"div\",\n className: \"trix-button-row\",\n childNodes: s({\n tagName: \"span\",\n className: \"trix-button-group trix-button-group--actions\",\n childNodes: s({\n tagName: \"button\",\n className: \"trix-button trix-button--remove\",\n textContent: r.remove,\n attributes: {\n title: r.remove\n },\n data: {\n trixAction: \"remove\"\n }\n })\n })\n })\n }), this.attachment.isPreviewable() && n.appendChild(s({\n tagName: \"div\",\n className: t.attachmentMetadataContainer,\n childNodes: s({\n tagName: \"span\",\n className: t.attachmentMetadata,\n childNodes: [s({\n tagName: \"span\",\n className: t.attachmentName,\n textContent: this.attachment.getFilename(),\n attributes: {\n title: this.attachment.getFilename()\n }\n }), s({\n tagName: \"span\",\n className: t.attachmentSize,\n textContent: this.attachment.getFormattedFilesize()\n })]\n })\n })), i(\"click\", {\n onElement: n,\n withCallback: this.didClickToolbar\n }), i(\"click\", {\n onElement: n,\n matchingSelector: \"[data-trix-action]\",\n withCallback: this.didClickActionButton\n }), {\n \"do\": function (t) {\n return function () {\n return t.element.appendChild(n);\n };\n }(this),\n undo: function () {\n return function () {\n return e.removeNode(n);\n };\n }(this)\n };\n }), h.prototype.installCaptionEditor = p(function () {\n var o, a, u, c, l;\n return c = s({\n tagName: \"textarea\",\n className: t.attachmentCaptionEditor,\n attributes: {\n placeholder: r.captionPlaceholder\n },\n data: {\n trixMutable: !0\n }\n }), c.value = this.attachmentPiece.getCaption(), l = c.cloneNode(), l.classList.add(\"trix-autoresize-clone\"), l.tabIndex = -1, o = function o() {\n return l.value = c.value, c.style.height = l.scrollHeight + \"px\";\n }, i(\"input\", {\n onElement: c,\n withCallback: o\n }), i(\"input\", {\n onElement: c,\n withCallback: this.didInputCaption\n }), i(\"keydown\", {\n onElement: c,\n withCallback: this.didKeyDownCaption\n }), i(\"change\", {\n onElement: c,\n withCallback: this.didChangeCaption\n }), i(\"blur\", {\n onElement: c,\n withCallback: this.didBlurCaption\n }), u = this.element.querySelector(\"figcaption\"), a = u.cloneNode(), {\n \"do\": function (e) {\n return function () {\n return u.style.display = \"none\", a.appendChild(c), a.appendChild(l), a.classList.add(t.attachmentCaption + \"--editing\"), u.parentElement.insertBefore(a, u), o(), e.options.editCaption ? n(function () {\n return c.focus();\n }) : void 0;\n };\n }(this),\n undo: function undo() {\n return e.removeNode(a), u.style.display = null;\n }\n };\n }), h.prototype.didClickToolbar = function (t) {\n return t.preventDefault(), t.stopPropagation();\n }, h.prototype.didClickActionButton = function (t) {\n var e, n;\n\n switch (e = t.target.getAttribute(\"data-trix-action\")) {\n case \"remove\":\n return null != (n = this.delegate) ? n.attachmentEditorDidRequestRemovalOfAttachment(this.attachment) : void 0;\n }\n }, h.prototype.didKeyDownCaption = function (t) {\n var e;\n return \"return\" === o[t.keyCode] ? (t.preventDefault(), this.savePendingCaption(), null != (e = this.delegate) && \"function\" == typeof e.attachmentEditorDidRequestDeselectingAttachment ? e.attachmentEditorDidRequestDeselectingAttachment(this.attachment) : void 0) : void 0;\n }, h.prototype.didInputCaption = function (t) {\n return this.pendingCaption = t.target.value.replace(/\\s/g, \" \").trim();\n }, h.prototype.didChangeCaption = function () {\n return this.savePendingCaption();\n }, h.prototype.didBlurCaption = function () {\n return this.savePendingCaption();\n }, h;\n }(e.BasicObject);\n }.call(this), function () {\n var t,\n n,\n i,\n o = function o(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n r.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n r = {}.hasOwnProperty;\n\n i = e.makeElement, t = e.config.css, e.AttachmentView = function (r) {\n function s() {\n s.__super__.constructor.apply(this, arguments), this.attachment = this.object, this.attachment.uploadProgressDelegate = this, this.attachmentPiece = this.options.piece;\n }\n\n var a;\n return o(s, r), s.attachmentSelector = \"[data-trix-attachment]\", s.prototype.createContentNodes = function () {\n return [];\n }, s.prototype.createNodes = function () {\n var e, n, o, r, s, u, c;\n if (e = r = i({\n tagName: \"figure\",\n className: this.getClassName(),\n data: this.getData(),\n editable: !1\n }), (n = this.getHref()) && (r = i({\n tagName: \"a\",\n editable: !1,\n attributes: {\n href: n,\n tabindex: -1\n }\n }), e.appendChild(r)), this.attachment.hasContent()) r.innerHTML = this.attachment.getContent();else for (c = this.createContentNodes(), o = 0, s = c.length; s > o; o++) {\n u = c[o], r.appendChild(u);\n }\n return r.appendChild(this.createCaptionElement()), this.attachment.isPending() && (this.progressElement = i({\n tagName: \"progress\",\n attributes: {\n \"class\": t.attachmentProgress,\n value: this.attachment.getUploadProgress(),\n max: 100\n },\n data: {\n trixMutable: !0,\n trixStoreKey: [\"progressElement\", this.attachment.id].join(\"/\")\n }\n }), e.appendChild(this.progressElement)), [a(\"left\"), e, a(\"right\")];\n }, s.prototype.createCaptionElement = function () {\n var e, n, o, r, s, a, u;\n return o = i({\n tagName: \"figcaption\",\n className: t.attachmentCaption\n }), (e = this.attachmentPiece.getCaption()) ? (o.classList.add(t.attachmentCaption + \"--edited\"), o.textContent = e) : (n = this.getCaptionConfig(), n.name && (r = this.attachment.getFilename()), n.size && (a = this.attachment.getFormattedFilesize()), r && (s = i({\n tagName: \"span\",\n className: t.attachmentName,\n textContent: r\n }), o.appendChild(s)), a && (r && o.appendChild(document.createTextNode(\" \")), u = i({\n tagName: \"span\",\n className: t.attachmentSize,\n textContent: a\n }), o.appendChild(u))), o;\n }, s.prototype.getClassName = function () {\n var e, n;\n return n = [t.attachment, t.attachment + \"--\" + this.attachment.getType()], (e = this.attachment.getExtension()) && n.push(t.attachment + \"--\" + e), n.join(\" \");\n }, s.prototype.getData = function () {\n var t, e;\n return e = {\n trixAttachment: JSON.stringify(this.attachment),\n trixContentType: this.attachment.getContentType(),\n trixId: this.attachment.id\n }, t = this.attachmentPiece.attributes, t.isEmpty() || (e.trixAttributes = JSON.stringify(t)), this.attachment.isPending() && (e.trixSerialize = !1), e;\n }, s.prototype.getHref = function () {\n return n(this.attachment.getContent(), \"a\") ? void 0 : this.attachment.getHref();\n }, s.prototype.getCaptionConfig = function () {\n var t, n, i;\n return i = this.attachment.getType(), t = e.copyObject(null != (n = e.config.attachments[i]) ? n.caption : void 0), \"file\" === i && (t.name = !0), t;\n }, s.prototype.findProgressElement = function () {\n var t;\n return null != (t = this.findElement()) ? t.querySelector(\"progress\") : void 0;\n }, a = function a(t) {\n return i({\n tagName: \"span\",\n textContent: e.ZERO_WIDTH_SPACE,\n data: {\n trixCursorTarget: t,\n trixSerialize: !1\n }\n });\n }, s.prototype.attachmentDidChangeUploadProgress = function () {\n var t, e;\n return e = this.attachment.getUploadProgress(), null != (t = this.findProgressElement()) ? t.value = e : void 0;\n }, s;\n }(e.ObjectView), n = function n(t, e) {\n var n;\n return n = i(\"div\"), n.innerHTML = null != t ? t : \"\", n.querySelector(e);\n };\n }.call(this), function () {\n var t,\n n = function n(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var o in e) {\n i.call(e, o) && (t[o] = e[o]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n i = {}.hasOwnProperty;\n\n t = e.makeElement, e.PreviewableAttachmentView = function (i) {\n function o() {\n o.__super__.constructor.apply(this, arguments), this.attachment.previewDelegate = this;\n }\n\n return n(o, i), o.prototype.createContentNodes = function () {\n return this.image = t({\n tagName: \"img\",\n attributes: {\n src: \"\"\n },\n data: {\n trixMutable: !0\n }\n }), this.refresh(this.image), [this.image];\n }, o.prototype.createCaptionElement = function () {\n var t;\n return t = o.__super__.createCaptionElement.apply(this, arguments), t.textContent || t.setAttribute(\"data-trix-placeholder\", e.config.lang.captionPlaceholder), t;\n }, o.prototype.refresh = function (t) {\n var e;\n return null == t && (t = null != (e = this.findElement()) ? e.querySelector(\"img\") : void 0), t ? this.updateAttributesForImage(t) : void 0;\n }, o.prototype.updateAttributesForImage = function (t) {\n var e, n, i, o, r, s;\n return r = this.attachment.getURL(), n = this.attachment.getPreviewURL(), t.src = n || r, n === r ? t.removeAttribute(\"data-trix-serialized-attributes\") : (i = JSON.stringify({\n src: r\n }), t.setAttribute(\"data-trix-serialized-attributes\", i)), s = this.attachment.getWidth(), e = this.attachment.getHeight(), null != s && (t.width = s), null != e && (t.height = e), o = [\"imageElement\", this.attachment.id, t.src, t.width, t.height].join(\"/\"), t.dataset.trixStoreKey = o;\n }, o.prototype.attachmentDidChangeAttributes = function () {\n return this.refresh(this.image), this.refresh();\n }, o;\n }(e.AttachmentView);\n }.call(this), function () {\n var t,\n n,\n i,\n o = function o(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n r.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n r = {}.hasOwnProperty;\n\n i = e.makeElement, t = e.findInnerElement, n = e.getTextConfig, e.PieceView = function (r) {\n function s() {\n var t;\n s.__super__.constructor.apply(this, arguments), this.piece = this.object, this.attributes = this.piece.getAttributes(), t = this.options, this.textConfig = t.textConfig, this.context = t.context, this.piece.attachment ? this.attachment = this.piece.attachment : this.string = this.piece.toString();\n }\n\n var a;\n return o(s, r), s.prototype.createNodes = function () {\n var e, n, i, o, r, s;\n\n if (s = this.attachment ? this.createAttachmentNodes() : this.createStringNodes(), e = this.createElement()) {\n for (i = t(e), n = 0, o = s.length; o > n; n++) {\n r = s[n], i.appendChild(r);\n }\n\n s = [e];\n }\n\n return s;\n }, s.prototype.createAttachmentNodes = function () {\n var t, n;\n return t = this.attachment.isPreviewable() ? e.PreviewableAttachmentView : e.AttachmentView, n = this.createChildView(t, this.piece.attachment, {\n piece: this.piece\n }), n.getNodes();\n }, s.prototype.createStringNodes = function () {\n var t, e, n, o, r, s, a, u, c, l;\n if (null != (u = this.textConfig) ? u.plaintext : void 0) return [document.createTextNode(this.string)];\n\n for (a = [], c = this.string.split(\"\\n\"), n = e = 0, o = c.length; o > e; n = ++e) {\n l = c[n], n > 0 && (t = i(\"br\"), a.push(t)), (r = l.length) && (s = document.createTextNode(this.preserveSpaces(l)), a.push(s));\n }\n\n return a;\n }, s.prototype.createElement = function () {\n var t, e, o, r, s, a, u, c, l;\n c = {}, a = this.attributes;\n\n for (r in a) {\n if (l = a[r], (t = n(r)) && (t.tagName && (s = i(t.tagName), o ? (o.appendChild(s), o = s) : e = o = s), t.styleProperty && (c[t.styleProperty] = l), t.style)) {\n u = t.style;\n\n for (r in u) {\n l = u[r], c[r] = l;\n }\n }\n }\n\n if (Object.keys(c).length) {\n null == e && (e = i(\"span\"));\n\n for (r in c) {\n l = c[r], e.style[r] = l;\n }\n }\n\n return e;\n }, s.prototype.createContainerElement = function () {\n var t, e, o, r, s;\n r = this.attributes;\n\n for (o in r) {\n if (s = r[o], (e = n(o)) && e.groupTagName) return t = {}, t[o] = s, i(e.groupTagName, t);\n }\n }, a = e.NON_BREAKING_SPACE, s.prototype.preserveSpaces = function (t) {\n return this.context.isLast && (t = t.replace(/\\ $/, a)), t = t.replace(/(\\S)\\ {3}(\\S)/g, \"$1 \" + a + \" $2\").replace(/\\ {2}/g, a + \" \").replace(/\\ {2}/g, \" \" + a), (this.context.isFirst || this.context.followsWhitespace) && (t = t.replace(/^\\ /, a)), t;\n }, s;\n }(e.ObjectView);\n }.call(this), function () {\n var t = function t(_t11, e) {\n function i() {\n this.constructor = _t11;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t11[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t11.prototype = new i(), _t11.__super__ = e.prototype, _t11;\n },\n n = {}.hasOwnProperty;\n\n e.TextView = function (n) {\n function i() {\n i.__super__.constructor.apply(this, arguments), this.text = this.object, this.textConfig = this.options.textConfig;\n }\n\n var o;\n return t(i, n), i.prototype.createNodes = function () {\n var t, n, i, r, s, a, u, c, l, h;\n\n for (a = [], c = e.ObjectGroup.groupObjects(this.getPieces()), r = c.length - 1, i = n = 0, s = c.length; s > n; i = ++n) {\n u = c[i], t = {}, 0 === i && (t.isFirst = !0), i === r && (t.isLast = !0), o(l) && (t.followsWhitespace = !0), h = this.findOrCreateCachedChildView(e.PieceView, u, {\n textConfig: this.textConfig,\n context: t\n }), a.push.apply(a, h.getNodes()), l = u;\n }\n\n return a;\n }, i.prototype.getPieces = function () {\n var t, e, n, i, o;\n\n for (i = this.text.getPieces(), o = [], t = 0, e = i.length; e > t; t++) {\n n = i[t], n.hasAttribute(\"blockBreak\") || o.push(n);\n }\n\n return o;\n }, o = function o(t) {\n return /\\s$/.test(null != t ? t.toString() : void 0);\n }, i;\n }(e.ObjectView);\n }.call(this), function () {\n var t,\n n,\n i,\n o = function o(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n r.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n r = {}.hasOwnProperty;\n\n i = e.makeElement, n = e.getBlockConfig, t = e.config.css, e.BlockView = function (r) {\n function s() {\n s.__super__.constructor.apply(this, arguments), this.block = this.object, this.attributes = this.block.getAttributes();\n }\n\n return o(s, r), s.prototype.createNodes = function () {\n var t, o, r, s, a, u, c, l, h, p, d;\n if (o = document.createComment(\"block\"), c = [o], this.block.isEmpty() ? c.push(i(\"br\")) : (p = null != (l = n(this.block.getLastAttribute())) ? l.text : void 0, d = this.findOrCreateCachedChildView(e.TextView, this.block.text, {\n textConfig: p\n }), c.push.apply(c, d.getNodes()), this.shouldAddExtraNewlineElement() && c.push(i(\"br\"))), this.attributes.length) return c;\n\n for (h = e.config.blockAttributes[\"default\"].tagName, this.block.isRTL() && (t = {\n dir: \"rtl\"\n }), r = i({\n tagName: h,\n attributes: t\n }), s = 0, a = c.length; a > s; s++) {\n u = c[s], r.appendChild(u);\n }\n\n return [r];\n }, s.prototype.createContainerElement = function (e) {\n var o, r, s, a, u;\n return o = this.attributes[e], u = n(o).tagName, 0 === e && this.block.isRTL() && (r = {\n dir: \"rtl\"\n }), \"attachmentGallery\" === o && (a = this.block.getBlockBreakPosition(), s = t.attachmentGallery + \" \" + t.attachmentGallery + \"--\" + a), i({\n tagName: u,\n className: s,\n attributes: r\n });\n }, s.prototype.shouldAddExtraNewlineElement = function () {\n return /\\n\\n$/.test(this.block.toString());\n }, s;\n }(e.ObjectView);\n }.call(this), function () {\n var t,\n n,\n i = function i(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n o.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n o = {}.hasOwnProperty;\n\n t = e.defer, n = e.makeElement, e.DocumentView = function (o) {\n function r() {\n r.__super__.constructor.apply(this, arguments), this.element = this.options.element, this.elementStore = new e.ElementStore(), this.setDocument(this.object);\n }\n\n var s, a, u;\n return i(r, o), r.render = function (t) {\n var e, i;\n return e = n(\"div\"), i = new this(t, {\n element: e\n }), i.render(), i.sync(), e;\n }, r.prototype.setDocument = function (t) {\n return t.isEqualTo(this.document) ? void 0 : this.document = this.object = t;\n }, r.prototype.render = function () {\n var t, i, o, r, s, a, u;\n\n if (this.childViews = [], this.shadowElement = n(\"div\"), !this.document.isEmpty()) {\n for (s = e.ObjectGroup.groupObjects(this.document.getBlocks(), {\n asTree: !0\n }), a = [], t = 0, i = s.length; i > t; t++) {\n r = s[t], u = this.findOrCreateCachedChildView(e.BlockView, r), a.push(function () {\n var t, e, n, i;\n\n for (n = u.getNodes(), i = [], t = 0, e = n.length; e > t; t++) {\n o = n[t], i.push(this.shadowElement.appendChild(o));\n }\n\n return i;\n }.call(this));\n }\n\n return a;\n }\n }, r.prototype.isSynced = function () {\n return s(this.shadowElement, this.element);\n }, r.prototype.sync = function () {\n var t;\n\n for (t = this.createDocumentFragmentForSync(); this.element.lastChild;) {\n this.element.removeChild(this.element.lastChild);\n }\n\n return this.element.appendChild(t), this.didSync();\n }, r.prototype.didSync = function () {\n return this.elementStore.reset(a(this.element)), t(function (t) {\n return function () {\n return t.garbageCollectCachedViews();\n };\n }(this));\n }, r.prototype.createDocumentFragmentForSync = function () {\n var t, e, n, i, o, r, s, u, c, l;\n\n for (e = document.createDocumentFragment(), u = this.shadowElement.childNodes, n = 0, o = u.length; o > n; n++) {\n s = u[n], e.appendChild(s.cloneNode(!0));\n }\n\n for (c = a(e), i = 0, r = c.length; r > i; i++) {\n t = c[i], (l = this.elementStore.remove(t)) && t.parentNode.replaceChild(l, t);\n }\n\n return e;\n }, a = function a(t) {\n return t.querySelectorAll(\"[data-trix-store-key]\");\n }, s = function s(t, e) {\n return u(t.innerHTML) === u(e.innerHTML);\n }, u = function u(t) {\n return t.replace(/ /g, \" \");\n }, r;\n }(e.ObjectView);\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r,\n s = function s(t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n },\n a = function a(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n u.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n u = {}.hasOwnProperty;\n\n i = e.findClosestElementFromNode, o = e.handleEvent, r = e.innerElementIsActive, n = e.defer, t = e.AttachmentView.attachmentSelector, e.CompositionController = function (u) {\n function c(n, i) {\n this.element = n, this.composition = i, this.didClickAttachment = s(this.didClickAttachment, this), this.didBlur = s(this.didBlur, this), this.didFocus = s(this.didFocus, this), this.documentView = new e.DocumentView(this.composition.document, {\n element: this.element\n }), o(\"focus\", {\n onElement: this.element,\n withCallback: this.didFocus\n }), o(\"blur\", {\n onElement: this.element,\n withCallback: this.didBlur\n }), o(\"click\", {\n onElement: this.element,\n matchingSelector: \"a[contenteditable=false]\",\n preventDefault: !0\n }), o(\"mousedown\", {\n onElement: this.element,\n matchingSelector: t,\n withCallback: this.didClickAttachment\n }), o(\"click\", {\n onElement: this.element,\n matchingSelector: \"a\" + t,\n preventDefault: !0\n });\n }\n\n return a(c, u), c.prototype.didFocus = function () {\n var t, e, n;\n return t = function (t) {\n return function () {\n var e;\n return t.focused ? void 0 : (t.focused = !0, null != (e = t.delegate) && \"function\" == typeof e.compositionControllerDidFocus ? e.compositionControllerDidFocus() : void 0);\n };\n }(this), null != (e = null != (n = this.blurPromise) ? n.then(t) : void 0) ? e : t();\n }, c.prototype.didBlur = function () {\n return this.blurPromise = new Promise(function (t) {\n return function (e) {\n return n(function () {\n var n;\n return r(t.element) || (t.focused = null, null != (n = t.delegate) && \"function\" == typeof n.compositionControllerDidBlur && n.compositionControllerDidBlur()), t.blurPromise = null, e();\n });\n };\n }(this));\n }, c.prototype.didClickAttachment = function (t, e) {\n var n, o, r;\n return n = this.findAttachmentForElement(e), o = null != i(t.target, {\n matchingSelector: \"figcaption\"\n }), null != (r = this.delegate) && \"function\" == typeof r.compositionControllerDidSelectAttachment ? r.compositionControllerDidSelectAttachment(n, {\n editCaption: o\n }) : void 0;\n }, c.prototype.getSerializableElement = function () {\n return this.isEditingAttachment() ? this.documentView.shadowElement : this.element;\n }, c.prototype.render = function () {\n var t, e, n;\n return this.revision !== this.composition.revision && (this.documentView.setDocument(this.composition.document), this.documentView.render(), this.revision = this.composition.revision), this.canSyncDocumentView() && !this.documentView.isSynced() && (null != (t = this.delegate) && \"function\" == typeof t.compositionControllerWillSyncDocumentView && t.compositionControllerWillSyncDocumentView(), this.documentView.sync(), null != (e = this.delegate) && \"function\" == typeof e.compositionControllerDidSyncDocumentView && e.compositionControllerDidSyncDocumentView()), null != (n = this.delegate) && \"function\" == typeof n.compositionControllerDidRender ? n.compositionControllerDidRender() : void 0;\n }, c.prototype.rerenderViewForObject = function (t) {\n return this.invalidateViewForObject(t), this.render();\n }, c.prototype.invalidateViewForObject = function (t) {\n return this.documentView.invalidateViewForObject(t);\n }, c.prototype.isViewCachingEnabled = function () {\n return this.documentView.isViewCachingEnabled();\n }, c.prototype.enableViewCaching = function () {\n return this.documentView.enableViewCaching();\n }, c.prototype.disableViewCaching = function () {\n return this.documentView.disableViewCaching();\n }, c.prototype.refreshViewCache = function () {\n return this.documentView.garbageCollectCachedViews();\n }, c.prototype.isEditingAttachment = function () {\n return null != this.attachmentEditor;\n }, c.prototype.installAttachmentEditorForAttachment = function (t, n) {\n var i, o, r;\n if ((null != (r = this.attachmentEditor) ? r.attachment : void 0) !== t && (o = this.documentView.findElementForObject(t))) return this.uninstallAttachmentEditor(), i = this.composition.document.getAttachmentPieceForAttachment(t), this.attachmentEditor = new e.AttachmentEditorController(i, o, this.element, n), this.attachmentEditor.delegate = this;\n }, c.prototype.uninstallAttachmentEditor = function () {\n var t;\n return null != (t = this.attachmentEditor) ? t.uninstall() : void 0;\n }, c.prototype.didUninstallAttachmentEditor = function () {\n return this.attachmentEditor = null, this.render();\n }, c.prototype.attachmentEditorDidRequestUpdatingAttributesForAttachment = function (t, e) {\n var n;\n return null != (n = this.delegate) && \"function\" == typeof n.compositionControllerWillUpdateAttachment && n.compositionControllerWillUpdateAttachment(e), this.composition.updateAttributesForAttachment(t, e);\n }, c.prototype.attachmentEditorDidRequestRemovingAttributeForAttachment = function (t, e) {\n var n;\n return null != (n = this.delegate) && \"function\" == typeof n.compositionControllerWillUpdateAttachment && n.compositionControllerWillUpdateAttachment(e), this.composition.removeAttributeForAttachment(t, e);\n }, c.prototype.attachmentEditorDidRequestRemovalOfAttachment = function (t) {\n var e;\n return null != (e = this.delegate) && \"function\" == typeof e.compositionControllerDidRequestRemovalOfAttachment ? e.compositionControllerDidRequestRemovalOfAttachment(t) : void 0;\n }, c.prototype.attachmentEditorDidRequestDeselectingAttachment = function (t) {\n var e;\n return null != (e = this.delegate) && \"function\" == typeof e.compositionControllerDidRequestDeselectingAttachment ? e.compositionControllerDidRequestDeselectingAttachment(t) : void 0;\n }, c.prototype.canSyncDocumentView = function () {\n return !this.isEditingAttachment();\n }, c.prototype.findAttachmentForElement = function (t) {\n return this.composition.document.getAttachmentById(parseInt(t.dataset.trixId, 10));\n }, c;\n }(e.BasicObject);\n }.call(this), function () {\n var t,\n n,\n i,\n o = function o(t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n },\n r = function r(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n s.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n s = {}.hasOwnProperty;\n\n n = e.handleEvent, i = e.triggerEvent, t = e.findClosestElementFromNode, e.ToolbarController = function (e) {\n function s(t) {\n this.element = t, this.didKeyDownDialogInput = o(this.didKeyDownDialogInput, this), this.didClickDialogButton = o(this.didClickDialogButton, this), this.didClickAttributeButton = o(this.didClickAttributeButton, this), this.didClickActionButton = o(this.didClickActionButton, this), this.attributes = {}, this.actions = {}, this.resetDialogInputs(), n(\"mousedown\", {\n onElement: this.element,\n matchingSelector: a,\n withCallback: this.didClickActionButton\n }), n(\"mousedown\", {\n onElement: this.element,\n matchingSelector: c,\n withCallback: this.didClickAttributeButton\n }), n(\"click\", {\n onElement: this.element,\n matchingSelector: v,\n preventDefault: !0\n }), n(\"click\", {\n onElement: this.element,\n matchingSelector: l,\n withCallback: this.didClickDialogButton\n }), n(\"keydown\", {\n onElement: this.element,\n matchingSelector: h,\n withCallback: this.didKeyDownDialogInput\n });\n }\n\n var a, u, c, l, h, p, d, f, g, m, v;\n return r(s, e), c = \"[data-trix-attribute]\", a = \"[data-trix-action]\", v = c + \", \" + a, p = \"[data-trix-dialog]\", u = p + \"[data-trix-active]\", l = p + \" [data-trix-method]\", h = p + \" [data-trix-input]\", s.prototype.didClickActionButton = function (t, e) {\n var n, i, o;\n return null != (i = this.delegate) && i.toolbarDidClickButton(), t.preventDefault(), n = d(e), this.getDialog(n) ? this.toggleDialog(n) : null != (o = this.delegate) ? o.toolbarDidInvokeAction(n) : void 0;\n }, s.prototype.didClickAttributeButton = function (t, e) {\n var n, i, o;\n return null != (i = this.delegate) && i.toolbarDidClickButton(), t.preventDefault(), n = f(e), this.getDialog(n) ? this.toggleDialog(n) : null != (o = this.delegate) && o.toolbarDidToggleAttribute(n), this.refreshAttributeButtons();\n }, s.prototype.didClickDialogButton = function (e, n) {\n var i, o;\n return i = t(n, {\n matchingSelector: p\n }), o = n.getAttribute(\"data-trix-method\"), this[o].call(this, i);\n }, s.prototype.didKeyDownDialogInput = function (t, e) {\n var n, i;\n return 13 === t.keyCode && (t.preventDefault(), n = e.getAttribute(\"name\"), i = this.getDialog(n), this.setAttribute(i)), 27 === t.keyCode ? (t.preventDefault(), this.hideDialog()) : void 0;\n }, s.prototype.updateActions = function (t) {\n return this.actions = t, this.refreshActionButtons();\n }, s.prototype.refreshActionButtons = function () {\n return this.eachActionButton(function (t) {\n return function (e, n) {\n return e.disabled = t.actions[n] === !1;\n };\n }(this));\n }, s.prototype.eachActionButton = function (t) {\n var e, n, i, o, r;\n\n for (o = this.element.querySelectorAll(a), r = [], n = 0, i = o.length; i > n; n++) {\n e = o[n], r.push(t(e, d(e)));\n }\n\n return r;\n }, s.prototype.updateAttributes = function (t) {\n return this.attributes = t, this.refreshAttributeButtons();\n }, s.prototype.refreshAttributeButtons = function () {\n return this.eachAttributeButton(function (t) {\n return function (e, n) {\n return e.disabled = t.attributes[n] === !1, t.attributes[n] || t.dialogIsVisible(n) ? (e.setAttribute(\"data-trix-active\", \"\"), e.classList.add(\"trix-active\")) : (e.removeAttribute(\"data-trix-active\"), e.classList.remove(\"trix-active\"));\n };\n }(this));\n }, s.prototype.eachAttributeButton = function (t) {\n var e, n, i, o, r;\n\n for (o = this.element.querySelectorAll(c), r = [], n = 0, i = o.length; i > n; n++) {\n e = o[n], r.push(t(e, f(e)));\n }\n\n return r;\n }, s.prototype.applyKeyboardCommand = function (t) {\n var e, n, o, r, s, a, u;\n\n for (s = JSON.stringify(t.sort()), u = this.element.querySelectorAll(\"[data-trix-key]\"), r = 0, a = u.length; a > r; r++) {\n if (e = u[r], o = e.getAttribute(\"data-trix-key\").split(\"+\"), n = JSON.stringify(o.sort()), n === s) return i(\"mousedown\", {\n onElement: e\n }), !0;\n }\n\n return !1;\n }, s.prototype.dialogIsVisible = function (t) {\n var e;\n return (e = this.getDialog(t)) ? e.hasAttribute(\"data-trix-active\") : void 0;\n }, s.prototype.toggleDialog = function (t) {\n return this.dialogIsVisible(t) ? this.hideDialog() : this.showDialog(t);\n }, s.prototype.showDialog = function (t) {\n var e, n, i, o, r, s, a, u, c, l;\n\n for (this.hideDialog(), null != (a = this.delegate) && a.toolbarWillShowDialog(), i = this.getDialog(t), i.setAttribute(\"data-trix-active\", \"\"), i.classList.add(\"trix-active\"), u = i.querySelectorAll(\"input[disabled]\"), o = 0, s = u.length; s > o; o++) {\n n = u[o], n.removeAttribute(\"disabled\");\n }\n\n return (e = f(i)) && (r = m(i, t)) && (r.value = null != (c = this.attributes[e]) ? c : \"\", r.select()), null != (l = this.delegate) ? l.toolbarDidShowDialog(t) : void 0;\n }, s.prototype.setAttribute = function (t) {\n var e, n, i;\n return e = f(t), n = m(t, e), n.willValidate && !n.checkValidity() ? (n.setAttribute(\"data-trix-validate\", \"\"), n.classList.add(\"trix-validate\"), n.focus()) : (null != (i = this.delegate) && i.toolbarDidUpdateAttribute(e, n.value), this.hideDialog());\n }, s.prototype.removeAttribute = function (t) {\n var e, n;\n return e = f(t), null != (n = this.delegate) && n.toolbarDidRemoveAttribute(e), this.hideDialog();\n }, s.prototype.hideDialog = function () {\n var t, e;\n return (t = this.element.querySelector(u)) ? (t.removeAttribute(\"data-trix-active\"), t.classList.remove(\"trix-active\"), this.resetDialogInputs(), null != (e = this.delegate) ? e.toolbarDidHideDialog(g(t)) : void 0) : void 0;\n }, s.prototype.resetDialogInputs = function () {\n var t, e, n, i, o;\n\n for (i = this.element.querySelectorAll(h), o = [], t = 0, n = i.length; n > t; t++) {\n e = i[t], e.setAttribute(\"disabled\", \"disabled\"), e.removeAttribute(\"data-trix-validate\"), o.push(e.classList.remove(\"trix-validate\"));\n }\n\n return o;\n }, s.prototype.getDialog = function (t) {\n return this.element.querySelector(\"[data-trix-dialog=\" + t + \"]\");\n }, m = function m(t, e) {\n return null == e && (e = f(t)), t.querySelector(\"[data-trix-input][name='\" + e + \"']\");\n }, d = function d(t) {\n return t.getAttribute(\"data-trix-action\");\n }, f = function f(t) {\n var e;\n return null != (e = t.getAttribute(\"data-trix-attribute\")) ? e : t.getAttribute(\"data-trix-dialog-attribute\");\n }, g = function g(t) {\n return t.getAttribute(\"data-trix-dialog\");\n }, s;\n }(e.BasicObject);\n }.call(this), function () {\n var t = function t(_t12, e) {\n function i() {\n this.constructor = _t12;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t12[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t12.prototype = new i(), _t12.__super__ = e.prototype, _t12;\n },\n n = {}.hasOwnProperty;\n\n e.ImagePreloadOperation = function (e) {\n function n(t) {\n this.url = t;\n }\n\n return t(n, e), n.prototype.perform = function (t) {\n var e;\n return e = new Image(), e.onload = function (n) {\n return function () {\n return e.width = n.width = e.naturalWidth, e.height = n.height = e.naturalHeight, t(!0, e);\n };\n }(this), e.onerror = function () {\n return t(!1);\n }, e.src = this.url;\n }, n;\n }(e.Operation);\n }.call(this), function () {\n var t = function t(_t13, e) {\n return function () {\n return _t13.apply(e, arguments);\n };\n },\n n = function n(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var o in e) {\n i.call(e, o) && (t[o] = e[o]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n i = {}.hasOwnProperty;\n\n e.Attachment = function (i) {\n function o(n) {\n null == n && (n = {}), this.releaseFile = t(this.releaseFile, this), o.__super__.constructor.apply(this, arguments), this.attributes = e.Hash.box(n), this.didChangeAttributes();\n }\n\n return n(o, i), o.previewablePattern = /^image(\\/(gif|png|jpe?g)|$)/, o.attachmentForFile = function (t) {\n var e, n;\n return n = this.attributesForFile(t), e = new this(n), e.setFile(t), e;\n }, o.attributesForFile = function (t) {\n return new e.Hash({\n filename: t.name,\n filesize: t.size,\n contentType: t.type\n });\n }, o.fromJSON = function (t) {\n return new this(t);\n }, o.prototype.getAttribute = function (t) {\n return this.attributes.get(t);\n }, o.prototype.hasAttribute = function (t) {\n return this.attributes.has(t);\n }, o.prototype.getAttributes = function () {\n return this.attributes.toObject();\n }, o.prototype.setAttributes = function (t) {\n var e, n, i;\n return null == t && (t = {}), e = this.attributes.merge(t), this.attributes.isEqualTo(e) ? void 0 : (this.attributes = e, this.didChangeAttributes(), null != (n = this.previewDelegate) && \"function\" == typeof n.attachmentDidChangeAttributes && n.attachmentDidChangeAttributes(this), null != (i = this.delegate) && \"function\" == typeof i.attachmentDidChangeAttributes ? i.attachmentDidChangeAttributes(this) : void 0);\n }, o.prototype.didChangeAttributes = function () {\n return this.isPreviewable() ? this.preloadURL() : void 0;\n }, o.prototype.isPending = function () {\n return null != this.file && !(this.getURL() || this.getHref());\n }, o.prototype.isPreviewable = function () {\n return this.attributes.has(\"previewable\") ? this.attributes.get(\"previewable\") : this.constructor.previewablePattern.test(this.getContentType());\n }, o.prototype.getType = function () {\n return this.hasContent() ? \"content\" : this.isPreviewable() ? \"preview\" : \"file\";\n }, o.prototype.getURL = function () {\n return this.attributes.get(\"url\");\n }, o.prototype.getHref = function () {\n return this.attributes.get(\"href\");\n }, o.prototype.getFilename = function () {\n var t;\n return null != (t = this.attributes.get(\"filename\")) ? t : \"\";\n }, o.prototype.getFilesize = function () {\n return this.attributes.get(\"filesize\");\n }, o.prototype.getFormattedFilesize = function () {\n var t;\n return t = this.attributes.get(\"filesize\"), \"number\" == typeof t ? e.config.fileSize.formatter(t) : \"\";\n }, o.prototype.getExtension = function () {\n var t;\n return null != (t = this.getFilename().match(/\\.(\\w+)$/)) ? t[1].toLowerCase() : void 0;\n }, o.prototype.getContentType = function () {\n return this.attributes.get(\"contentType\");\n }, o.prototype.hasContent = function () {\n return this.attributes.has(\"content\");\n }, o.prototype.getContent = function () {\n return this.attributes.get(\"content\");\n }, o.prototype.getWidth = function () {\n return this.attributes.get(\"width\");\n }, o.prototype.getHeight = function () {\n return this.attributes.get(\"height\");\n }, o.prototype.getFile = function () {\n return this.file;\n }, o.prototype.setFile = function (t) {\n return this.file = t, this.isPreviewable() ? this.preloadFile() : void 0;\n }, o.prototype.releaseFile = function () {\n return this.releasePreloadedFile(), this.file = null;\n }, o.prototype.getUploadProgress = function () {\n var t;\n return null != (t = this.uploadProgress) ? t : 0;\n }, o.prototype.setUploadProgress = function (t) {\n var e;\n return this.uploadProgress !== t ? (this.uploadProgress = t, null != (e = this.uploadProgressDelegate) && \"function\" == typeof e.attachmentDidChangeUploadProgress ? e.attachmentDidChangeUploadProgress(this) : void 0) : void 0;\n }, o.prototype.toJSON = function () {\n return this.getAttributes();\n }, o.prototype.getCacheKey = function () {\n return [o.__super__.getCacheKey.apply(this, arguments), this.attributes.getCacheKey(), this.getPreviewURL()].join(\"/\");\n }, o.prototype.getPreviewURL = function () {\n return this.previewURL || this.preloadingURL;\n }, o.prototype.setPreviewURL = function (t) {\n var e, n;\n return t !== this.getPreviewURL() ? (this.previewURL = t, null != (e = this.previewDelegate) && \"function\" == typeof e.attachmentDidChangeAttributes && e.attachmentDidChangeAttributes(this), null != (n = this.delegate) && \"function\" == typeof n.attachmentDidChangePreviewURL ? n.attachmentDidChangePreviewURL(this) : void 0) : void 0;\n }, o.prototype.preloadURL = function () {\n return this.preload(this.getURL(), this.releaseFile);\n }, o.prototype.preloadFile = function () {\n return this.file ? (this.fileObjectURL = URL.createObjectURL(this.file), this.preload(this.fileObjectURL)) : void 0;\n }, o.prototype.releasePreloadedFile = function () {\n return this.fileObjectURL ? (URL.revokeObjectURL(this.fileObjectURL), this.fileObjectURL = null) : void 0;\n }, o.prototype.preload = function (t, n) {\n var i;\n return t && t !== this.getPreviewURL() ? (this.preloadingURL = t, i = new e.ImagePreloadOperation(t), i.then(function (e) {\n return function (i) {\n var o, r;\n return r = i.width, o = i.height, e.getWidth() && e.getHeight() || e.setAttributes({\n width: r,\n height: o\n }), e.preloadingURL = null, e.setPreviewURL(t), \"function\" == typeof n ? n() : void 0;\n };\n }(this))[\"catch\"](function (t) {\n return function () {\n return t.preloadingURL = null, \"function\" == typeof n ? n() : void 0;\n };\n }(this))) : void 0;\n }, o;\n }(e.Object);\n }.call(this), function () {\n var t = function t(_t14, e) {\n function i() {\n this.constructor = _t14;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t14[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t14.prototype = new i(), _t14.__super__ = e.prototype, _t14;\n },\n n = {}.hasOwnProperty;\n\n e.Piece = function (n) {\n function i(t, n) {\n null == n && (n = {}), i.__super__.constructor.apply(this, arguments), this.attributes = e.Hash.box(n);\n }\n\n return t(i, n), i.types = {}, i.registerType = function (t, e) {\n return e.type = t, this.types[t] = e;\n }, i.fromJSON = function (t) {\n var e;\n return (e = this.types[t.type]) ? e.fromJSON(t) : void 0;\n }, i.prototype.copyWithAttributes = function (t) {\n return new this.constructor(this.getValue(), t);\n }, i.prototype.copyWithAdditionalAttributes = function (t) {\n return this.copyWithAttributes(this.attributes.merge(t));\n }, i.prototype.copyWithoutAttribute = function (t) {\n return this.copyWithAttributes(this.attributes.remove(t));\n }, i.prototype.copy = function () {\n return this.copyWithAttributes(this.attributes);\n }, i.prototype.getAttribute = function (t) {\n return this.attributes.get(t);\n }, i.prototype.getAttributesHash = function () {\n return this.attributes;\n }, i.prototype.getAttributes = function () {\n return this.attributes.toObject();\n }, i.prototype.getCommonAttributes = function () {\n var t, e, n;\n return (n = pieceList.getPieceAtIndex(0)) ? (t = n.attributes, e = t.getKeys(), pieceList.eachPiece(function (n) {\n return e = t.getKeysCommonToHash(n.attributes), t = t.slice(e);\n }), t.toObject()) : {};\n }, i.prototype.hasAttribute = function (t) {\n return this.attributes.has(t);\n }, i.prototype.hasSameStringValueAsPiece = function (t) {\n return null != t && this.toString() === t.toString();\n }, i.prototype.hasSameAttributesAsPiece = function (t) {\n return null != t && (this.attributes === t.attributes || this.attributes.isEqualTo(t.attributes));\n }, i.prototype.isBlockBreak = function () {\n return !1;\n }, i.prototype.isEqualTo = function (t) {\n return i.__super__.isEqualTo.apply(this, arguments) || this.hasSameConstructorAs(t) && this.hasSameStringValueAsPiece(t) && this.hasSameAttributesAsPiece(t);\n }, i.prototype.isEmpty = function () {\n return 0 === this.length;\n }, i.prototype.isSerializable = function () {\n return !0;\n }, i.prototype.toJSON = function () {\n return {\n type: this.constructor.type,\n attributes: this.getAttributes()\n };\n }, i.prototype.contentsForInspection = function () {\n return {\n type: this.constructor.type,\n attributes: this.attributes.inspect()\n };\n }, i.prototype.canBeGrouped = function () {\n return this.hasAttribute(\"href\");\n }, i.prototype.canBeGroupedWith = function (t) {\n return this.getAttribute(\"href\") === t.getAttribute(\"href\");\n }, i.prototype.getLength = function () {\n return this.length;\n }, i.prototype.canBeConsolidatedWith = function () {\n return !1;\n }, i;\n }(e.Object);\n }.call(this), function () {\n var t = function t(_t15, e) {\n function i() {\n this.constructor = _t15;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t15[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t15.prototype = new i(), _t15.__super__ = e.prototype, _t15;\n },\n n = {}.hasOwnProperty;\n\n e.Piece.registerType(\"attachment\", e.AttachmentPiece = function (n) {\n function i(t) {\n this.attachment = t, i.__super__.constructor.apply(this, arguments), this.length = 1, this.ensureAttachmentExclusivelyHasAttribute(\"href\"), this.attachment.hasContent() || this.removeProhibitedAttributes();\n }\n\n return t(i, n), i.fromJSON = function (t) {\n return new this(e.Attachment.fromJSON(t.attachment), t.attributes);\n }, i.permittedAttributes = [\"caption\", \"presentation\"], i.prototype.ensureAttachmentExclusivelyHasAttribute = function (t) {\n return this.hasAttribute(t) ? (this.attachment.hasAttribute(t) || this.attachment.setAttributes(this.attributes.slice(t)), this.attributes = this.attributes.remove(t)) : void 0;\n }, i.prototype.removeProhibitedAttributes = function () {\n var t;\n return t = this.attributes.slice(this.constructor.permittedAttributes), t.isEqualTo(this.attributes) ? void 0 : this.attributes = t;\n }, i.prototype.getValue = function () {\n return this.attachment;\n }, i.prototype.isSerializable = function () {\n return !this.attachment.isPending();\n }, i.prototype.getCaption = function () {\n var t;\n return null != (t = this.attributes.get(\"caption\")) ? t : \"\";\n }, i.prototype.isEqualTo = function (t) {\n var e;\n return i.__super__.isEqualTo.apply(this, arguments) && this.attachment.id === (null != t && null != (e = t.attachment) ? e.id : void 0);\n }, i.prototype.toString = function () {\n return e.OBJECT_REPLACEMENT_CHARACTER;\n }, i.prototype.toJSON = function () {\n var t;\n return t = i.__super__.toJSON.apply(this, arguments), t.attachment = this.attachment, t;\n }, i.prototype.getCacheKey = function () {\n return [i.__super__.getCacheKey.apply(this, arguments), this.attachment.getCacheKey()].join(\"/\");\n }, i.prototype.toConsole = function () {\n return JSON.stringify(this.toString());\n }, i;\n }(e.Piece));\n }.call(this), function () {\n var t,\n n = function n(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var o in e) {\n i.call(e, o) && (t[o] = e[o]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n i = {}.hasOwnProperty;\n\n t = e.normalizeNewlines, e.Piece.registerType(\"string\", e.StringPiece = function (e) {\n function i(e) {\n i.__super__.constructor.apply(this, arguments), this.string = t(e), this.length = this.string.length;\n }\n\n return n(i, e), i.fromJSON = function (t) {\n return new this(t.string, t.attributes);\n }, i.prototype.getValue = function () {\n return this.string;\n }, i.prototype.toString = function () {\n return this.string.toString();\n }, i.prototype.isBlockBreak = function () {\n return \"\\n\" === this.toString() && this.getAttribute(\"blockBreak\") === !0;\n }, i.prototype.toJSON = function () {\n var t;\n return t = i.__super__.toJSON.apply(this, arguments), t.string = this.string, t;\n }, i.prototype.canBeConsolidatedWith = function (t) {\n return null != t && this.hasSameConstructorAs(t) && this.hasSameAttributesAsPiece(t);\n }, i.prototype.consolidateWith = function (t) {\n return new this.constructor(this.toString() + t.toString(), this.attributes);\n }, i.prototype.splitAtOffset = function (t) {\n var e, n;\n return 0 === t ? (e = null, n = this) : t === this.length ? (e = this, n = null) : (e = new this.constructor(this.string.slice(0, t), this.attributes), n = new this.constructor(this.string.slice(t), this.attributes)), [e, n];\n }, i.prototype.toConsole = function () {\n var t;\n return t = this.string, t.length > 15 && (t = t.slice(0, 14) + \"\\u2026\"), JSON.stringify(t.toString());\n }, i;\n }(e.Piece));\n }.call(this), function () {\n var t,\n n = function n(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var o in e) {\n i.call(e, o) && (t[o] = e[o]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n i = {}.hasOwnProperty,\n o = [].slice;\n\n t = e.spliceArray, e.SplittableList = function (e) {\n function i(t) {\n null == t && (t = []), i.__super__.constructor.apply(this, arguments), this.objects = t.slice(0), this.length = this.objects.length;\n }\n\n var r, s, a;\n return n(i, e), i.box = function (t) {\n return t instanceof this ? t : new this(t);\n }, i.prototype.indexOf = function (t) {\n return this.objects.indexOf(t);\n }, i.prototype.splice = function () {\n var e;\n return e = 1 <= arguments.length ? o.call(arguments, 0) : [], new this.constructor(t.apply(null, [this.objects].concat(o.call(e))));\n }, i.prototype.eachObject = function (t) {\n var e, n, i, o, r, s;\n\n for (r = this.objects, s = [], n = e = 0, i = r.length; i > e; n = ++e) {\n o = r[n], s.push(t(o, n));\n }\n\n return s;\n }, i.prototype.insertObjectAtIndex = function (t, e) {\n return this.splice(e, 0, t);\n }, i.prototype.insertSplittableListAtIndex = function (t, e) {\n return this.splice.apply(this, [e, 0].concat(o.call(t.objects)));\n }, i.prototype.insertSplittableListAtPosition = function (t, e) {\n var n, i, o;\n return o = this.splitObjectAtPosition(e), i = o[0], n = o[1], new this.constructor(i).insertSplittableListAtIndex(t, n);\n }, i.prototype.editObjectAtIndex = function (t, e) {\n return this.replaceObjectAtIndex(e(this.objects[t]), t);\n }, i.prototype.replaceObjectAtIndex = function (t, e) {\n return this.splice(e, 1, t);\n }, i.prototype.removeObjectAtIndex = function (t) {\n return this.splice(t, 1);\n }, i.prototype.getObjectAtIndex = function (t) {\n return this.objects[t];\n }, i.prototype.getSplittableListInRange = function (t) {\n var e, n, i, o;\n return i = this.splitObjectsAtRange(t), n = i[0], e = i[1], o = i[2], new this.constructor(n.slice(e, o + 1));\n }, i.prototype.selectSplittableList = function (t) {\n var e, n;\n return n = function () {\n var n, i, o, r;\n\n for (o = this.objects, r = [], n = 0, i = o.length; i > n; n++) {\n e = o[n], t(e) && r.push(e);\n }\n\n return r;\n }.call(this), new this.constructor(n);\n }, i.prototype.removeObjectsInRange = function (t) {\n var e, n, i, o;\n return i = this.splitObjectsAtRange(t), n = i[0], e = i[1], o = i[2], new this.constructor(n).splice(e, o - e + 1);\n }, i.prototype.transformObjectsInRange = function (t, e) {\n var n, i, o, r, s, a, u;\n return s = this.splitObjectsAtRange(t), r = s[0], i = s[1], a = s[2], u = function () {\n var t, s, u;\n\n for (u = [], n = t = 0, s = r.length; s > t; n = ++t) {\n o = r[n], u.push(n >= i && a >= n ? e(o) : o);\n }\n\n return u;\n }(), new this.constructor(u);\n }, i.prototype.splitObjectsAtRange = function (t) {\n var e, n, i, o, s, u;\n return o = this.splitObjectAtPosition(a(t)), n = o[0], e = o[1], i = o[2], s = new this.constructor(n).splitObjectAtPosition(r(t) + i), n = s[0], u = s[1], [n, e, u - 1];\n }, i.prototype.getObjectAtPosition = function (t) {\n var e, n, i;\n return i = this.findIndexAndOffsetAtPosition(t), e = i.index, n = i.offset, this.objects[e];\n }, i.prototype.splitObjectAtPosition = function (t) {\n var e, n, i, o, r, s, a, u, c, l;\n return s = this.findIndexAndOffsetAtPosition(t), e = s.index, r = s.offset, o = this.objects.slice(0), null != e ? 0 === r ? (c = e, l = 0) : (i = this.getObjectAtIndex(e), a = i.splitAtOffset(r), n = a[0], u = a[1], o.splice(e, 1, n, u), c = e + 1, l = n.getLength() - r) : (c = o.length, l = 0), [o, c, l];\n }, i.prototype.consolidate = function () {\n var t, e, n, i, o, r;\n\n for (i = [], o = this.objects[0], r = this.objects.slice(1), t = 0, e = r.length; e > t; t++) {\n n = r[t], (\"function\" == typeof o.canBeConsolidatedWith ? o.canBeConsolidatedWith(n) : void 0) ? o = o.consolidateWith(n) : (i.push(o), o = n);\n }\n\n return null != o && i.push(o), new this.constructor(i);\n }, i.prototype.consolidateFromIndexToIndex = function (t, e) {\n var n, i, r;\n return i = this.objects.slice(0), r = i.slice(t, e + 1), n = new this.constructor(r).consolidate().toArray(), this.splice.apply(this, [t, r.length].concat(o.call(n)));\n }, i.prototype.findIndexAndOffsetAtPosition = function (t) {\n var e, n, i, o, r, s, a;\n\n for (e = 0, a = this.objects, i = n = 0, o = a.length; o > n; i = ++n) {\n if (s = a[i], r = e + s.getLength(), t >= e && r > t) return {\n index: i,\n offset: t - e\n };\n e = r;\n }\n\n return {\n index: null,\n offset: null\n };\n }, i.prototype.findPositionAtIndexAndOffset = function (t, e) {\n var n, i, o, r, s, a;\n\n for (s = 0, a = this.objects, n = i = 0, o = a.length; o > i; n = ++i) {\n if (r = a[n], t > n) s += r.getLength();else if (n === t) {\n s += e;\n break;\n }\n }\n\n return s;\n }, i.prototype.getEndPosition = function () {\n var t, e;\n return null != this.endPosition ? this.endPosition : this.endPosition = function () {\n var n, i, o;\n\n for (e = 0, o = this.objects, n = 0, i = o.length; i > n; n++) {\n t = o[n], e += t.getLength();\n }\n\n return e;\n }.call(this);\n }, i.prototype.toString = function () {\n return this.objects.join(\"\");\n }, i.prototype.toArray = function () {\n return this.objects.slice(0);\n }, i.prototype.toJSON = function () {\n return this.toArray();\n }, i.prototype.isEqualTo = function (t) {\n return i.__super__.isEqualTo.apply(this, arguments) || s(this.objects, null != t ? t.objects : void 0);\n }, s = function s(t, e) {\n var n, i, o, r, s;\n if (null == e && (e = []), t.length !== e.length) return !1;\n\n for (s = !0, i = n = 0, o = t.length; o > n; i = ++n) {\n r = t[i], s && !r.isEqualTo(e[i]) && (s = !1);\n }\n\n return s;\n }, i.prototype.contentsForInspection = function () {\n var t;\n return {\n objects: \"[\" + function () {\n var e, n, i, o;\n\n for (i = this.objects, o = [], e = 0, n = i.length; n > e; e++) {\n t = i[e], o.push(t.inspect());\n }\n\n return o;\n }.call(this).join(\", \") + \"]\"\n };\n }, a = function a(t) {\n return t[0];\n }, r = function r(t) {\n return t[1];\n }, i;\n }(e.Object);\n }.call(this), function () {\n var t = function t(_t16, e) {\n function i() {\n this.constructor = _t16;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t16[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t16.prototype = new i(), _t16.__super__ = e.prototype, _t16;\n },\n n = {}.hasOwnProperty;\n\n e.Text = function (n) {\n function i(t) {\n var n;\n null == t && (t = []), i.__super__.constructor.apply(this, arguments), this.pieceList = new e.SplittableList(function () {\n var e, i, o;\n\n for (o = [], e = 0, i = t.length; i > e; e++) {\n n = t[e], n.isEmpty() || o.push(n);\n }\n\n return o;\n }());\n }\n\n return t(i, n), i.textForAttachmentWithAttributes = function (t, n) {\n var i;\n return i = new e.AttachmentPiece(t, n), new this([i]);\n }, i.textForStringWithAttributes = function (t, n) {\n var i;\n return i = new e.StringPiece(t, n), new this([i]);\n }, i.fromJSON = function (t) {\n var n, i;\n return i = function () {\n var i, o, r;\n\n for (r = [], i = 0, o = t.length; o > i; i++) {\n n = t[i], r.push(e.Piece.fromJSON(n));\n }\n\n return r;\n }(), new this(i);\n }, i.prototype.copy = function () {\n return this.copyWithPieceList(this.pieceList);\n }, i.prototype.copyWithPieceList = function (t) {\n return new this.constructor(t.consolidate().toArray());\n }, i.prototype.copyUsingObjectMap = function (t) {\n var e, n;\n return n = function () {\n var n, i, o, r, s;\n\n for (o = this.getPieces(), s = [], n = 0, i = o.length; i > n; n++) {\n e = o[n], s.push(null != (r = t.find(e)) ? r : e);\n }\n\n return s;\n }.call(this), new this.constructor(n);\n }, i.prototype.appendText = function (t) {\n return this.insertTextAtPosition(t, this.getLength());\n }, i.prototype.insertTextAtPosition = function (t, e) {\n return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(t.pieceList, e));\n }, i.prototype.removeTextAtRange = function (t) {\n return this.copyWithPieceList(this.pieceList.removeObjectsInRange(t));\n }, i.prototype.replaceTextAtRange = function (t, e) {\n return this.removeTextAtRange(e).insertTextAtPosition(t, e[0]);\n }, i.prototype.moveTextFromRangeToPosition = function (t, e) {\n var n, i;\n if (!(t[0] <= e && e <= t[1])) return i = this.getTextAtRange(t), n = i.getLength(), t[0] < e && (e -= n), this.removeTextAtRange(t).insertTextAtPosition(i, e);\n }, i.prototype.addAttributeAtRange = function (t, e, n) {\n var i;\n return i = {}, i[t] = e, this.addAttributesAtRange(i, n);\n }, i.prototype.addAttributesAtRange = function (t, e) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e, function (e) {\n return e.copyWithAdditionalAttributes(t);\n }));\n }, i.prototype.removeAttributeAtRange = function (t, e) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e, function (e) {\n return e.copyWithoutAttribute(t);\n }));\n }, i.prototype.setAttributesAtRange = function (t, e) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e, function (e) {\n return e.copyWithAttributes(t);\n }));\n }, i.prototype.getAttributesAtPosition = function (t) {\n var e, n;\n return null != (e = null != (n = this.pieceList.getObjectAtPosition(t)) ? n.getAttributes() : void 0) ? e : {};\n }, i.prototype.getCommonAttributes = function () {\n var t, n;\n return t = function () {\n var t, e, i, o;\n\n for (i = this.pieceList.toArray(), o = [], t = 0, e = i.length; e > t; t++) {\n n = i[t], o.push(n.getAttributes());\n }\n\n return o;\n }.call(this), e.Hash.fromCommonAttributesOfObjects(t).toObject();\n }, i.prototype.getCommonAttributesAtRange = function (t) {\n var e;\n return null != (e = this.getTextAtRange(t).getCommonAttributes()) ? e : {};\n }, i.prototype.getExpandedRangeForAttributeAtOffset = function (t, e) {\n var n, i, o;\n\n for (n = o = e, i = this.getLength(); n > 0 && this.getCommonAttributesAtRange([n - 1, o])[t];) {\n n--;\n }\n\n for (; i > o && this.getCommonAttributesAtRange([e, o + 1])[t];) {\n o++;\n }\n\n return [n, o];\n }, i.prototype.getTextAtRange = function (t) {\n return this.copyWithPieceList(this.pieceList.getSplittableListInRange(t));\n }, i.prototype.getStringAtRange = function (t) {\n return this.pieceList.getSplittableListInRange(t).toString();\n }, i.prototype.getStringAtPosition = function (t) {\n return this.getStringAtRange([t, t + 1]);\n }, i.prototype.startsWithString = function (t) {\n return this.getStringAtRange([0, t.length]) === t;\n }, i.prototype.endsWithString = function (t) {\n var e;\n return e = this.getLength(), this.getStringAtRange([e - t.length, e]) === t;\n }, i.prototype.getAttachmentPieces = function () {\n var t, e, n, i, o;\n\n for (i = this.pieceList.toArray(), o = [], t = 0, e = i.length; e > t; t++) {\n n = i[t], null != n.attachment && o.push(n);\n }\n\n return o;\n }, i.prototype.getAttachments = function () {\n var t, e, n, i, o;\n\n for (i = this.getAttachmentPieces(), o = [], t = 0, e = i.length; e > t; t++) {\n n = i[t], o.push(n.attachment);\n }\n\n return o;\n }, i.prototype.getAttachmentAndPositionById = function (t) {\n var e, n, i, o, r, s;\n\n for (o = 0, r = this.pieceList.toArray(), e = 0, n = r.length; n > e; e++) {\n if (i = r[e], (null != (s = i.attachment) ? s.id : void 0) === t) return {\n attachment: i.attachment,\n position: o\n };\n o += i.length;\n }\n\n return {\n attachment: null,\n position: null\n };\n }, i.prototype.getAttachmentById = function (t) {\n var e, n, i;\n return i = this.getAttachmentAndPositionById(t), e = i.attachment, n = i.position, e;\n }, i.prototype.getRangeOfAttachment = function (t) {\n var e, n;\n return n = this.getAttachmentAndPositionById(t.id), t = n.attachment, e = n.position, null != t ? [e, e + 1] : void 0;\n }, i.prototype.updateAttributesForAttachment = function (t, e) {\n var n;\n return (n = this.getRangeOfAttachment(e)) ? this.addAttributesAtRange(t, n) : this;\n }, i.prototype.getLength = function () {\n return this.pieceList.getEndPosition();\n }, i.prototype.isEmpty = function () {\n return 0 === this.getLength();\n }, i.prototype.isEqualTo = function (t) {\n var e;\n return i.__super__.isEqualTo.apply(this, arguments) || (null != t && null != (e = t.pieceList) ? e.isEqualTo(this.pieceList) : void 0);\n }, i.prototype.isBlockBreak = function () {\n return 1 === this.getLength() && this.pieceList.getObjectAtIndex(0).isBlockBreak();\n }, i.prototype.eachPiece = function (t) {\n return this.pieceList.eachObject(t);\n }, i.prototype.getPieces = function () {\n return this.pieceList.toArray();\n }, i.prototype.getPieceAtPosition = function (t) {\n return this.pieceList.getObjectAtPosition(t);\n }, i.prototype.contentsForInspection = function () {\n return {\n pieceList: this.pieceList.inspect()\n };\n }, i.prototype.toSerializableText = function () {\n var t;\n return t = this.pieceList.selectSplittableList(function (t) {\n return t.isSerializable();\n }), this.copyWithPieceList(t);\n }, i.prototype.toString = function () {\n return this.pieceList.toString();\n }, i.prototype.toJSON = function () {\n return this.pieceList.toJSON();\n }, i.prototype.toConsole = function () {\n var t;\n return JSON.stringify(function () {\n var e, n, i, o;\n\n for (i = this.pieceList.toArray(), o = [], e = 0, n = i.length; n > e; e++) {\n t = i[e], o.push(JSON.parse(t.toConsole()));\n }\n\n return o;\n }.call(this));\n }, i.prototype.getDirection = function () {\n return e.getDirection(this.toString());\n }, i.prototype.isRTL = function () {\n return \"rtl\" === this.getDirection();\n }, i;\n }(e.Object);\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r,\n s = function s(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n a.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n a = {}.hasOwnProperty,\n u = [].indexOf || function (t) {\n for (var e = 0, n = this.length; n > e; e++) {\n if (e in this && this[e] === t) return e;\n }\n\n return -1;\n },\n c = [].slice;\n\n t = e.arraysAreEqual, r = e.spliceArray, i = e.getBlockConfig, n = e.getBlockAttributeNames, o = e.getListAttributeNames, e.Block = function (n) {\n function a(t, n) {\n null == t && (t = new e.Text()), null == n && (n = []), a.__super__.constructor.apply(this, arguments), this.text = h(t), this.attributes = n;\n }\n\n var l, h, p, d, f, g, m, v, y;\n return s(a, n), a.fromJSON = function (t) {\n var n;\n return n = e.Text.fromJSON(t.text), new this(n, t.attributes);\n }, a.prototype.isEmpty = function () {\n return this.text.isBlockBreak();\n }, a.prototype.isEqualTo = function (e) {\n return a.__super__.isEqualTo.apply(this, arguments) || this.text.isEqualTo(null != e ? e.text : void 0) && t(this.attributes, null != e ? e.attributes : void 0);\n }, a.prototype.copyWithText = function (t) {\n return new this.constructor(t, this.attributes);\n }, a.prototype.copyWithoutText = function () {\n return this.copyWithText(null);\n }, a.prototype.copyWithAttributes = function (t) {\n return new this.constructor(this.text, t);\n }, a.prototype.copyWithoutAttributes = function () {\n return this.copyWithAttributes(null);\n }, a.prototype.copyUsingObjectMap = function (t) {\n var e;\n return this.copyWithText((e = t.find(this.text)) ? e : this.text.copyUsingObjectMap(t));\n }, a.prototype.addAttribute = function (t) {\n var e;\n return e = this.attributes.concat(d(t)), this.copyWithAttributes(e);\n }, a.prototype.removeAttribute = function (t) {\n var e, n;\n return n = i(t).listAttribute, e = g(g(this.attributes, t), n), this.copyWithAttributes(e);\n }, a.prototype.removeLastAttribute = function () {\n return this.removeAttribute(this.getLastAttribute());\n }, a.prototype.getLastAttribute = function () {\n return f(this.attributes);\n }, a.prototype.getAttributes = function () {\n return this.attributes.slice(0);\n }, a.prototype.getAttributeLevel = function () {\n return this.attributes.length;\n }, a.prototype.getAttributeAtLevel = function (t) {\n return this.attributes[t - 1];\n }, a.prototype.hasAttribute = function (t) {\n return u.call(this.attributes, t) >= 0;\n }, a.prototype.hasAttributes = function () {\n return this.getAttributeLevel() > 0;\n }, a.prototype.getLastNestableAttribute = function () {\n return f(this.getNestableAttributes());\n }, a.prototype.getNestableAttributes = function () {\n var t, e, n, o, r;\n\n for (o = this.attributes, r = [], e = 0, n = o.length; n > e; e++) {\n t = o[e], i(t).nestable && r.push(t);\n }\n\n return r;\n }, a.prototype.getNestingLevel = function () {\n return this.getNestableAttributes().length;\n }, a.prototype.decreaseNestingLevel = function () {\n var t;\n return (t = this.getLastNestableAttribute()) ? this.removeAttribute(t) : this;\n }, a.prototype.increaseNestingLevel = function () {\n var t, e, n;\n return (t = this.getLastNestableAttribute()) ? (n = this.attributes.lastIndexOf(t), e = r.apply(null, [this.attributes, n + 1, 0].concat(c.call(d(t)))), this.copyWithAttributes(e)) : this;\n }, a.prototype.getListItemAttributes = function () {\n var t, e, n, o, r;\n\n for (o = this.attributes, r = [], e = 0, n = o.length; n > e; e++) {\n t = o[e], i(t).listAttribute && r.push(t);\n }\n\n return r;\n }, a.prototype.isListItem = function () {\n var t;\n return null != (t = i(this.getLastAttribute())) ? t.listAttribute : void 0;\n }, a.prototype.isTerminalBlock = function () {\n var t;\n return null != (t = i(this.getLastAttribute())) ? t.terminal : void 0;\n }, a.prototype.breaksOnReturn = function () {\n var t;\n return null != (t = i(this.getLastAttribute())) ? t.breakOnReturn : void 0;\n }, a.prototype.findLineBreakInDirectionFromPosition = function (t, e) {\n var n, i;\n return i = this.toString(), n = function () {\n switch (t) {\n case \"forward\":\n return i.indexOf(\"\\n\", e);\n\n case \"backward\":\n return i.slice(0, e).lastIndexOf(\"\\n\");\n }\n }(), -1 !== n ? n : void 0;\n }, a.prototype.contentsForInspection = function () {\n return {\n text: this.text.inspect(),\n attributes: this.attributes\n };\n }, a.prototype.toString = function () {\n return this.text.toString();\n }, a.prototype.toJSON = function () {\n return {\n text: this.text,\n attributes: this.attributes\n };\n }, a.prototype.getDirection = function () {\n return this.text.getDirection();\n }, a.prototype.isRTL = function () {\n return this.text.isRTL();\n }, a.prototype.getLength = function () {\n return this.text.getLength();\n }, a.prototype.canBeConsolidatedWith = function (t) {\n return !this.hasAttributes() && !t.hasAttributes() && this.getDirection() === t.getDirection();\n }, a.prototype.consolidateWith = function (t) {\n var n, i;\n return n = e.Text.textForStringWithAttributes(\"\\n\"), i = this.getTextWithoutBlockBreak().appendText(n), this.copyWithText(i.appendText(t.text));\n }, a.prototype.splitAtOffset = function (t) {\n var e, n;\n return 0 === t ? (e = null, n = this) : t === this.getLength() ? (e = this, n = null) : (e = this.copyWithText(this.text.getTextAtRange([0, t])), n = this.copyWithText(this.text.getTextAtRange([t, this.getLength()]))), [e, n];\n }, a.prototype.getBlockBreakPosition = function () {\n return this.text.getLength() - 1;\n }, a.prototype.getTextWithoutBlockBreak = function () {\n return m(this.text) ? this.text.getTextAtRange([0, this.getBlockBreakPosition()]) : this.text.copy();\n }, a.prototype.canBeGrouped = function (t) {\n return this.attributes[t];\n }, a.prototype.canBeGroupedWith = function (t, e) {\n var n, r, s, a;\n return s = t.getAttributes(), r = s[e], n = this.attributes[e], !(n !== r || i(n).group === !1 && (a = s[e + 1], u.call(o(), a) < 0) || this.getDirection() !== t.getDirection() && !t.isEmpty());\n }, h = function h(t) {\n return t = y(t), t = l(t);\n }, y = function y(t) {\n var n, i, o, r, s, a;\n return r = !1, a = t.getPieces(), i = 2 <= a.length ? c.call(a, 0, n = a.length - 1) : (n = 0, []), o = a[n++], null == o ? t : (i = function () {\n var t, e, n;\n\n for (n = [], t = 0, e = i.length; e > t; t++) {\n s = i[t], s.isBlockBreak() ? (r = !0, n.push(v(s))) : n.push(s);\n }\n\n return n;\n }(), r ? new e.Text(c.call(i).concat([o])) : t);\n }, p = e.Text.textForStringWithAttributes(\"\\n\", {\n blockBreak: !0\n }), l = function l(t) {\n return m(t) ? t : t.appendText(p);\n }, m = function m(t) {\n var e, n;\n return n = t.getLength(), 0 === n ? !1 : (e = t.getTextAtRange([n - 1, n]), e.isBlockBreak());\n }, v = function v(t) {\n return t.copyWithoutAttribute(\"blockBreak\");\n }, d = function d(t) {\n var e;\n return e = i(t).listAttribute, null != e ? [e, t] : [t];\n }, f = function f(t) {\n return t.slice(-1)[0];\n }, g = function g(t, e) {\n var n;\n return n = t.lastIndexOf(e), -1 === n ? t : r(t, n, 1);\n }, a;\n }(e.Object);\n }.call(this), function () {\n var t,\n n,\n i,\n o = function o(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n r.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n r = {}.hasOwnProperty,\n s = [].indexOf || function (t) {\n for (var e = 0, n = this.length; n > e; e++) {\n if (e in this && this[e] === t) return e;\n }\n\n return -1;\n },\n a = [].slice;\n\n n = e.tagName, i = e.walkTree, t = e.nodeIsAttachmentElement, e.HTMLSanitizer = function (r) {\n function u(t, e) {\n var n;\n n = null != e ? e : {}, this.allowedAttributes = n.allowedAttributes, this.forbiddenProtocols = n.forbiddenProtocols, this.forbiddenElements = n.forbiddenElements, null == this.allowedAttributes && (this.allowedAttributes = c), null == this.forbiddenProtocols && (this.forbiddenProtocols = h), null == this.forbiddenElements && (this.forbiddenElements = l), this.body = p(t);\n }\n\n var c, l, h, p;\n return o(u, r), c = \"style href src width height class\".split(\" \"), h = \"javascript:\".split(\" \"), l = \"script iframe\".split(\" \"), u.sanitize = function (t, e) {\n var n;\n return n = new this(t, e), n.sanitize(), n;\n }, u.prototype.sanitize = function () {\n return this.sanitizeElements(), this.normalizeListElementNesting();\n }, u.prototype.getHTML = function () {\n return this.body.innerHTML;\n }, u.prototype.getBody = function () {\n return this.body;\n }, u.prototype.sanitizeElements = function () {\n var t, n, o, r, s;\n\n for (s = i(this.body), r = []; s.nextNode();) {\n switch (o = s.currentNode, o.nodeType) {\n case Node.ELEMENT_NODE:\n this.elementIsRemovable(o) ? r.push(o) : this.sanitizeElement(o);\n break;\n\n case Node.COMMENT_NODE:\n r.push(o);\n }\n }\n\n for (t = 0, n = r.length; n > t; t++) {\n o = r[t], e.removeNode(o);\n }\n\n return this.body;\n }, u.prototype.sanitizeElement = function (t) {\n var e, n, i, o, r;\n\n for (t.hasAttribute(\"href\") && (o = t.protocol, s.call(this.forbiddenProtocols, o) >= 0 && t.removeAttribute(\"href\")), r = a.call(t.attributes), e = 0, n = r.length; n > e; e++) {\n i = r[e].name, s.call(this.allowedAttributes, i) >= 0 || 0 === i.indexOf(\"data-trix\") || t.removeAttribute(i);\n }\n\n return t;\n }, u.prototype.normalizeListElementNesting = function () {\n var t, e, i, o, r;\n\n for (r = a.call(this.body.querySelectorAll(\"ul,ol\")), t = 0, e = r.length; e > t; t++) {\n i = r[t], (o = i.previousElementSibling) && \"li\" === n(o) && o.appendChild(i);\n }\n\n return this.body;\n }, u.prototype.elementIsRemovable = function (t) {\n return (null != t ? t.nodeType : void 0) === Node.ELEMENT_NODE ? this.elementIsForbidden(t) || this.elementIsntSerializable(t) : void 0;\n }, u.prototype.elementIsForbidden = function (t) {\n var e;\n return e = n(t), s.call(this.forbiddenElements, e) >= 0;\n }, u.prototype.elementIsntSerializable = function (e) {\n return \"false\" === e.getAttribute(\"data-trix-serialize\") && !t(e);\n }, p = function p(t) {\n var e, n, i, o, r;\n\n for (null == t && (t = \"\"), t = t.replace(/<\\/html[^>]*>[^]*$/i, \"\"), e = document.implementation.createHTMLDocument(\"\"), e.documentElement.innerHTML = t, r = e.head.querySelectorAll(\"style\"), i = 0, o = r.length; o > i; i++) {\n n = r[i], e.body.appendChild(n);\n }\n\n return e.body;\n }, u;\n }(e.BasicObject);\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r,\n s,\n a,\n u,\n c,\n l,\n h,\n p = function p(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n d.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n d = {}.hasOwnProperty,\n f = [].indexOf || function (t) {\n for (var e = 0, n = this.length; n > e; e++) {\n if (e in this && this[e] === t) return e;\n }\n\n return -1;\n };\n\n t = e.arraysAreEqual, s = e.makeElement, l = e.tagName, r = e.getBlockTagNames, h = e.walkTree, o = e.findClosestElementFromNode, i = e.elementContainsNode, a = e.nodeIsAttachmentElement, u = e.normalizeSpaces, n = e.breakableWhitespacePattern, c = e.squishBreakableWhitespace, e.HTMLParser = function (d) {\n function g(t, e) {\n this.html = t, this.referenceElement = (null != e ? e : {}).referenceElement, this.blocks = [], this.blockElements = [], this.processedElements = [];\n }\n\n var m, v, y, b, A, C, x, w, E, S, R, k;\n return p(g, d), g.parse = function (t, e) {\n var n;\n return n = new this(t, e), n.parse(), n;\n }, g.prototype.getDocument = function () {\n return e.Document.fromJSON(this.blocks);\n }, g.prototype.parse = function () {\n var t, n;\n\n try {\n for (this.createHiddenContainer(), t = e.HTMLSanitizer.sanitize(this.html).getHTML(), this.containerElement.innerHTML = t, n = h(this.containerElement, {\n usingFilter: x\n }); n.nextNode();) {\n this.processNode(n.currentNode);\n }\n\n return this.translateBlockElementMarginsToNewlines();\n } finally {\n this.removeHiddenContainer();\n }\n }, g.prototype.createHiddenContainer = function () {\n return this.referenceElement ? (this.containerElement = this.referenceElement.cloneNode(!1), this.containerElement.removeAttribute(\"id\"), this.containerElement.setAttribute(\"data-trix-internal\", \"\"), this.containerElement.style.display = \"none\", this.referenceElement.parentNode.insertBefore(this.containerElement, this.referenceElement.nextSibling)) : (this.containerElement = s({\n tagName: \"div\",\n style: {\n display: \"none\"\n }\n }), document.body.appendChild(this.containerElement));\n }, g.prototype.removeHiddenContainer = function () {\n return e.removeNode(this.containerElement);\n }, x = function x(t) {\n return \"style\" === l(t) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }, g.prototype.processNode = function (t) {\n switch (t.nodeType) {\n case Node.TEXT_NODE:\n if (!this.isInsignificantTextNode(t)) return this.appendBlockForTextNode(t), this.processTextNode(t);\n break;\n\n case Node.ELEMENT_NODE:\n return this.appendBlockForElement(t), this.processElement(t);\n }\n }, g.prototype.appendBlockForTextNode = function (e) {\n var n, i, o;\n return i = e.parentNode, i === this.currentBlockElement && this.isBlockElement(e.previousSibling) ? this.appendStringWithAttributes(\"\\n\") : i !== this.containerElement && !this.isBlockElement(i) || (n = this.getBlockAttributes(i), t(n, null != (o = this.currentBlock) ? o.attributes : void 0)) ? void 0 : (this.currentBlock = this.appendBlockForAttributesWithElement(n, i), this.currentBlockElement = i);\n }, g.prototype.appendBlockForElement = function (e) {\n var n, o, r, s;\n\n if (r = this.isBlockElement(e), o = i(this.currentBlockElement, e), r && !this.isBlockElement(e.firstChild)) {\n if ((!this.isInsignificantTextNode(e.firstChild) || !this.isBlockElement(e.firstElementChild)) && (n = this.getBlockAttributes(e), e.firstChild)) return o && t(n, this.currentBlock.attributes) ? this.appendStringWithAttributes(\"\\n\") : (this.currentBlock = this.appendBlockForAttributesWithElement(n, e), this.currentBlockElement = e);\n } else if (this.currentBlockElement && !o && !r) return (s = this.findParentBlockElement(e)) ? this.appendBlockForElement(s) : (this.currentBlock = this.appendEmptyBlock(), this.currentBlockElement = null);\n }, g.prototype.findParentBlockElement = function (t) {\n var e;\n\n for (e = t.parentElement; e && e !== this.containerElement;) {\n if (this.isBlockElement(e) && f.call(this.blockElements, e) >= 0) return e;\n e = e.parentElement;\n }\n\n return null;\n }, g.prototype.processTextNode = function (t) {\n var e, n;\n return n = t.data, v(t.parentNode) || (n = c(n), R(null != (e = t.previousSibling) ? e.textContent : void 0) && (n = A(n))), this.appendStringWithAttributes(n, this.getTextAttributes(t.parentNode));\n }, g.prototype.processElement = function (t) {\n var e, n, i, o, r;\n if (a(t)) return e = w(t, \"attachment\"), Object.keys(e).length && (o = this.getTextAttributes(t), this.appendAttachmentWithAttributes(e, o), t.innerHTML = \"\"), this.processedElements.push(t);\n\n switch (l(t)) {\n case \"br\":\n return this.isExtraBR(t) || this.isBlockElement(t.nextSibling) || this.appendStringWithAttributes(\"\\n\", this.getTextAttributes(t)), this.processedElements.push(t);\n\n case \"img\":\n e = {\n url: t.getAttribute(\"src\"),\n contentType: \"image\"\n }, i = b(t);\n\n for (n in i) {\n r = i[n], e[n] = r;\n }\n\n return this.appendAttachmentWithAttributes(e, this.getTextAttributes(t)), this.processedElements.push(t);\n\n case \"tr\":\n if (t.parentNode.firstChild !== t) return this.appendStringWithAttributes(\"\\n\");\n break;\n\n case \"td\":\n if (t.parentNode.firstChild !== t) return this.appendStringWithAttributes(\" | \");\n }\n }, g.prototype.appendBlockForAttributesWithElement = function (t, e) {\n var n;\n return this.blockElements.push(e), n = m(t), this.blocks.push(n), n;\n }, g.prototype.appendEmptyBlock = function () {\n return this.appendBlockForAttributesWithElement([], null);\n }, g.prototype.appendStringWithAttributes = function (t, e) {\n return this.appendPiece(S(t, e));\n }, g.prototype.appendAttachmentWithAttributes = function (t, e) {\n return this.appendPiece(E(t, e));\n }, g.prototype.appendPiece = function (t) {\n return 0 === this.blocks.length && this.appendEmptyBlock(), this.blocks[this.blocks.length - 1].text.push(t);\n }, g.prototype.appendStringToTextAtIndex = function (t, e) {\n var n, i;\n return i = this.blocks[e].text, n = i[i.length - 1], \"string\" === (null != n ? n.type : void 0) ? n.string += t : i.push(S(t));\n }, g.prototype.prependStringToTextAtIndex = function (t, e) {\n var n, i;\n return i = this.blocks[e].text, n = i[0], \"string\" === (null != n ? n.type : void 0) ? n.string = t + n.string : i.unshift(S(t));\n }, S = function S(t, e) {\n var n;\n return null == e && (e = {}), n = \"string\", t = u(t), {\n string: t,\n attributes: e,\n type: n\n };\n }, E = function E(t, e) {\n var n;\n return null == e && (e = {}), n = \"attachment\", {\n attachment: t,\n attributes: e,\n type: n\n };\n }, m = function m(t) {\n var e;\n return null == t && (t = {}), e = [], {\n text: e,\n attributes: t\n };\n }, g.prototype.getTextAttributes = function (t) {\n var n, i, r, s, u, c, l, h, p, d, f, g;\n r = {}, p = e.config.textAttributes;\n\n for (n in p) {\n if (u = p[n], u.tagName && o(t, {\n matchingSelector: u.tagName,\n untilNode: this.containerElement\n })) r[n] = !0;else if (u.parser) {\n if (g = u.parser(t)) {\n for (i = !1, d = this.findBlockElementAncestors(t), c = 0, h = d.length; h > c; c++) {\n if (s = d[c], u.parser(s) === g) {\n i = !0;\n break;\n }\n }\n\n i || (r[n] = g);\n }\n } else u.styleProperty && (g = t.style[u.styleProperty]) && (r[n] = g);\n }\n\n if (a(t)) {\n f = w(t, \"attributes\");\n\n for (l in f) {\n g = f[l], r[l] = g;\n }\n }\n\n return r;\n }, g.prototype.getBlockAttributes = function (t) {\n var n, i, o, r;\n\n for (i = []; t && t !== this.containerElement;) {\n r = e.config.blockAttributes;\n\n for (n in r) {\n o = r[n], o.parse !== !1 && l(t) === o.tagName && ((\"function\" == typeof o.test ? o.test(t) : void 0) || !o.test) && (i.push(n), o.listAttribute && i.push(o.listAttribute));\n }\n\n t = t.parentNode;\n }\n\n return i.reverse();\n }, g.prototype.findBlockElementAncestors = function (t) {\n var e, n;\n\n for (e = []; t && t !== this.containerElement;) {\n n = l(t), f.call(r(), n) >= 0 && e.push(t), t = t.parentNode;\n }\n\n return e;\n }, w = function w(t, e) {\n try {\n return JSON.parse(t.getAttribute(\"data-trix-\" + e));\n } catch (n) {\n return {};\n }\n }, b = function b(t) {\n var e, n, i;\n return i = t.getAttribute(\"width\"), n = t.getAttribute(\"height\"), e = {}, i && (e.width = parseInt(i, 10)), n && (e.height = parseInt(n, 10)), e;\n }, g.prototype.isBlockElement = function (t) {\n var e;\n if ((null != t ? t.nodeType : void 0) === Node.ELEMENT_NODE && !a(t) && !o(t, {\n matchingSelector: \"td\",\n untilNode: this.containerElement\n })) return e = l(t), f.call(r(), e) >= 0 || \"block\" === window.getComputedStyle(t).display;\n }, g.prototype.isInsignificantTextNode = function (t) {\n var e, n, i;\n if ((null != t ? t.nodeType : void 0) === Node.TEXT_NODE && k(t.data) && (n = t.parentNode, i = t.previousSibling, e = t.nextSibling, (!C(n.previousSibling) || this.isBlockElement(n.previousSibling)) && !v(n))) return !i || this.isBlockElement(i) || !e || this.isBlockElement(e);\n }, g.prototype.isExtraBR = function (t) {\n return \"br\" === l(t) && this.isBlockElement(t.parentNode) && t.parentNode.lastChild === t;\n }, v = function v(t) {\n var e;\n return e = window.getComputedStyle(t).whiteSpace, \"pre\" === e || \"pre-wrap\" === e || \"pre-line\" === e;\n }, C = function C(t) {\n return t && !R(t.textContent);\n }, g.prototype.translateBlockElementMarginsToNewlines = function () {\n var t, e, n, i, o, r, s, a;\n\n for (e = this.getMarginOfDefaultBlockElement(), s = this.blocks, a = [], i = n = 0, o = s.length; o > n; i = ++n) {\n t = s[i], (r = this.getMarginOfBlockElementAtIndex(i)) && (r.top > 2 * e.top && this.prependStringToTextAtIndex(\"\\n\", i), a.push(r.bottom > 2 * e.bottom ? this.appendStringToTextAtIndex(\"\\n\", i) : void 0));\n }\n\n return a;\n }, g.prototype.getMarginOfBlockElementAtIndex = function (t) {\n var e, n;\n return !(e = this.blockElements[t]) || !e.textContent || (n = l(e), f.call(r(), n) >= 0 || f.call(this.processedElements, e) >= 0) ? void 0 : y(e);\n }, g.prototype.getMarginOfDefaultBlockElement = function () {\n var t;\n return t = s(e.config.blockAttributes[\"default\"].tagName), this.containerElement.appendChild(t), y(t);\n }, y = function y(t) {\n var e;\n return e = window.getComputedStyle(t), \"block\" === e.display ? {\n top: parseInt(e.marginTop),\n bottom: parseInt(e.marginBottom)\n } : void 0;\n }, A = function A(t) {\n return t.replace(RegExp(\"^\" + n.source + \"+\"), \"\");\n }, k = function k(t) {\n return RegExp(\"^\" + n.source + \"*$\").test(t);\n }, R = function R(t) {\n return /\\s$/.test(t);\n }, g;\n }(e.BasicObject);\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r = function r(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n s.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n s = {}.hasOwnProperty,\n a = [].slice,\n u = [].indexOf || function (t) {\n for (var e = 0, n = this.length; n > e; e++) {\n if (e in this && this[e] === t) return e;\n }\n\n return -1;\n };\n\n t = e.arraysAreEqual, i = e.normalizeRange, o = e.rangeIsCollapsed, n = e.getBlockConfig, e.Document = function (s) {\n function c(t) {\n null == t && (t = []), c.__super__.constructor.apply(this, arguments), 0 === t.length && (t = [new e.Block()]), this.blockList = e.SplittableList.box(t);\n }\n\n var l;\n return r(c, s), c.fromJSON = function (t) {\n var n, i;\n return i = function () {\n var i, o, r;\n\n for (r = [], i = 0, o = t.length; o > i; i++) {\n n = t[i], r.push(e.Block.fromJSON(n));\n }\n\n return r;\n }(), new this(i);\n }, c.fromHTML = function (t, n) {\n return e.HTMLParser.parse(t, n).getDocument();\n }, c.fromString = function (t, n) {\n var i;\n return i = e.Text.textForStringWithAttributes(t, n), new this([new e.Block(i)]);\n }, c.prototype.isEmpty = function () {\n var t;\n return 1 === this.blockList.length && (t = this.getBlockAtIndex(0), t.isEmpty() && !t.hasAttributes());\n }, c.prototype.copy = function (t) {\n var e;\n return null == t && (t = {}), e = t.consolidateBlocks ? this.blockList.consolidate().toArray() : this.blockList.toArray(), new this.constructor(e);\n }, c.prototype.copyUsingObjectsFromDocument = function (t) {\n var n;\n return n = new e.ObjectMap(t.getObjects()), this.copyUsingObjectMap(n);\n }, c.prototype.copyUsingObjectMap = function (t) {\n var e, n, i;\n return n = function () {\n var n, o, r, s;\n\n for (r = this.getBlocks(), s = [], n = 0, o = r.length; o > n; n++) {\n e = r[n], s.push((i = t.find(e)) ? i : e.copyUsingObjectMap(t));\n }\n\n return s;\n }.call(this), new this.constructor(n);\n }, c.prototype.copyWithBaseBlockAttributes = function (t) {\n var e, n, i;\n return null == t && (t = []), i = function () {\n var i, o, r, s;\n\n for (r = this.getBlocks(), s = [], i = 0, o = r.length; o > i; i++) {\n n = r[i], e = t.concat(n.getAttributes()), s.push(n.copyWithAttributes(e));\n }\n\n return s;\n }.call(this), new this.constructor(i);\n }, c.prototype.replaceBlock = function (t, e) {\n var n;\n return n = this.blockList.indexOf(t), -1 === n ? this : new this.constructor(this.blockList.replaceObjectAtIndex(e, n));\n }, c.prototype.insertDocumentAtRange = function (t, e) {\n var n, r, s, a, u, c, l;\n return r = t.blockList, u = (e = i(e))[0], c = this.locationFromPosition(u), s = c.index, a = c.offset, l = this, n = this.getBlockAtPosition(u), o(e) && n.isEmpty() && !n.hasAttributes() ? l = new this.constructor(l.blockList.removeObjectAtIndex(s)) : n.getBlockBreakPosition() === a && u++, l = l.removeTextAtRange(e), new this.constructor(l.blockList.insertSplittableListAtPosition(r, u));\n }, c.prototype.mergeDocumentAtRange = function (e, n) {\n var o, r, s, a, u, c, l, h, p, d, f, g;\n return f = (n = i(n))[0], d = this.locationFromPosition(f), r = this.getBlockAtIndex(d.index).getAttributes(), o = e.getBaseBlockAttributes(), g = r.slice(-o.length), t(o, g) ? (l = r.slice(0, -o.length), c = e.copyWithBaseBlockAttributes(l)) : c = e.copy({\n consolidateBlocks: !0\n }).copyWithBaseBlockAttributes(r), s = c.getBlockCount(), a = c.getBlockAtIndex(0), t(r, a.getAttributes()) ? (u = a.getTextWithoutBlockBreak(), p = this.insertTextAtRange(u, n), s > 1 && (c = new this.constructor(c.getBlocks().slice(1)), h = f + u.getLength(), p = p.insertDocumentAtRange(c, h))) : p = this.insertDocumentAtRange(c, n), p;\n }, c.prototype.insertTextAtRange = function (t, e) {\n var n, o, r, s, a;\n return a = (e = i(e))[0], s = this.locationFromPosition(a), o = s.index, r = s.offset, n = this.removeTextAtRange(e), new this.constructor(n.blockList.editObjectAtIndex(o, function (e) {\n return e.copyWithText(e.text.insertTextAtPosition(t, r));\n }));\n }, c.prototype.removeTextAtRange = function (t) {\n var e, n, r, s, a, u, c, l, h, p, d, f, g, m, v, y, b, A, C, x, w;\n return p = t = i(t), l = p[0], A = p[1], o(t) ? this : (d = this.locationRangeFromRange(t), u = d[0], y = d[1], a = u.index, c = u.offset, s = this.getBlockAtIndex(a), v = y.index, b = y.offset, m = this.getBlockAtIndex(v), f = A - l === 1 && s.getBlockBreakPosition() === c && m.getBlockBreakPosition() !== b && \"\\n\" === m.text.getStringAtPosition(b), f ? r = this.blockList.editObjectAtIndex(v, function (t) {\n return t.copyWithText(t.text.removeTextAtRange([b, b + 1]));\n }) : (h = s.text.getTextAtRange([0, c]), C = m.text.getTextAtRange([b, m.getLength()]), x = h.appendText(C), g = a !== v && 0 === c, w = g && s.getAttributeLevel() >= m.getAttributeLevel(), n = w ? m.copyWithText(x) : s.copyWithText(x), e = v + 1 - a, r = this.blockList.splice(a, e, n)), new this.constructor(r));\n }, c.prototype.moveTextFromRangeToPosition = function (t, e) {\n var n, o, r, s, u, c, l, h, p, d;\n return c = t = i(t), p = c[0], r = c[1], e >= p && r >= e ? this : (o = this.getDocumentAtRange(t), h = this.removeTextAtRange(t), u = e > p, u && (e -= o.getLength()), l = o.getBlocks(), s = l[0], n = 2 <= l.length ? a.call(l, 1) : [], 0 === n.length ? (d = s.getTextWithoutBlockBreak(), u && (e += 1)) : d = s.text, h = h.insertTextAtRange(d, e), 0 === n.length ? h : (o = new this.constructor(n), e += d.getLength(), h.insertDocumentAtRange(o, e)));\n }, c.prototype.addAttributeAtRange = function (t, e, i) {\n var o;\n return o = this.blockList, this.eachBlockAtRange(i, function (i, r, s) {\n return o = o.editObjectAtIndex(s, function () {\n return n(t) ? i.addAttribute(t, e) : r[0] === r[1] ? i : i.copyWithText(i.text.addAttributeAtRange(t, e, r));\n });\n }), new this.constructor(o);\n }, c.prototype.addAttribute = function (t, e) {\n var n;\n return n = this.blockList, this.eachBlock(function (i, o) {\n return n = n.editObjectAtIndex(o, function () {\n return i.addAttribute(t, e);\n });\n }), new this.constructor(n);\n }, c.prototype.removeAttributeAtRange = function (t, e) {\n var i;\n return i = this.blockList, this.eachBlockAtRange(e, function (e, o, r) {\n return n(t) ? i = i.editObjectAtIndex(r, function () {\n return e.removeAttribute(t);\n }) : o[0] !== o[1] ? i = i.editObjectAtIndex(r, function () {\n return e.copyWithText(e.text.removeAttributeAtRange(t, o));\n }) : void 0;\n }), new this.constructor(i);\n }, c.prototype.updateAttributesForAttachment = function (t, e) {\n var n, i, o, r;\n return o = (i = this.getRangeOfAttachment(e))[0], n = this.locationFromPosition(o).index, r = this.getTextAtIndex(n), new this.constructor(this.blockList.editObjectAtIndex(n, function (n) {\n return n.copyWithText(r.updateAttributesForAttachment(t, e));\n }));\n }, c.prototype.removeAttributeForAttachment = function (t, e) {\n var n;\n return n = this.getRangeOfAttachment(e), this.removeAttributeAtRange(t, n);\n }, c.prototype.insertBlockBreakAtRange = function (t) {\n var n, o, r, s;\n return s = (t = i(t))[0], r = this.locationFromPosition(s).offset, o = this.removeTextAtRange(t), 0 === r && (n = [new e.Block()]), new this.constructor(o.blockList.insertSplittableListAtPosition(new e.SplittableList(n), s));\n }, c.prototype.applyBlockAttributeAtRange = function (t, e, i) {\n var o, r, s, a;\n return s = this.expandRangeToLineBreaksAndSplitBlocks(i), r = s.document, i = s.range, o = n(t), o.listAttribute ? (r = r.removeLastListAttributeAtRange(i, {\n exceptAttributeName: t\n }), a = r.convertLineBreaksToBlockBreaksInRange(i), r = a.document, i = a.range) : r = o.exclusive ? r.removeBlockAttributesAtRange(i) : o.terminal ? r.removeLastTerminalAttributeAtRange(i) : r.consolidateBlocksAtRange(i), r.addAttributeAtRange(t, e, i);\n }, c.prototype.removeLastListAttributeAtRange = function (t, e) {\n var i;\n return null == e && (e = {}), i = this.blockList, this.eachBlockAtRange(t, function (t, o, r) {\n var s;\n if ((s = t.getLastAttribute()) && n(s).listAttribute && s !== e.exceptAttributeName) return i = i.editObjectAtIndex(r, function () {\n return t.removeAttribute(s);\n });\n }), new this.constructor(i);\n }, c.prototype.removeLastTerminalAttributeAtRange = function (t) {\n var e;\n return e = this.blockList, this.eachBlockAtRange(t, function (t, i, o) {\n var r;\n if ((r = t.getLastAttribute()) && n(r).terminal) return e = e.editObjectAtIndex(o, function () {\n return t.removeAttribute(r);\n });\n }), new this.constructor(e);\n }, c.prototype.removeBlockAttributesAtRange = function (t) {\n var e;\n return e = this.blockList, this.eachBlockAtRange(t, function (t, n, i) {\n return t.hasAttributes() ? e = e.editObjectAtIndex(i, function () {\n return t.copyWithoutAttributes();\n }) : void 0;\n }), new this.constructor(e);\n }, c.prototype.expandRangeToLineBreaksAndSplitBlocks = function (t) {\n var e, n, o, r, s, a, u, c, l;\n return a = t = i(t), l = a[0], r = a[1], c = this.locationFromPosition(l), o = this.locationFromPosition(r), e = this, u = e.getBlockAtIndex(c.index), null != (c.offset = u.findLineBreakInDirectionFromPosition(\"backward\", c.offset)) && (s = e.positionFromLocation(c), e = e.insertBlockBreakAtRange([s, s + 1]), o.index += 1, o.offset -= e.getBlockAtIndex(c.index).getLength(), c.index += 1), c.offset = 0, 0 === o.offset && o.index > c.index ? (o.index -= 1, o.offset = e.getBlockAtIndex(o.index).getBlockBreakPosition()) : (n = e.getBlockAtIndex(o.index), \"\\n\" === n.text.getStringAtRange([o.offset - 1, o.offset]) ? o.offset -= 1 : o.offset = n.findLineBreakInDirectionFromPosition(\"forward\", o.offset), o.offset !== n.getBlockBreakPosition() && (s = e.positionFromLocation(o), e = e.insertBlockBreakAtRange([s, s + 1]))), l = e.positionFromLocation(c), r = e.positionFromLocation(o), t = i([l, r]), {\n document: e,\n range: t\n };\n }, c.prototype.convertLineBreaksToBlockBreaksInRange = function (t) {\n var e, n, o;\n return n = (t = i(t))[0], o = this.getStringAtRange(t).slice(0, -1), e = this, o.replace(/.*?\\n/g, function (t) {\n return n += t.length, e = e.insertBlockBreakAtRange([n - 1, n]);\n }), {\n document: e,\n range: t\n };\n }, c.prototype.consolidateBlocksAtRange = function (t) {\n var e, n, o, r, s;\n return o = t = i(t), s = o[0], n = o[1], r = this.locationFromPosition(s).index, e = this.locationFromPosition(n).index, new this.constructor(this.blockList.consolidateFromIndexToIndex(r, e));\n }, c.prototype.getDocumentAtRange = function (t) {\n var e;\n return t = i(t), e = this.blockList.getSplittableListInRange(t).toArray(), new this.constructor(e);\n }, c.prototype.getStringAtRange = function (t) {\n var e, n, o;\n return o = t = i(t), n = o[o.length - 1], n !== this.getLength() && (e = -1), this.getDocumentAtRange(t).toString().slice(0, e);\n }, c.prototype.getBlockAtIndex = function (t) {\n return this.blockList.getObjectAtIndex(t);\n }, c.prototype.getBlockAtPosition = function (t) {\n var e;\n return e = this.locationFromPosition(t).index, this.getBlockAtIndex(e);\n }, c.prototype.getTextAtIndex = function (t) {\n var e;\n return null != (e = this.getBlockAtIndex(t)) ? e.text : void 0;\n }, c.prototype.getTextAtPosition = function (t) {\n var e;\n return e = this.locationFromPosition(t).index, this.getTextAtIndex(e);\n }, c.prototype.getPieceAtPosition = function (t) {\n var e, n, i;\n return i = this.locationFromPosition(t), e = i.index, n = i.offset, this.getTextAtIndex(e).getPieceAtPosition(n);\n }, c.prototype.getCharacterAtPosition = function (t) {\n var e, n, i;\n return i = this.locationFromPosition(t), e = i.index, n = i.offset, this.getTextAtIndex(e).getStringAtRange([n, n + 1]);\n }, c.prototype.getLength = function () {\n return this.blockList.getEndPosition();\n }, c.prototype.getBlocks = function () {\n return this.blockList.toArray();\n }, c.prototype.getBlockCount = function () {\n return this.blockList.length;\n }, c.prototype.getEditCount = function () {\n return this.editCount;\n }, c.prototype.eachBlock = function (t) {\n return this.blockList.eachObject(t);\n }, c.prototype.eachBlockAtRange = function (t, e) {\n var n, o, r, s, a, u, c, l, h, p, d, f;\n if (u = t = i(t), d = u[0], r = u[1], p = this.locationFromPosition(d), o = this.locationFromPosition(r), p.index === o.index) return n = this.getBlockAtIndex(p.index), f = [p.offset, o.offset], e(n, f, p.index);\n\n for (h = [], a = s = c = p.index, l = o.index; l >= c ? l >= s : s >= l; a = l >= c ? ++s : --s) {\n (n = this.getBlockAtIndex(a)) ? (f = function () {\n switch (a) {\n case p.index:\n return [p.offset, n.text.getLength()];\n\n case o.index:\n return [0, o.offset];\n\n default:\n return [0, n.text.getLength()];\n }\n }(), h.push(e(n, f, a))) : h.push(void 0);\n }\n\n return h;\n }, c.prototype.getCommonAttributesAtRange = function (t) {\n var n, r, s;\n return r = (t = i(t))[0], o(t) ? this.getCommonAttributesAtPosition(r) : (s = [], n = [], this.eachBlockAtRange(t, function (t, e) {\n return e[0] !== e[1] ? (s.push(t.text.getCommonAttributesAtRange(e)), n.push(l(t))) : void 0;\n }), e.Hash.fromCommonAttributesOfObjects(s).merge(e.Hash.fromCommonAttributesOfObjects(n)).toObject());\n }, c.prototype.getCommonAttributesAtPosition = function (t) {\n var n, i, o, r, s, a, c, h, p, d;\n if (p = this.locationFromPosition(t), s = p.index, h = p.offset, o = this.getBlockAtIndex(s), !o) return {};\n r = l(o), n = o.text.getAttributesAtPosition(h), i = o.text.getAttributesAtPosition(h - 1), a = function () {\n var t, n;\n t = e.config.textAttributes, n = [];\n\n for (c in t) {\n d = t[c], d.inheritable && n.push(c);\n }\n\n return n;\n }();\n\n for (c in i) {\n d = i[c], (d === n[c] || u.call(a, c) >= 0) && (r[c] = d);\n }\n\n return r;\n }, c.prototype.getRangeOfCommonAttributeAtPosition = function (t, e) {\n var n, o, r, s, a, u, c, l, h;\n return a = this.locationFromPosition(e), r = a.index, s = a.offset, h = this.getTextAtIndex(r), u = h.getExpandedRangeForAttributeAtOffset(t, s), l = u[0], o = u[1], c = this.positionFromLocation({\n index: r,\n offset: l\n }), n = this.positionFromLocation({\n index: r,\n offset: o\n }), i([c, n]);\n }, c.prototype.getBaseBlockAttributes = function () {\n var t, e, n, i, o, r, s;\n\n for (t = this.getBlockAtIndex(0).getAttributes(), n = i = 1, s = this.getBlockCount(); s >= 1 ? s > i : i > s; n = s >= 1 ? ++i : --i) {\n e = this.getBlockAtIndex(n).getAttributes(), r = Math.min(t.length, e.length), t = function () {\n var n, i, s;\n\n for (s = [], o = n = 0, i = r; (i >= 0 ? i > n : n > i) && e[o] === t[o]; o = i >= 0 ? ++n : --n) {\n s.push(e[o]);\n }\n\n return s;\n }();\n }\n\n return t;\n }, l = function l(t) {\n var e, n;\n return n = {}, (e = t.getLastAttribute()) && (n[e] = !0), n;\n }, c.prototype.getAttachmentById = function (t) {\n var e, n, i, o;\n\n for (o = this.getAttachments(), n = 0, i = o.length; i > n; n++) {\n if (e = o[n], e.id === t) return e;\n }\n }, c.prototype.getAttachmentPieces = function () {\n var t;\n return t = [], this.blockList.eachObject(function (e) {\n var n;\n return n = e.text, t = t.concat(n.getAttachmentPieces());\n }), t;\n }, c.prototype.getAttachments = function () {\n var t, e, n, i, o;\n\n for (i = this.getAttachmentPieces(), o = [], t = 0, e = i.length; e > t; t++) {\n n = i[t], o.push(n.attachment);\n }\n\n return o;\n }, c.prototype.getRangeOfAttachment = function (t) {\n var e, n, o, r, s, a, u;\n\n for (r = 0, s = this.blockList.toArray(), n = e = 0, o = s.length; o > e; n = ++e) {\n if (a = s[n].text, u = a.getRangeOfAttachment(t)) return i([r + u[0], r + u[1]]);\n r += a.getLength();\n }\n }, c.prototype.getLocationRangeOfAttachment = function (t) {\n var e;\n return e = this.getRangeOfAttachment(t), this.locationRangeFromRange(e);\n }, c.prototype.getAttachmentPieceForAttachment = function (t) {\n var e, n, i, o;\n\n for (o = this.getAttachmentPieces(), e = 0, n = o.length; n > e; e++) {\n if (i = o[e], i.attachment === t) return i;\n }\n }, c.prototype.findRangesForBlockAttribute = function (t) {\n var e, n, i, o, r, s, a;\n\n for (r = 0, s = [], a = this.getBlocks(), n = 0, i = a.length; i > n; n++) {\n e = a[n], o = e.getLength(), e.hasAttribute(t) && s.push([r, r + o]), r += o;\n }\n\n return s;\n }, c.prototype.findRangesForTextAttribute = function (t, e) {\n var n, i, o, r, s, a, u, c, l, h;\n\n for (h = (null != e ? e : {}).withValue, a = 0, u = [], c = [], r = function r(e) {\n return null != h ? e.getAttribute(t) === h : e.hasAttribute(t);\n }, l = this.getPieces(), n = 0, i = l.length; i > n; n++) {\n s = l[n], o = s.getLength(), r(s) && (u[1] === a ? u[1] = a + o : c.push(u = [a, a + o])), a += o;\n }\n\n return c;\n }, c.prototype.locationFromPosition = function (t) {\n var e, n;\n return n = this.blockList.findIndexAndOffsetAtPosition(Math.max(0, t)), null != n.index ? n : (e = this.getBlocks(), {\n index: e.length - 1,\n offset: e[e.length - 1].getLength()\n });\n }, c.prototype.positionFromLocation = function (t) {\n return this.blockList.findPositionAtIndexAndOffset(t.index, t.offset);\n }, c.prototype.locationRangeFromPosition = function (t) {\n return i(this.locationFromPosition(t));\n }, c.prototype.locationRangeFromRange = function (t) {\n var e, n, o, r;\n if (t = i(t)) return r = t[0], n = t[1], o = this.locationFromPosition(r), e = this.locationFromPosition(n), i([o, e]);\n }, c.prototype.rangeFromLocationRange = function (t) {\n var e, n;\n return t = i(t), e = this.positionFromLocation(t[0]), o(t) || (n = this.positionFromLocation(t[1])), i([e, n]);\n }, c.prototype.isEqualTo = function (t) {\n return this.blockList.isEqualTo(null != t ? t.blockList : void 0);\n }, c.prototype.getTexts = function () {\n var t, e, n, i, o;\n\n for (i = this.getBlocks(), o = [], e = 0, n = i.length; n > e; e++) {\n t = i[e], o.push(t.text);\n }\n\n return o;\n }, c.prototype.getPieces = function () {\n var t, e, n, i, o;\n\n for (n = [], i = this.getTexts(), t = 0, e = i.length; e > t; t++) {\n o = i[t], n.push.apply(n, o.getPieces());\n }\n\n return n;\n }, c.prototype.getObjects = function () {\n return this.getBlocks().concat(this.getTexts()).concat(this.getPieces());\n }, c.prototype.toSerializableDocument = function () {\n var t;\n return t = [], this.blockList.eachObject(function (e) {\n return t.push(e.copyWithText(e.text.toSerializableText()));\n }), new this.constructor(t);\n }, c.prototype.toString = function () {\n return this.blockList.toString();\n }, c.prototype.toJSON = function () {\n return this.blockList.toJSON();\n }, c.prototype.toConsole = function () {\n var t;\n return JSON.stringify(function () {\n var e, n, i, o;\n\n for (i = this.blockList.toArray(), o = [], e = 0, n = i.length; n > e; e++) {\n t = i[e], o.push(JSON.parse(t.text.toConsole()));\n }\n\n return o;\n }.call(this));\n }, c;\n }(e.Object);\n }.call(this), function () {\n e.LineBreakInsertion = function () {\n function t(t) {\n var e;\n this.composition = t, this.document = this.composition.document, e = this.composition.getSelectedRange(), this.startPosition = e[0], this.endPosition = e[1], this.startLocation = this.document.locationFromPosition(this.startPosition), this.endLocation = this.document.locationFromPosition(this.endPosition), this.block = this.document.getBlockAtIndex(this.endLocation.index), this.breaksOnReturn = this.block.breaksOnReturn(), this.previousCharacter = this.block.text.getStringAtPosition(this.endLocation.offset - 1), this.nextCharacter = this.block.text.getStringAtPosition(this.endLocation.offset);\n }\n\n return t.prototype.shouldInsertBlockBreak = function () {\n return this.block.hasAttributes() && this.block.isListItem() && !this.block.isEmpty() ? 0 !== this.startLocation.offset : this.breaksOnReturn && \"\\n\" !== this.nextCharacter;\n }, t.prototype.shouldBreakFormattedBlock = function () {\n return this.block.hasAttributes() && !this.block.isListItem() && (this.breaksOnReturn && \"\\n\" === this.nextCharacter || \"\\n\" === this.previousCharacter);\n }, t.prototype.shouldDecreaseListLevel = function () {\n return this.block.hasAttributes() && this.block.isListItem() && this.block.isEmpty();\n }, t.prototype.shouldPrependListItem = function () {\n return this.block.isListItem() && 0 === this.startLocation.offset && !this.block.isEmpty();\n }, t.prototype.shouldRemoveLastBlockAttribute = function () {\n return this.block.hasAttributes() && !this.block.isListItem() && this.block.isEmpty();\n }, t;\n }();\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r,\n s,\n a,\n u,\n c,\n l,\n h = function h(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n p.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n p = {}.hasOwnProperty;\n\n s = e.normalizeRange, c = e.rangesAreEqual, u = e.rangeIsCollapsed, a = e.objectsAreEqual, t = e.arrayStartsWith, l = e.summarizeArrayChange, i = e.getAllAttributeNames, o = e.getBlockConfig, r = e.getTextConfig, n = e.extend, e.Composition = function (p) {\n function d() {\n this.document = new e.Document(), this.attachments = [], this.currentAttributes = {}, this.revision = 0;\n }\n\n var f;\n return h(d, p), d.prototype.setDocument = function (t) {\n var e;\n return t.isEqualTo(this.document) ? void 0 : (this.document = t, this.refreshAttachments(), this.revision++, null != (e = this.delegate) && \"function\" == typeof e.compositionDidChangeDocument ? e.compositionDidChangeDocument(t) : void 0);\n }, d.prototype.getSnapshot = function () {\n return {\n document: this.document,\n selectedRange: this.getSelectedRange()\n };\n }, d.prototype.loadSnapshot = function (t) {\n var n, i, o, r;\n return n = t.document, r = t.selectedRange, null != (i = this.delegate) && \"function\" == typeof i.compositionWillLoadSnapshot && i.compositionWillLoadSnapshot(), this.setDocument(null != n ? n : new e.Document()), this.setSelection(null != r ? r : [0, 0]), null != (o = this.delegate) && \"function\" == typeof o.compositionDidLoadSnapshot ? o.compositionDidLoadSnapshot() : void 0;\n }, d.prototype.insertText = function (t, e) {\n var n, i, o, r;\n return r = (null != e ? e : {\n updatePosition: !0\n }).updatePosition, i = this.getSelectedRange(), this.setDocument(this.document.insertTextAtRange(t, i)), o = i[0], n = o + t.getLength(), r && this.setSelection(n), this.notifyDelegateOfInsertionAtRange([o, n]);\n }, d.prototype.insertBlock = function (t) {\n var n;\n return null == t && (t = new e.Block()), n = new e.Document([t]), this.insertDocument(n);\n }, d.prototype.insertDocument = function (t) {\n var n, i, o;\n return null == t && (t = new e.Document()), i = this.getSelectedRange(), this.setDocument(this.document.insertDocumentAtRange(t, i)), o = i[0], n = o + t.getLength(), this.setSelection(n), this.notifyDelegateOfInsertionAtRange([o, n]);\n }, d.prototype.insertString = function (t, n) {\n var i, o;\n return i = this.getCurrentTextAttributes(), o = e.Text.textForStringWithAttributes(t, i), this.insertText(o, n);\n }, d.prototype.insertBlockBreak = function () {\n var t, e, n;\n return e = this.getSelectedRange(), this.setDocument(this.document.insertBlockBreakAtRange(e)), n = e[0], t = n + 1, this.setSelection(t), this.notifyDelegateOfInsertionAtRange([n, t]);\n }, d.prototype.insertLineBreak = function () {\n var t, n;\n return n = new e.LineBreakInsertion(this), n.shouldDecreaseListLevel() ? (this.decreaseListLevel(), this.setSelection(n.startPosition)) : n.shouldPrependListItem() ? (t = new e.Document([n.block.copyWithoutText()]), this.insertDocument(t)) : n.shouldInsertBlockBreak() ? this.insertBlockBreak() : n.shouldRemoveLastBlockAttribute() ? this.removeLastBlockAttribute() : n.shouldBreakFormattedBlock() ? this.breakFormattedBlock(n) : this.insertString(\"\\n\");\n }, d.prototype.insertHTML = function (t) {\n var n, i, o, r;\n return n = e.Document.fromHTML(t), o = this.getSelectedRange(), this.setDocument(this.document.mergeDocumentAtRange(n, o)), r = o[0], i = r + n.getLength() - 1, this.setSelection(i), this.notifyDelegateOfInsertionAtRange([r, i]);\n }, d.prototype.replaceHTML = function (t) {\n var n, i, o;\n return n = e.Document.fromHTML(t).copyUsingObjectsFromDocument(this.document), i = this.getLocationRange({\n strict: !1\n }), o = this.document.rangeFromLocationRange(i), this.setDocument(n), this.setSelection(o);\n }, d.prototype.insertFile = function (t) {\n return this.insertFiles([t]);\n }, d.prototype.insertFiles = function (t) {\n var n, i, o, r, s, a;\n\n for (i = [], r = 0, s = t.length; s > r; r++) {\n o = t[r], (null != (a = this.delegate) ? a.compositionShouldAcceptFile(o) : void 0) && (n = e.Attachment.attachmentForFile(o), i.push(n));\n }\n\n return this.insertAttachments(i);\n }, d.prototype.insertAttachment = function (t) {\n return this.insertAttachments([t]);\n }, d.prototype.insertAttachments = function (t) {\n var n, i, o, r, s, a, u, c, l;\n\n for (c = new e.Text(), r = 0, s = t.length; s > r; r++) {\n n = t[r], l = n.getType(), a = null != (u = e.config.attachments[l]) ? u.presentation : void 0, o = this.getCurrentTextAttributes(), a && (o.presentation = a), i = e.Text.textForAttachmentWithAttributes(n, o), c = c.appendText(i);\n }\n\n return this.insertText(c);\n }, d.prototype.shouldManageDeletingInDirection = function (t) {\n var e;\n\n if (e = this.getLocationRange(), u(e)) {\n if (\"backward\" === t && 0 === e[0].offset) return !0;\n if (this.shouldManageMovingCursorInDirection(t)) return !0;\n } else if (e[0].index !== e[1].index) return !0;\n\n return !1;\n }, d.prototype.deleteInDirection = function (t, e) {\n var n, i, o, r, s, a, c, l;\n return r = (null != e ? e : {}).length, s = this.getLocationRange(), a = this.getSelectedRange(), c = u(a), c ? o = \"backward\" === t && 0 === s[0].offset : l = s[0].index !== s[1].index, o && this.canDecreaseBlockAttributeLevel() && (i = this.getBlock(), i.isListItem() ? this.decreaseListLevel() : this.decreaseBlockAttributeLevel(), this.setSelection(a[0]), i.isEmpty()) ? !1 : (c && (a = this.getExpandedRangeInDirection(t, {\n length: r\n }), \"backward\" === t && (n = this.getAttachmentAtRange(a))), n ? (this.editAttachment(n), !1) : (this.setDocument(this.document.removeTextAtRange(a)), this.setSelection(a[0]), o || l ? !1 : void 0));\n }, d.prototype.moveTextFromRange = function (t) {\n var e;\n return e = this.getSelectedRange()[0], this.setDocument(this.document.moveTextFromRangeToPosition(t, e)), this.setSelection(e);\n }, d.prototype.removeAttachment = function (t) {\n var e;\n return (e = this.document.getRangeOfAttachment(t)) ? (this.stopEditingAttachment(), this.setDocument(this.document.removeTextAtRange(e)), this.setSelection(e[0])) : void 0;\n }, d.prototype.removeLastBlockAttribute = function () {\n var t, e, n, i;\n return n = this.getSelectedRange(), i = n[0], e = n[1], t = this.document.getBlockAtPosition(e), this.removeCurrentAttribute(t.getLastAttribute()), this.setSelection(i);\n }, f = \" \", d.prototype.insertPlaceholder = function () {\n return this.placeholderPosition = this.getPosition(), this.insertString(f);\n }, d.prototype.selectPlaceholder = function () {\n return null != this.placeholderPosition ? (this.setSelectedRange([this.placeholderPosition, this.placeholderPosition + f.length]), this.getSelectedRange()) : void 0;\n }, d.prototype.forgetPlaceholder = function () {\n return this.placeholderPosition = null;\n }, d.prototype.hasCurrentAttribute = function (t) {\n var e;\n return e = this.currentAttributes[t], null != e && e !== !1;\n }, d.prototype.toggleCurrentAttribute = function (t) {\n var e;\n return (e = !this.currentAttributes[t]) ? this.setCurrentAttribute(t, e) : this.removeCurrentAttribute(t);\n }, d.prototype.canSetCurrentAttribute = function (t) {\n return o(t) ? this.canSetCurrentBlockAttribute(t) : this.canSetCurrentTextAttribute(t);\n }, d.prototype.canSetCurrentTextAttribute = function () {\n var t, e, n, i, o;\n\n if (e = this.getSelectedDocument()) {\n for (o = e.getAttachments(), n = 0, i = o.length; i > n; n++) {\n if (t = o[n], !t.hasContent()) return !1;\n }\n\n return !0;\n }\n }, d.prototype.canSetCurrentBlockAttribute = function () {\n var t;\n if (t = this.getBlock()) return !t.isTerminalBlock();\n }, d.prototype.setCurrentAttribute = function (t, e) {\n return o(t) ? this.setBlockAttribute(t, e) : (this.setTextAttribute(t, e), this.currentAttributes[t] = e, this.notifyDelegateOfCurrentAttributesChange());\n }, d.prototype.setTextAttribute = function (t, n) {\n var i, o, r, s;\n if (o = this.getSelectedRange()) return r = o[0], i = o[1], r !== i ? this.setDocument(this.document.addAttributeAtRange(t, n, o)) : \"href\" === t ? (s = e.Text.textForStringWithAttributes(n, {\n href: n\n }), this.insertText(s)) : void 0;\n }, d.prototype.setBlockAttribute = function (t, e) {\n var n, i;\n if (i = this.getSelectedRange()) return this.canSetCurrentAttribute(t) ? (n = this.getBlock(), this.setDocument(this.document.applyBlockAttributeAtRange(t, e, i)), this.setSelection(i)) : void 0;\n }, d.prototype.removeCurrentAttribute = function (t) {\n return o(t) ? (this.removeBlockAttribute(t), this.updateCurrentAttributes()) : (this.removeTextAttribute(t), delete this.currentAttributes[t], this.notifyDelegateOfCurrentAttributesChange());\n }, d.prototype.removeTextAttribute = function (t) {\n var e;\n if (e = this.getSelectedRange()) return this.setDocument(this.document.removeAttributeAtRange(t, e));\n }, d.prototype.removeBlockAttribute = function (t) {\n var e;\n if (e = this.getSelectedRange()) return this.setDocument(this.document.removeAttributeAtRange(t, e));\n }, d.prototype.canDecreaseNestingLevel = function () {\n var t;\n return (null != (t = this.getBlock()) ? t.getNestingLevel() : void 0) > 0;\n }, d.prototype.canIncreaseNestingLevel = function () {\n var e, n, i;\n if (e = this.getBlock()) return (null != (i = o(e.getLastNestableAttribute())) ? i.listAttribute : 0) ? (n = this.getPreviousBlock()) ? t(n.getListItemAttributes(), e.getListItemAttributes()) : void 0 : e.getNestingLevel() > 0;\n }, d.prototype.decreaseNestingLevel = function () {\n var t;\n if (t = this.getBlock()) return this.setDocument(this.document.replaceBlock(t, t.decreaseNestingLevel()));\n }, d.prototype.increaseNestingLevel = function () {\n var t;\n if (t = this.getBlock()) return this.setDocument(this.document.replaceBlock(t, t.increaseNestingLevel()));\n }, d.prototype.canDecreaseBlockAttributeLevel = function () {\n var t;\n return (null != (t = this.getBlock()) ? t.getAttributeLevel() : void 0) > 0;\n }, d.prototype.decreaseBlockAttributeLevel = function () {\n var t, e;\n return (t = null != (e = this.getBlock()) ? e.getLastAttribute() : void 0) ? this.removeCurrentAttribute(t) : void 0;\n }, d.prototype.decreaseListLevel = function () {\n var t, e, n, i, o, r;\n\n for (r = this.getSelectedRange()[0], o = this.document.locationFromPosition(r).index, n = o, t = this.getBlock().getAttributeLevel(); (e = this.document.getBlockAtIndex(n + 1)) && e.isListItem() && e.getAttributeLevel() > t;) {\n n++;\n }\n\n return r = this.document.positionFromLocation({\n index: o,\n offset: 0\n }), i = this.document.positionFromLocation({\n index: n,\n offset: 0\n }), this.setDocument(this.document.removeLastListAttributeAtRange([r, i]));\n }, d.prototype.updateCurrentAttributes = function () {\n var t, e, n, o, r, s;\n\n if (s = this.getSelectedRange({\n ignoreLock: !0\n })) {\n for (e = this.document.getCommonAttributesAtRange(s), r = i(), n = 0, o = r.length; o > n; n++) {\n t = r[n], e[t] || this.canSetCurrentAttribute(t) || (e[t] = !1);\n }\n\n if (!a(e, this.currentAttributes)) return this.currentAttributes = e, this.notifyDelegateOfCurrentAttributesChange();\n }\n }, d.prototype.getCurrentAttributes = function () {\n return n.call({}, this.currentAttributes);\n }, d.prototype.getCurrentTextAttributes = function () {\n var t, e, n, i;\n t = {}, n = this.currentAttributes;\n\n for (e in n) {\n i = n[e], i !== !1 && r(e) && (t[e] = i);\n }\n\n return t;\n }, d.prototype.freezeSelection = function () {\n return this.setCurrentAttribute(\"frozen\", !0);\n }, d.prototype.thawSelection = function () {\n return this.removeCurrentAttribute(\"frozen\");\n }, d.prototype.hasFrozenSelection = function () {\n return this.hasCurrentAttribute(\"frozen\");\n }, d.proxyMethod(\"getSelectionManager().getPointRange\"), d.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\"), d.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\"), d.proxyMethod(\"getSelectionManager().locationIsCursorTarget\"), d.proxyMethod(\"getSelectionManager().selectionIsExpanded\"), d.proxyMethod(\"delegate?.getSelectionManager\"), d.prototype.setSelection = function (t) {\n var e, n;\n return e = this.document.locationRangeFromRange(t), null != (n = this.delegate) ? n.compositionDidRequestChangingSelectionToLocationRange(e) : void 0;\n }, d.prototype.getSelectedRange = function () {\n var t;\n return (t = this.getLocationRange()) ? this.document.rangeFromLocationRange(t) : void 0;\n }, d.prototype.setSelectedRange = function (t) {\n var e;\n return e = this.document.locationRangeFromRange(t), this.getSelectionManager().setLocationRange(e);\n }, d.prototype.getPosition = function () {\n var t;\n return (t = this.getLocationRange()) ? this.document.positionFromLocation(t[0]) : void 0;\n }, d.prototype.getLocationRange = function (t) {\n var e, n;\n return null != (e = null != (n = this.targetLocationRange) ? n : this.getSelectionManager().getLocationRange(t)) ? e : s({\n index: 0,\n offset: 0\n });\n }, d.prototype.withTargetLocationRange = function (t, e) {\n var n;\n this.targetLocationRange = t;\n\n try {\n n = e();\n } finally {\n this.targetLocationRange = null;\n }\n\n return n;\n }, d.prototype.withTargetRange = function (t, e) {\n var n;\n return n = this.document.locationRangeFromRange(t), this.withTargetLocationRange(n, e);\n }, d.prototype.withTargetDOMRange = function (t, e) {\n var n;\n return n = this.createLocationRangeFromDOMRange(t, {\n strict: !1\n }), this.withTargetLocationRange(n, e);\n }, d.prototype.getExpandedRangeInDirection = function (t, e) {\n var n, i, o, r;\n return i = (null != e ? e : {}).length, o = this.getSelectedRange(), r = o[0], n = o[1], \"backward\" === t ? i ? r -= i : r = this.translateUTF16PositionFromOffset(r, -1) : i ? n += i : n = this.translateUTF16PositionFromOffset(n, 1), s([r, n]);\n }, d.prototype.shouldManageMovingCursorInDirection = function (t) {\n var e;\n return this.editingAttachment ? !0 : (e = this.getExpandedRangeInDirection(t), null != this.getAttachmentAtRange(e));\n }, d.prototype.moveCursorInDirection = function (t) {\n var e, n, i, o;\n return this.editingAttachment ? i = this.document.getRangeOfAttachment(this.editingAttachment) : (o = this.getSelectedRange(), i = this.getExpandedRangeInDirection(t), n = !c(o, i)), this.setSelectedRange(\"backward\" === t ? i[0] : i[1]), n && (e = this.getAttachmentAtRange(i)) ? this.editAttachment(e) : void 0;\n }, d.prototype.expandSelectionInDirection = function (t, e) {\n var n, i;\n return n = (null != e ? e : {}).length, i = this.getExpandedRangeInDirection(t, {\n length: n\n }), this.setSelectedRange(i);\n }, d.prototype.expandSelectionForEditing = function () {\n return this.hasCurrentAttribute(\"href\") ? this.expandSelectionAroundCommonAttribute(\"href\") : void 0;\n }, d.prototype.expandSelectionAroundCommonAttribute = function (t) {\n var e, n;\n return e = this.getPosition(), n = this.document.getRangeOfCommonAttributeAtPosition(t, e), this.setSelectedRange(n);\n }, d.prototype.selectionContainsAttachments = function () {\n var t;\n return (null != (t = this.getSelectedAttachments()) ? t.length : void 0) > 0;\n }, d.prototype.selectionIsInCursorTarget = function () {\n return this.editingAttachment || this.positionIsCursorTarget(this.getPosition());\n }, d.prototype.positionIsCursorTarget = function (t) {\n var e;\n return (e = this.document.locationFromPosition(t)) ? this.locationIsCursorTarget(e) : void 0;\n }, d.prototype.positionIsBlockBreak = function (t) {\n var e;\n return null != (e = this.document.getPieceAtPosition(t)) ? e.isBlockBreak() : void 0;\n }, d.prototype.getSelectedDocument = function () {\n var t;\n return (t = this.getSelectedRange()) ? this.document.getDocumentAtRange(t) : void 0;\n }, d.prototype.getSelectedAttachments = function () {\n var t;\n return null != (t = this.getSelectedDocument()) ? t.getAttachments() : void 0;\n }, d.prototype.getAttachments = function () {\n return this.attachments.slice(0);\n }, d.prototype.refreshAttachments = function () {\n var t, e, n, i, o, r, s, a, u, c, h, p;\n\n for (n = this.document.getAttachments(), a = l(this.attachments, n), t = a.added, h = a.removed, this.attachments = n, i = 0, r = h.length; r > i; i++) {\n e = h[i], e.delegate = null, null != (u = this.delegate) && \"function\" == typeof u.compositionDidRemoveAttachment && u.compositionDidRemoveAttachment(e);\n }\n\n for (p = [], o = 0, s = t.length; s > o; o++) {\n e = t[o], e.delegate = this, p.push(null != (c = this.delegate) && \"function\" == typeof c.compositionDidAddAttachment ? c.compositionDidAddAttachment(e) : void 0);\n }\n\n return p;\n }, d.prototype.attachmentDidChangeAttributes = function (t) {\n var e;\n return this.revision++, null != (e = this.delegate) && \"function\" == typeof e.compositionDidEditAttachment ? e.compositionDidEditAttachment(t) : void 0;\n }, d.prototype.attachmentDidChangePreviewURL = function (t) {\n var e;\n return this.revision++, null != (e = this.delegate) && \"function\" == typeof e.compositionDidChangeAttachmentPreviewURL ? e.compositionDidChangeAttachmentPreviewURL(t) : void 0;\n }, d.prototype.editAttachment = function (t, e) {\n var n;\n if (t !== this.editingAttachment) return this.stopEditingAttachment(), this.editingAttachment = t, null != (n = this.delegate) && \"function\" == typeof n.compositionDidStartEditingAttachment ? n.compositionDidStartEditingAttachment(this.editingAttachment, e) : void 0;\n }, d.prototype.stopEditingAttachment = function () {\n var t;\n if (this.editingAttachment) return null != (t = this.delegate) && \"function\" == typeof t.compositionDidStopEditingAttachment && t.compositionDidStopEditingAttachment(this.editingAttachment), this.editingAttachment = null;\n }, d.prototype.updateAttributesForAttachment = function (t, e) {\n return this.setDocument(this.document.updateAttributesForAttachment(t, e));\n }, d.prototype.removeAttributeForAttachment = function (t, e) {\n return this.setDocument(this.document.removeAttributeForAttachment(t, e));\n }, d.prototype.breakFormattedBlock = function (t) {\n var n, i, o, r, s;\n return i = t.document, n = t.block, r = t.startPosition, s = [r - 1, r], n.getBlockBreakPosition() === t.startLocation.offset ? (n.breaksOnReturn() && \"\\n\" === t.nextCharacter ? r += 1 : i = i.removeTextAtRange(s), s = [r, r]) : \"\\n\" === t.nextCharacter ? \"\\n\" === t.previousCharacter ? s = [r - 1, r + 1] : (s = [r, r + 1], r += 1) : t.startLocation.offset - 1 !== 0 && (r += 1), o = new e.Document([n.removeLastAttribute().copyWithoutText()]), this.setDocument(i.insertDocumentAtRange(o, s)), this.setSelection(r);\n }, d.prototype.getPreviousBlock = function () {\n var t, e;\n return (e = this.getLocationRange()) && (t = e[0].index, t > 0) ? this.document.getBlockAtIndex(t - 1) : void 0;\n }, d.prototype.getBlock = function () {\n var t;\n return (t = this.getLocationRange()) ? this.document.getBlockAtIndex(t[0].index) : void 0;\n }, d.prototype.getAttachmentAtRange = function (t) {\n var n;\n return n = this.document.getDocumentAtRange(t), n.toString() === e.OBJECT_REPLACEMENT_CHARACTER + \"\\n\" ? n.getAttachments()[0] : void 0;\n }, d.prototype.notifyDelegateOfCurrentAttributesChange = function () {\n var t;\n return null != (t = this.delegate) && \"function\" == typeof t.compositionDidChangeCurrentAttributes ? t.compositionDidChangeCurrentAttributes(this.currentAttributes) : void 0;\n }, d.prototype.notifyDelegateOfInsertionAtRange = function (t) {\n var e;\n return null != (e = this.delegate) && \"function\" == typeof e.compositionDidPerformInsertionAtRange ? e.compositionDidPerformInsertionAtRange(t) : void 0;\n }, d.prototype.translateUTF16PositionFromOffset = function (t, e) {\n var n, i;\n return i = this.document.toUTF16String(), n = i.offsetFromUCS2Offset(t), i.offsetToUCS2Offset(n + e);\n }, d;\n }(e.BasicObject);\n }.call(this), function () {\n var t = function t(_t17, e) {\n function i() {\n this.constructor = _t17;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t17[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t17.prototype = new i(), _t17.__super__ = e.prototype, _t17;\n },\n n = {}.hasOwnProperty;\n\n e.UndoManager = function (e) {\n function n(t) {\n this.composition = t, this.undoEntries = [], this.redoEntries = [];\n }\n\n var i;\n return t(n, e), n.prototype.recordUndoEntry = function (t, e) {\n var n, o, r, s, a;\n return s = null != e ? e : {}, o = s.context, n = s.consolidatable, r = this.undoEntries.slice(-1)[0], n && i(r, t, o) ? void 0 : (a = this.createEntry({\n description: t,\n context: o\n }), this.undoEntries.push(a), this.redoEntries = []);\n }, n.prototype.undo = function () {\n var t, e;\n return (e = this.undoEntries.pop()) ? (t = this.createEntry(e), this.redoEntries.push(t), this.composition.loadSnapshot(e.snapshot)) : void 0;\n }, n.prototype.redo = function () {\n var t, e;\n return (t = this.redoEntries.pop()) ? (e = this.createEntry(t), this.undoEntries.push(e), this.composition.loadSnapshot(t.snapshot)) : void 0;\n }, n.prototype.canUndo = function () {\n return this.undoEntries.length > 0;\n }, n.prototype.canRedo = function () {\n return this.redoEntries.length > 0;\n }, n.prototype.createEntry = function (t) {\n var e, n, i;\n return i = null != t ? t : {}, n = i.description, e = i.context, {\n description: null != n ? n.toString() : void 0,\n context: JSON.stringify(e),\n snapshot: this.composition.getSnapshot()\n };\n }, i = function i(t, e, n) {\n return (null != t ? t.description : void 0) === (null != e ? e.toString() : void 0) && (null != t ? t.context : void 0) === JSON.stringify(n);\n }, n;\n }(e.BasicObject);\n }.call(this), function () {\n var t;\n e.attachmentGalleryFilter = function (e) {\n var n;\n return n = new t(e), n.perform(), n.getSnapshot();\n }, t = function () {\n function t(t) {\n this.document = t.document, this.selectedRange = t.selectedRange;\n }\n\n var e, n, i;\n return e = \"attachmentGallery\", n = \"presentation\", i = \"gallery\", t.prototype.perform = function () {\n return this.removeBlockAttribute(), this.applyBlockAttribute();\n }, t.prototype.getSnapshot = function () {\n return {\n document: this.document,\n selectedRange: this.selectedRange\n };\n }, t.prototype.removeBlockAttribute = function () {\n var t, n, i, o, r;\n\n for (o = this.findRangesOfBlocks(), r = [], t = 0, n = o.length; n > t; t++) {\n i = o[t], r.push(this.document = this.document.removeAttributeAtRange(e, i));\n }\n\n return r;\n }, t.prototype.applyBlockAttribute = function () {\n var t, n, i, o, r, s;\n\n for (i = 0, r = this.findRangesOfPieces(), s = [], t = 0, n = r.length; n > t; t++) {\n o = r[t], o[1] - o[0] > 1 && (o[0] += i, o[1] += i, \"\\n\" !== this.document.getCharacterAtPosition(o[1]) && (this.document = this.document.insertBlockBreakAtRange(o[1]), o[1] < this.selectedRange[1] && this.moveSelectedRangeForward(), o[1]++, i++), 0 !== o[0] && \"\\n\" !== this.document.getCharacterAtPosition(o[0] - 1) && (this.document = this.document.insertBlockBreakAtRange(o[0]), o[0] < this.selectedRange[0] && this.moveSelectedRangeForward(), o[0]++, i++), s.push(this.document = this.document.applyBlockAttributeAtRange(e, !0, o)));\n }\n\n return s;\n }, t.prototype.findRangesOfBlocks = function () {\n return this.document.findRangesForBlockAttribute(e);\n }, t.prototype.findRangesOfPieces = function () {\n return this.document.findRangesForTextAttribute(n, {\n withValue: i\n });\n }, t.prototype.moveSelectedRangeForward = function () {\n return this.selectedRange[0] += 1, this.selectedRange[1] += 1;\n }, t;\n }();\n }.call(this), function () {\n var t = function t(_t18, e) {\n return function () {\n return _t18.apply(e, arguments);\n };\n };\n\n e.Editor = function () {\n function n(n, o, r) {\n this.composition = n, this.selectionManager = o, this.element = r, this.insertFiles = t(this.insertFiles, this), this.undoManager = new e.UndoManager(this.composition), this.filters = i.slice(0);\n }\n\n var i;\n return i = [e.attachmentGalleryFilter], n.prototype.loadDocument = function (t) {\n return this.loadSnapshot({\n document: t,\n selectedRange: [0, 0]\n });\n }, n.prototype.loadHTML = function (t) {\n return null == t && (t = \"\"), this.loadDocument(e.Document.fromHTML(t, {\n referenceElement: this.element\n }));\n }, n.prototype.loadJSON = function (t) {\n var n, i;\n return n = t.document, i = t.selectedRange, n = e.Document.fromJSON(n), this.loadSnapshot({\n document: n,\n selectedRange: i\n });\n }, n.prototype.loadSnapshot = function (t) {\n return this.undoManager = new e.UndoManager(this.composition), this.composition.loadSnapshot(t);\n }, n.prototype.getDocument = function () {\n return this.composition.document;\n }, n.prototype.getSelectedDocument = function () {\n return this.composition.getSelectedDocument();\n }, n.prototype.getSnapshot = function () {\n return this.composition.getSnapshot();\n }, n.prototype.toJSON = function () {\n return this.getSnapshot();\n }, n.prototype.deleteInDirection = function (t) {\n return this.composition.deleteInDirection(t);\n }, n.prototype.insertAttachment = function (t) {\n return this.composition.insertAttachment(t);\n }, n.prototype.insertAttachments = function (t) {\n return this.composition.insertAttachments(t);\n }, n.prototype.insertDocument = function (t) {\n return this.composition.insertDocument(t);\n }, n.prototype.insertFile = function (t) {\n return this.composition.insertFile(t);\n }, n.prototype.insertFiles = function (t) {\n return this.composition.insertFiles(t);\n }, n.prototype.insertHTML = function (t) {\n return this.composition.insertHTML(t);\n }, n.prototype.insertString = function (t) {\n return this.composition.insertString(t);\n }, n.prototype.insertText = function (t) {\n return this.composition.insertText(t);\n }, n.prototype.insertLineBreak = function () {\n return this.composition.insertLineBreak();\n }, n.prototype.getSelectedRange = function () {\n return this.composition.getSelectedRange();\n }, n.prototype.getPosition = function () {\n return this.composition.getPosition();\n }, n.prototype.getClientRectAtPosition = function (t) {\n var e;\n return e = this.getDocument().locationRangeFromRange([t, t + 1]), this.selectionManager.getClientRectAtLocationRange(e);\n }, n.prototype.expandSelectionInDirection = function (t) {\n return this.composition.expandSelectionInDirection(t);\n }, n.prototype.moveCursorInDirection = function (t) {\n return this.composition.moveCursorInDirection(t);\n }, n.prototype.setSelectedRange = function (t) {\n return this.composition.setSelectedRange(t);\n }, n.prototype.activateAttribute = function (t, e) {\n return null == e && (e = !0), this.composition.setCurrentAttribute(t, e);\n }, n.prototype.attributeIsActive = function (t) {\n return this.composition.hasCurrentAttribute(t);\n }, n.prototype.canActivateAttribute = function (t) {\n return this.composition.canSetCurrentAttribute(t);\n }, n.prototype.deactivateAttribute = function (t) {\n return this.composition.removeCurrentAttribute(t);\n }, n.prototype.canDecreaseNestingLevel = function () {\n return this.composition.canDecreaseNestingLevel();\n }, n.prototype.canIncreaseNestingLevel = function () {\n return this.composition.canIncreaseNestingLevel();\n }, n.prototype.decreaseNestingLevel = function () {\n return this.canDecreaseNestingLevel() ? this.composition.decreaseNestingLevel() : void 0;\n }, n.prototype.increaseNestingLevel = function () {\n return this.canIncreaseNestingLevel() ? this.composition.increaseNestingLevel() : void 0;\n }, n.prototype.canRedo = function () {\n return this.undoManager.canRedo();\n }, n.prototype.canUndo = function () {\n return this.undoManager.canUndo();\n }, n.prototype.recordUndoEntry = function (t, e) {\n var n, i, o;\n return o = null != e ? e : {}, i = o.context, n = o.consolidatable, this.undoManager.recordUndoEntry(t, {\n context: i,\n consolidatable: n\n });\n }, n.prototype.redo = function () {\n return this.canRedo() ? this.undoManager.redo() : void 0;\n }, n.prototype.undo = function () {\n return this.canUndo() ? this.undoManager.undo() : void 0;\n }, n;\n }();\n }.call(this), function () {\n var t = function t(_t19, e) {\n function i() {\n this.constructor = _t19;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t19[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t19.prototype = new i(), _t19.__super__ = e.prototype, _t19;\n },\n n = {}.hasOwnProperty;\n\n e.ManagedAttachment = function (e) {\n function n(t, e) {\n var n;\n this.attachmentManager = t, this.attachment = e, n = this.attachment, this.id = n.id, this.file = n.file;\n }\n\n return t(n, e), n.prototype.remove = function () {\n return this.attachmentManager.requestRemovalOfAttachment(this.attachment);\n }, n.proxyMethod(\"attachment.getAttribute\"), n.proxyMethod(\"attachment.hasAttribute\"), n.proxyMethod(\"attachment.setAttribute\"), n.proxyMethod(\"attachment.getAttributes\"), n.proxyMethod(\"attachment.setAttributes\"), n.proxyMethod(\"attachment.isPending\"), n.proxyMethod(\"attachment.isPreviewable\"), n.proxyMethod(\"attachment.getURL\"), n.proxyMethod(\"attachment.getHref\"), n.proxyMethod(\"attachment.getFilename\"), n.proxyMethod(\"attachment.getFilesize\"), n.proxyMethod(\"attachment.getFormattedFilesize\"), n.proxyMethod(\"attachment.getExtension\"), n.proxyMethod(\"attachment.getContentType\"), n.proxyMethod(\"attachment.getFile\"), n.proxyMethod(\"attachment.setFile\"), n.proxyMethod(\"attachment.releaseFile\"), n.proxyMethod(\"attachment.getUploadProgress\"), n.proxyMethod(\"attachment.setUploadProgress\"), n;\n }(e.BasicObject);\n }.call(this), function () {\n var t = function t(_t20, e) {\n function i() {\n this.constructor = _t20;\n }\n\n for (var o in e) {\n n.call(e, o) && (_t20[o] = e[o]);\n }\n\n return i.prototype = e.prototype, _t20.prototype = new i(), _t20.__super__ = e.prototype, _t20;\n },\n n = {}.hasOwnProperty;\n\n e.AttachmentManager = function (n) {\n function i(t) {\n var e, n, i;\n\n for (null == t && (t = []), this.managedAttachments = {}, n = 0, i = t.length; i > n; n++) {\n e = t[n], this.manageAttachment(e);\n }\n }\n\n return t(i, n), i.prototype.getAttachments = function () {\n var t, e, n, i;\n n = this.managedAttachments, i = [];\n\n for (e in n) {\n t = n[e], i.push(t);\n }\n\n return i;\n }, i.prototype.manageAttachment = function (t) {\n var n, i;\n return null != (n = this.managedAttachments)[i = t.id] ? n[i] : n[i] = new e.ManagedAttachment(this, t);\n }, i.prototype.attachmentIsManaged = function (t) {\n return t.id in this.managedAttachments;\n }, i.prototype.requestRemovalOfAttachment = function (t) {\n var e;\n return this.attachmentIsManaged(t) && null != (e = this.delegate) && \"function\" == typeof e.attachmentManagerDidRequestRemovalOfAttachment ? e.attachmentManagerDidRequestRemovalOfAttachment(t) : void 0;\n }, i.prototype.unmanageAttachment = function (t) {\n var e;\n return e = this.managedAttachments[t.id], delete this.managedAttachments[t.id], e;\n }, i;\n }(e.BasicObject);\n }.call(this), function () {\n var t, n, i, o, r, s, a, u, c, l, h;\n t = e.elementContainsNode, n = e.findChildIndexOfNode, r = e.nodeIsBlockStart, s = e.nodeIsBlockStartComment, o = e.nodeIsBlockContainer, a = e.nodeIsCursorTarget, u = e.nodeIsEmptyTextNode, c = e.nodeIsTextNode, i = e.nodeIsAttachmentElement, l = e.tagName, h = e.walkTree, e.LocationMapper = function () {\n function e(t) {\n this.element = t;\n }\n\n var p, d, f, g;\n return e.prototype.findLocationFromContainerAndOffset = function (e, i, o) {\n var s, u, l, p, g, m, v;\n\n for (m = (null != o ? o : {\n strict: !0\n }).strict, u = 0, l = !1, p = {\n index: 0,\n offset: 0\n }, (s = this.findAttachmentElementParentForNode(e)) && (e = s.parentNode, i = n(s)), v = h(this.element, {\n usingFilter: f\n }); v.nextNode();) {\n if (g = v.currentNode, g === e && c(e)) {\n a(g) || (p.offset += i);\n break;\n }\n\n if (g.parentNode === e) {\n if (u++ === i) break;\n } else if (!t(e, g) && u > 0) break;\n\n r(g, {\n strict: m\n }) ? (l && p.index++, p.offset = 0, l = !0) : p.offset += d(g);\n }\n\n return p;\n }, e.prototype.findContainerAndOffsetFromLocation = function (t) {\n var e, i, s, u, l;\n\n if (0 === t.index && 0 === t.offset) {\n for (e = this.element, u = 0; e.firstChild;) {\n if (e = e.firstChild, o(e)) {\n u = 1;\n break;\n }\n }\n\n return [e, u];\n }\n\n if (l = this.findNodeAndOffsetFromLocation(t), i = l[0], s = l[1], i) {\n if (c(i)) 0 === d(i) ? (e = i.parentNode.parentNode, u = n(i.parentNode), a(i, {\n name: \"right\"\n }) && u++) : (e = i, u = t.offset - s);else {\n if (e = i.parentNode, !r(i.previousSibling) && !o(e)) for (; i === e.lastChild && (i = e, e = e.parentNode, !o(e));) {\n ;\n }\n u = n(i), 0 !== t.offset && u++;\n }\n return [e, u];\n }\n }, e.prototype.findNodeAndOffsetFromLocation = function (t) {\n var e, n, i, o, r, s, u, l;\n\n for (u = 0, l = this.getSignificantNodesForIndex(t.index), n = 0, i = l.length; i > n; n++) {\n if (e = l[n], o = d(e), t.offset <= u + o) if (c(e)) {\n if (r = e, s = u, t.offset === s && a(r)) break;\n } else r || (r = e, s = u);\n if (u += o, u > t.offset) break;\n }\n\n return [r, s];\n }, e.prototype.findAttachmentElementParentForNode = function (t) {\n for (; t && t !== this.element;) {\n if (i(t)) return t;\n t = t.parentNode;\n }\n }, e.prototype.getSignificantNodesForIndex = function (t) {\n var e, n, i, o, r;\n\n for (i = [], r = h(this.element, {\n usingFilter: p\n }), o = !1; r.nextNode();) {\n if (n = r.currentNode, s(n)) {\n if (\"undefined\" != typeof e && null !== e ? e++ : e = 0, e === t) o = !0;else if (o) break;\n } else o && i.push(n);\n }\n\n return i;\n }, d = function d(t) {\n var e;\n return t.nodeType === Node.TEXT_NODE ? a(t) ? 0 : (e = t.textContent, e.length) : \"br\" === l(t) || i(t) ? 1 : 0;\n }, p = function p(t) {\n return g(t) === NodeFilter.FILTER_ACCEPT ? f(t) : NodeFilter.FILTER_REJECT;\n }, g = function g(t) {\n return u(t) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }, f = function f(t) {\n return i(t.parentNode) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }, e;\n }();\n }.call(this), function () {\n var t,\n n,\n i = [].slice;\n t = e.getDOMRange, n = e.setDOMRange, e.PointMapper = function () {\n function e() {}\n\n return e.prototype.createDOMRangeFromPoint = function (e) {\n var i, o, r, s, a, u, c, l;\n if (c = e.x, l = e.y, document.caretPositionFromPoint) return a = document.caretPositionFromPoint(c, l), r = a.offsetNode, o = a.offset, i = document.createRange(), i.setStart(r, o), i;\n if (document.caretRangeFromPoint) return document.caretRangeFromPoint(c, l);\n\n if (document.body.createTextRange) {\n s = t();\n\n try {\n u = document.body.createTextRange(), u.moveToPoint(c, l), u.select();\n } catch (h) {}\n\n return i = t(), n(s), i;\n }\n }, e.prototype.getClientRectsForDOMRange = function (t) {\n var e, n, o;\n return n = i.call(t.getClientRects()), o = n[0], e = n[n.length - 1], [o, e];\n }, e;\n }();\n }.call(this), function () {\n var t,\n n = function n(t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n },\n i = function i(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n o.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n o = {}.hasOwnProperty,\n r = [].indexOf || function (t) {\n for (var e = 0, n = this.length; n > e; e++) {\n if (e in this && this[e] === t) return e;\n }\n\n return -1;\n };\n\n t = e.getDOMRange, e.SelectionChangeObserver = function (e) {\n function o() {\n this.run = n(this.run, this), this.update = n(this.update, this), this.selectionManagers = [];\n }\n\n var s;\n return i(o, e), o.prototype.start = function () {\n return this.started ? void 0 : (this.started = !0, \"onselectionchange\" in document ? document.addEventListener(\"selectionchange\", this.update, !0) : this.run());\n }, o.prototype.stop = function () {\n return this.started ? (this.started = !1, document.removeEventListener(\"selectionchange\", this.update, !0)) : void 0;\n }, o.prototype.registerSelectionManager = function (t) {\n return r.call(this.selectionManagers, t) < 0 ? (this.selectionManagers.push(t), this.start()) : void 0;\n }, o.prototype.unregisterSelectionManager = function (t) {\n var e;\n return this.selectionManagers = function () {\n var n, i, o, r;\n\n for (o = this.selectionManagers, r = [], n = 0, i = o.length; i > n; n++) {\n e = o[n], e !== t && r.push(e);\n }\n\n return r;\n }.call(this), 0 === this.selectionManagers.length ? this.stop() : void 0;\n }, o.prototype.notifySelectionManagersOfSelectionChange = function () {\n var t, e, n, i, o;\n\n for (n = this.selectionManagers, i = [], t = 0, e = n.length; e > t; t++) {\n o = n[t], i.push(o.selectionDidChange());\n }\n\n return i;\n }, o.prototype.update = function () {\n var e;\n return e = t(), s(e, this.domRange) ? void 0 : (this.domRange = e, this.notifySelectionManagersOfSelectionChange());\n }, o.prototype.reset = function () {\n return this.domRange = null, this.update();\n }, o.prototype.run = function () {\n return this.started ? (this.update(), requestAnimationFrame(this.run)) : void 0;\n }, s = function s(t, e) {\n return (null != t ? t.startContainer : void 0) === (null != e ? e.startContainer : void 0) && (null != t ? t.startOffset : void 0) === (null != e ? e.startOffset : void 0) && (null != t ? t.endContainer : void 0) === (null != e ? e.endContainer : void 0) && (null != t ? t.endOffset : void 0) === (null != e ? e.endOffset : void 0);\n }, o;\n }(e.BasicObject), null == e.selectionChangeObserver && (e.selectionChangeObserver = new e.SelectionChangeObserver());\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r,\n s,\n a,\n u,\n c,\n l,\n h = function h(t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n },\n p = function p(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n d.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n d = {}.hasOwnProperty;\n\n i = e.getDOMSelection, n = e.getDOMRange, l = e.setDOMRange, t = e.elementContainsNode, s = e.nodeIsCursorTarget, r = e.innerElementIsActive, o = e.handleEvent, a = e.normalizeRange, u = e.rangeIsCollapsed, c = e.rangesAreEqual, e.SelectionManager = function (d) {\n function f(t) {\n this.element = t, this.selectionDidChange = h(this.selectionDidChange, this), this.didMouseDown = h(this.didMouseDown, this), this.locationMapper = new e.LocationMapper(this.element), this.pointMapper = new e.PointMapper(), this.lockCount = 0, o(\"mousedown\", {\n onElement: this.element,\n withCallback: this.didMouseDown\n });\n }\n\n return p(f, d), f.prototype.getLocationRange = function (t) {\n var e, i;\n return null == t && (t = {}), e = t.strict === !1 ? this.createLocationRangeFromDOMRange(n(), {\n strict: !1\n }) : t.ignoreLock ? this.currentLocationRange : null != (i = this.lockedLocationRange) ? i : this.currentLocationRange;\n }, f.prototype.setLocationRange = function (t) {\n var e;\n if (!this.lockedLocationRange) return t = a(t), (e = this.createDOMRangeFromLocationRange(t)) ? (l(e), this.updateCurrentLocationRange(t)) : void 0;\n }, f.prototype.setLocationRangeFromPointRange = function (t) {\n var e, n;\n return t = a(t), n = this.getLocationAtPoint(t[0]), e = this.getLocationAtPoint(t[1]), this.setLocationRange([n, e]);\n }, f.prototype.getClientRectAtLocationRange = function (t) {\n var e;\n return (e = this.createDOMRangeFromLocationRange(t)) ? this.getClientRectsForDOMRange(e)[1] : void 0;\n }, f.prototype.locationIsCursorTarget = function (t) {\n var e, n, i;\n return i = this.findNodeAndOffsetFromLocation(t), e = i[0], n = i[1], s(e);\n }, f.prototype.lock = function () {\n return 0 === this.lockCount++ ? (this.updateCurrentLocationRange(), this.lockedLocationRange = this.getLocationRange()) : void 0;\n }, f.prototype.unlock = function () {\n var t;\n return 0 === --this.lockCount && (t = this.lockedLocationRange, this.lockedLocationRange = null, null != t) ? this.setLocationRange(t) : void 0;\n }, f.prototype.clearSelection = function () {\n var t;\n return null != (t = i()) ? t.removeAllRanges() : void 0;\n }, f.prototype.selectionIsCollapsed = function () {\n var t;\n return (null != (t = n()) ? t.collapsed : void 0) === !0;\n }, f.prototype.selectionIsExpanded = function () {\n return !this.selectionIsCollapsed();\n }, f.prototype.createLocationRangeFromDOMRange = function (t, e) {\n var n, i;\n if (null != t && this.domRangeWithinElement(t) && (i = this.findLocationFromContainerAndOffset(t.startContainer, t.startOffset, e))) return t.collapsed || (n = this.findLocationFromContainerAndOffset(t.endContainer, t.endOffset, e)), a([i, n]);\n }, f.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\"), f.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\"), f.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\"), f.proxyMethod(\"pointMapper.createDOMRangeFromPoint\"), f.proxyMethod(\"pointMapper.getClientRectsForDOMRange\"), f.prototype.didMouseDown = function () {\n return this.pauseTemporarily();\n }, f.prototype.pauseTemporarily = function () {\n var e, n, i, r;\n return this.paused = !0, n = function (e) {\n return function () {\n var n, o, s;\n\n for (e.paused = !1, clearTimeout(r), o = 0, s = i.length; s > o; o++) {\n n = i[o], n.destroy();\n }\n\n return t(document, e.element) ? e.selectionDidChange() : void 0;\n };\n }(this), r = setTimeout(n, 200), i = function () {\n var t, i, r, s;\n\n for (r = [\"mousemove\", \"keydown\"], s = [], t = 0, i = r.length; i > t; t++) {\n e = r[t], s.push(o(e, {\n onElement: document,\n withCallback: n\n }));\n }\n\n return s;\n }();\n }, f.prototype.selectionDidChange = function () {\n return this.paused || r(this.element) ? void 0 : this.updateCurrentLocationRange();\n }, f.prototype.updateCurrentLocationRange = function (t) {\n var e;\n return (null != t ? t : t = this.createLocationRangeFromDOMRange(n())) && !c(t, this.currentLocationRange) ? (this.currentLocationRange = t, null != (e = this.delegate) && \"function\" == typeof e.locationRangeDidChange ? e.locationRangeDidChange(this.currentLocationRange.slice(0)) : void 0) : void 0;\n }, f.prototype.createDOMRangeFromLocationRange = function (t) {\n var e, n, i, o;\n return i = this.findContainerAndOffsetFromLocation(t[0]), n = u(t) ? i : null != (o = this.findContainerAndOffsetFromLocation(t[1])) ? o : i, null != i && null != n ? (e = document.createRange(), e.setStart.apply(e, i), e.setEnd.apply(e, n), e) : void 0;\n }, f.prototype.getLocationAtPoint = function (t) {\n var e, n;\n return (e = this.createDOMRangeFromPoint(t)) && null != (n = this.createLocationRangeFromDOMRange(e)) ? n[0] : void 0;\n }, f.prototype.domRangeWithinElement = function (e) {\n return e.collapsed ? t(this.element, e.startContainer) : t(this.element, e.startContainer) && t(this.element, e.endContainer);\n }, f;\n }(e.BasicObject);\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r = function r(t, e) {\n function n() {\n this.constructor = t;\n }\n\n for (var i in e) {\n s.call(e, i) && (t[i] = e[i]);\n }\n\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n s = {}.hasOwnProperty,\n a = [].slice;\n\n i = e.rangeIsCollapsed, o = e.rangesAreEqual, n = e.objectsAreEqual, t = e.getBlockConfig, e.EditorController = function (s) {\n function u(t) {\n var n, i;\n this.editorElement = t.editorElement, n = t.document, i = t.html, this.selectionManager = new e.SelectionManager(this.editorElement), this.selectionManager.delegate = this, this.composition = new e.Composition(), this.composition.delegate = this, this.attachmentManager = new e.AttachmentManager(this.composition.getAttachments()), this.attachmentManager.delegate = this, this.inputController = new e[\"Level\" + e.config.input.getLevel() + \"InputController\"](this.editorElement), this.inputController.delegate = this, this.inputController.responder = this.composition, this.compositionController = new e.CompositionController(this.editorElement, this.composition), this.compositionController.delegate = this, this.toolbarController = new e.ToolbarController(this.editorElement.toolbarElement), this.toolbarController.delegate = this, this.editor = new e.Editor(this.composition, this.selectionManager, this.editorElement), null != n ? this.editor.loadDocument(n) : this.editor.loadHTML(i);\n }\n\n var c;\n return r(u, s), u.prototype.registerSelectionManager = function () {\n return e.selectionChangeObserver.registerSelectionManager(this.selectionManager);\n }, u.prototype.unregisterSelectionManager = function () {\n return e.selectionChangeObserver.unregisterSelectionManager(this.selectionManager);\n }, u.prototype.render = function () {\n return this.compositionController.render();\n }, u.prototype.reparse = function () {\n return this.composition.replaceHTML(this.editorElement.innerHTML);\n }, u.prototype.compositionDidChangeDocument = function () {\n return this.notifyEditorElement(\"document-change\"), this.handlingInput ? void 0 : this.render();\n }, u.prototype.compositionDidChangeCurrentAttributes = function (t) {\n return this.currentAttributes = t, this.toolbarController.updateAttributes(this.currentAttributes), this.updateCurrentActions(), this.notifyEditorElement(\"attributes-change\", {\n attributes: this.currentAttributes\n });\n }, u.prototype.compositionDidPerformInsertionAtRange = function (t) {\n return this.pasting ? this.pastedRange = t : void 0;\n }, u.prototype.compositionShouldAcceptFile = function (t) {\n return this.notifyEditorElement(\"file-accept\", {\n file: t\n });\n }, u.prototype.compositionDidAddAttachment = function (t) {\n var e;\n return e = this.attachmentManager.manageAttachment(t), this.notifyEditorElement(\"attachment-add\", {\n attachment: e\n });\n }, u.prototype.compositionDidEditAttachment = function (t) {\n var e;\n return this.compositionController.rerenderViewForObject(t), e = this.attachmentManager.manageAttachment(t), this.notifyEditorElement(\"attachment-edit\", {\n attachment: e\n }), this.notifyEditorElement(\"change\");\n }, u.prototype.compositionDidChangeAttachmentPreviewURL = function (t) {\n return this.compositionController.invalidateViewForObject(t), this.notifyEditorElement(\"change\");\n }, u.prototype.compositionDidRemoveAttachment = function (t) {\n var e;\n return e = this.attachmentManager.unmanageAttachment(t), this.notifyEditorElement(\"attachment-remove\", {\n attachment: e\n });\n }, u.prototype.compositionDidStartEditingAttachment = function (t, e) {\n return this.attachmentLocationRange = this.composition.document.getLocationRangeOfAttachment(t), this.compositionController.installAttachmentEditorForAttachment(t, e), this.selectionManager.setLocationRange(this.attachmentLocationRange);\n }, u.prototype.compositionDidStopEditingAttachment = function () {\n return this.compositionController.uninstallAttachmentEditor(), this.attachmentLocationRange = null;\n }, u.prototype.compositionDidRequestChangingSelectionToLocationRange = function (t) {\n return !this.loadingSnapshot || this.isFocused() ? (this.requestedLocationRange = t, this.compositionRevisionWhenLocationRangeRequested = this.composition.revision, this.handlingInput ? void 0 : this.render()) : void 0;\n }, u.prototype.compositionWillLoadSnapshot = function () {\n return this.loadingSnapshot = !0;\n }, u.prototype.compositionDidLoadSnapshot = function () {\n return this.compositionController.refreshViewCache(), this.render(), this.loadingSnapshot = !1;\n }, u.prototype.getSelectionManager = function () {\n return this.selectionManager;\n }, u.proxyMethod(\"getSelectionManager().setLocationRange\"), u.proxyMethod(\"getSelectionManager().getLocationRange\"), u.prototype.attachmentManagerDidRequestRemovalOfAttachment = function (t) {\n return this.removeAttachment(t);\n }, u.prototype.compositionControllerWillSyncDocumentView = function () {\n return this.inputController.editorWillSyncDocumentView(), this.selectionManager.lock(), this.selectionManager.clearSelection();\n }, u.prototype.compositionControllerDidSyncDocumentView = function () {\n return this.inputController.editorDidSyncDocumentView(), this.selectionManager.unlock(), this.updateCurrentActions(), this.notifyEditorElement(\"sync\");\n }, u.prototype.compositionControllerDidRender = function () {\n return null != this.requestedLocationRange && (this.compositionRevisionWhenLocationRangeRequested === this.composition.revision && this.selectionManager.setLocationRange(this.requestedLocationRange), this.requestedLocationRange = null, this.compositionRevisionWhenLocationRangeRequested = null), this.renderedCompositionRevision !== this.composition.revision && (this.runEditorFilters(), this.composition.updateCurrentAttributes(), this.notifyEditorElement(\"render\")), this.renderedCompositionRevision = this.composition.revision;\n }, u.prototype.compositionControllerDidFocus = function () {\n return this.isFocusedInvisibly() && this.setLocationRange({\n index: 0,\n offset: 0\n }), this.toolbarController.hideDialog(), this.notifyEditorElement(\"focus\");\n }, u.prototype.compositionControllerDidBlur = function () {\n return this.notifyEditorElement(\"blur\");\n }, u.prototype.compositionControllerDidSelectAttachment = function (t, e) {\n return this.toolbarController.hideDialog(), this.composition.editAttachment(t, e);\n }, u.prototype.compositionControllerDidRequestDeselectingAttachment = function (t) {\n var e, n;\n return e = null != (n = this.attachmentLocationRange) ? n : this.composition.document.getLocationRangeOfAttachment(t), this.selectionManager.setLocationRange(e[1]);\n }, u.prototype.compositionControllerWillUpdateAttachment = function (t) {\n return this.editor.recordUndoEntry(\"Edit Attachment\", {\n context: t.id,\n consolidatable: !0\n });\n }, u.prototype.compositionControllerDidRequestRemovalOfAttachment = function (t) {\n return this.removeAttachment(t);\n }, u.prototype.inputControllerWillHandleInput = function () {\n return this.handlingInput = !0, this.requestedRender = !1;\n }, u.prototype.inputControllerDidRequestRender = function () {\n return this.requestedRender = !0;\n }, u.prototype.inputControllerDidHandleInput = function () {\n return this.handlingInput = !1, this.requestedRender ? (this.requestedRender = !1, this.render()) : void 0;\n }, u.prototype.inputControllerDidAllowUnhandledInput = function () {\n return this.notifyEditorElement(\"change\");\n }, u.prototype.inputControllerDidRequestReparse = function () {\n return this.reparse();\n }, u.prototype.inputControllerWillPerformTyping = function () {\n return this.recordTypingUndoEntry();\n }, u.prototype.inputControllerWillPerformFormatting = function (t) {\n return this.recordFormattingUndoEntry(t);\n }, u.prototype.inputControllerWillCutText = function () {\n return this.editor.recordUndoEntry(\"Cut\");\n }, u.prototype.inputControllerWillPaste = function (t) {\n return this.editor.recordUndoEntry(\"Paste\"), this.pasting = !0, this.notifyEditorElement(\"before-paste\", {\n paste: t\n });\n }, u.prototype.inputControllerDidPaste = function (t) {\n return t.range = this.pastedRange, this.pastedRange = null, this.pasting = null, this.notifyEditorElement(\"paste\", {\n paste: t\n });\n }, u.prototype.inputControllerWillMoveText = function () {\n return this.editor.recordUndoEntry(\"Move\");\n }, u.prototype.inputControllerWillAttachFiles = function () {\n return this.editor.recordUndoEntry(\"Drop Files\");\n }, u.prototype.inputControllerWillPerformUndo = function () {\n return this.editor.undo();\n }, u.prototype.inputControllerWillPerformRedo = function () {\n return this.editor.redo();\n }, u.prototype.inputControllerDidReceiveKeyboardCommand = function (t) {\n return this.toolbarController.applyKeyboardCommand(t);\n }, u.prototype.inputControllerDidStartDrag = function () {\n return this.locationRangeBeforeDrag = this.selectionManager.getLocationRange();\n }, u.prototype.inputControllerDidReceiveDragOverPoint = function (t) {\n return this.selectionManager.setLocationRangeFromPointRange(t);\n }, u.prototype.inputControllerDidCancelDrag = function () {\n return this.selectionManager.setLocationRange(this.locationRangeBeforeDrag), this.locationRangeBeforeDrag = null;\n }, u.prototype.locationRangeDidChange = function (t) {\n return this.composition.updateCurrentAttributes(), this.updateCurrentActions(), this.attachmentLocationRange && !o(this.attachmentLocationRange, t) && this.composition.stopEditingAttachment(), this.notifyEditorElement(\"selection-change\");\n }, u.prototype.toolbarDidClickButton = function () {\n return this.getLocationRange() ? void 0 : this.setLocationRange({\n index: 0,\n offset: 0\n });\n }, u.prototype.toolbarDidInvokeAction = function (t) {\n return this.invokeAction(t);\n }, u.prototype.toolbarDidToggleAttribute = function (t) {\n return this.recordFormattingUndoEntry(t), this.composition.toggleCurrentAttribute(t), this.render(), this.selectionFrozen ? void 0 : this.editorElement.focus();\n }, u.prototype.toolbarDidUpdateAttribute = function (t, e) {\n return this.recordFormattingUndoEntry(t), this.composition.setCurrentAttribute(t, e), this.render(), this.selectionFrozen ? void 0 : this.editorElement.focus();\n }, u.prototype.toolbarDidRemoveAttribute = function (t) {\n return this.recordFormattingUndoEntry(t), this.composition.removeCurrentAttribute(t), this.render(), this.selectionFrozen ? void 0 : this.editorElement.focus();\n }, u.prototype.toolbarWillShowDialog = function () {\n return this.composition.expandSelectionForEditing(), this.freezeSelection();\n }, u.prototype.toolbarDidShowDialog = function (t) {\n return this.notifyEditorElement(\"toolbar-dialog-show\", {\n dialogName: t\n });\n }, u.prototype.toolbarDidHideDialog = function (t) {\n return this.thawSelection(), this.editorElement.focus(), this.notifyEditorElement(\"toolbar-dialog-hide\", {\n dialogName: t\n });\n }, u.prototype.freezeSelection = function () {\n return this.selectionFrozen ? void 0 : (this.selectionManager.lock(), this.composition.freezeSelection(), this.selectionFrozen = !0, this.render());\n }, u.prototype.thawSelection = function () {\n return this.selectionFrozen ? (this.composition.thawSelection(), this.selectionManager.unlock(), this.selectionFrozen = !1, this.render()) : void 0;\n }, u.prototype.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 !0;\n },\n perform: function perform() {\n return e.config.input.pickFiles(this.editor.insertFiles);\n }\n }\n }, u.prototype.canInvokeAction = function (t) {\n var e, n;\n return this.actionIsExternal(t) ? !0 : !!(null != (e = this.actions[t]) && null != (n = e.test) ? n.call(this) : void 0);\n }, u.prototype.invokeAction = function (t) {\n var e, n;\n return this.actionIsExternal(t) ? this.notifyEditorElement(\"action-invoke\", {\n actionName: t\n }) : null != (e = this.actions[t]) && null != (n = e.perform) ? n.call(this) : void 0;\n }, u.prototype.actionIsExternal = function (t) {\n return /^x-./.test(t);\n }, u.prototype.getCurrentActions = function () {\n var t, e;\n e = {};\n\n for (t in this.actions) {\n e[t] = this.canInvokeAction(t);\n }\n\n return e;\n }, u.prototype.updateCurrentActions = function () {\n var t;\n return t = this.getCurrentActions(), n(t, this.currentActions) ? void 0 : (this.currentActions = t, this.toolbarController.updateActions(this.currentActions), this.notifyEditorElement(\"actions-change\", {\n actions: this.currentActions\n }));\n }, u.prototype.runEditorFilters = function () {\n var t, e, n, i, o, r, s, a;\n\n for (a = this.composition.getSnapshot(), o = this.editor.filters, n = 0, i = o.length; i > n; n++) {\n e = o[n], t = a.document, s = a.selectedRange, a = null != (r = e.call(this.editor, a)) ? r : {}, null == a.document && (a.document = t), null == a.selectedRange && (a.selectedRange = s);\n }\n\n return c(a, this.composition.getSnapshot()) ? void 0 : this.composition.loadSnapshot(a);\n }, c = function c(t, e) {\n return o(t.selectedRange, e.selectedRange) && t.document.isEqualTo(e.document);\n }, u.prototype.updateInputElement = function () {\n var t, n;\n return t = this.compositionController.getSerializableElement(), n = e.serializeToContentType(t, \"text/html\"), this.editorElement.setInputElementValue(n);\n }, u.prototype.notifyEditorElement = function (t, e) {\n switch (t) {\n case \"document-change\":\n this.documentChangedSinceLastRender = !0;\n break;\n\n case \"render\":\n this.documentChangedSinceLastRender && (this.documentChangedSinceLastRender = !1, this.notifyEditorElement(\"change\"));\n break;\n\n case \"change\":\n case \"attachment-add\":\n case \"attachment-edit\":\n case \"attachment-remove\":\n this.updateInputElement();\n }\n\n return this.editorElement.notify(t, e);\n }, u.prototype.removeAttachment = function (t) {\n return this.editor.recordUndoEntry(\"Delete Attachment\"), this.composition.removeAttachment(t), this.render();\n }, u.prototype.recordFormattingUndoEntry = function (e) {\n var n, o;\n return n = t(e), o = this.selectionManager.getLocationRange(), n || !i(o) ? this.editor.recordUndoEntry(\"Formatting\", {\n context: this.getUndoContext(),\n consolidatable: !0\n }) : void 0;\n }, u.prototype.recordTypingUndoEntry = function () {\n return this.editor.recordUndoEntry(\"Typing\", {\n context: this.getUndoContext(this.currentAttributes),\n consolidatable: !0\n });\n }, u.prototype.getUndoContext = function () {\n var t;\n return t = 1 <= arguments.length ? a.call(arguments, 0) : [], [this.getLocationContext(), this.getTimeContext()].concat(a.call(t));\n }, u.prototype.getLocationContext = function () {\n var t;\n return t = this.selectionManager.getLocationRange(), i(t) ? t[0].index : t;\n }, u.prototype.getTimeContext = function () {\n return e.config.undoInterval > 0 ? Math.floor(new Date().getTime() / e.config.undoInterval) : 0;\n }, u.prototype.isFocused = function () {\n var t;\n return this.editorElement === (null != (t = this.editorElement.ownerDocument) ? t.activeElement : void 0);\n }, u.prototype.isFocusedInvisibly = function () {\n return this.isFocused() && !this.getLocationRange();\n }, u;\n }(e.Controller);\n }.call(this), function () {\n var t,\n n,\n i,\n o,\n r,\n s,\n a,\n u = [].indexOf || function (t) {\n for (var e = 0, n = this.length; n > e; e++) {\n if (e in this && this[e] === t) return e;\n }\n\n return -1;\n };\n\n n = e.browser, s = e.makeElement, a = e.triggerEvent, o = e.handleEvent, r = e.handleEventOnce, i = e.findClosestElementFromNode, t = e.AttachmentView.attachmentSelector, e.registerElement(\"trix-editor\", function () {\n var c, l, h, p, d, f, g, m, v;\n return g = 0, l = function l(t) {\n return !document.querySelector(\":focus\") && t.hasAttribute(\"autofocus\") && document.querySelector(\"[autofocus]\") === t ? t.focus() : void 0;\n }, m = function m(t) {\n return t.hasAttribute(\"contenteditable\") ? void 0 : (t.setAttribute(\"contenteditable\", \"\"), r(\"focus\", {\n onElement: t,\n withCallback: function withCallback() {\n return h(t);\n }\n }));\n }, h = function h(t) {\n return d(t), v(t);\n }, d = function d(t) {\n return (\"function\" == typeof document.queryCommandSupported ? document.queryCommandSupported(\"enableObjectResizing\") : void 0) ? (document.execCommand(\"enableObjectResizing\", !1, !1), o(\"mscontrolselect\", {\n onElement: t,\n preventDefault: !0\n })) : void 0;\n }, v = function v() {\n var t;\n return (\"function\" == typeof document.queryCommandSupported ? document.queryCommandSupported(\"DefaultParagraphSeparator\") : void 0) && (t = e.config.blockAttributes[\"default\"].tagName, \"div\" === t || \"p\" === t) ? document.execCommand(\"DefaultParagraphSeparator\", !1, t) : void 0;\n }, c = function c(t) {\n return t.hasAttribute(\"role\") ? void 0 : t.setAttribute(\"role\", \"textbox\");\n }, f = function f(t) {\n var e;\n if (!t.hasAttribute(\"aria-label\") && !t.hasAttribute(\"aria-labelledby\")) return (e = function e() {\n var e, n, i;\n return i = function () {\n var n, i, o, r;\n\n for (o = t.labels, r = [], n = 0, i = o.length; i > n; n++) {\n e = o[n], e.contains(t) || r.push(e.textContent);\n }\n\n return r;\n }(), (n = i.join(\" \")) ? t.setAttribute(\"aria-label\", n) : t.removeAttribute(\"aria-label\");\n })(), o(\"focus\", {\n onElement: t,\n withCallback: e\n });\n }, p = function () {\n return n.forcesObjectResizing ? {\n display: \"inline\",\n width: \"auto\"\n } : {\n display: \"inline-block\",\n width: \"1px\"\n };\n }(), {\n defaultCSS: \"%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}\\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 \" + t + \" figcaption textarea {\\n resize: none;\\n}\\n\\n%t \" + t + \" figcaption textarea.trix-autoresize-clone {\\n position: absolute;\\n left: -9999px;\\n max-height: 0px;\\n}\\n\\n%t \" + t + \" 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: \" + p.display + \" !important;\\n width: \" + p.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 trixId: {\n get: function get() {\n return this.hasAttribute(\"trix-id\") ? this.getAttribute(\"trix-id\") : (this.setAttribute(\"trix-id\", ++g), this.trixId);\n }\n },\n labels: {\n get: function get() {\n var t, e, n;\n return e = [], this.id && this.ownerDocument && e.push.apply(e, this.ownerDocument.querySelectorAll(\"label[for='\" + this.id + \"']\")), (t = i(this, {\n matchingSelector: \"label\"\n })) && ((n = t.control) === this || null === n) && e.push(t), e;\n }\n },\n toolbarElement: {\n get: function get() {\n var t, e, n;\n return this.hasAttribute(\"toolbar\") ? null != (e = this.ownerDocument) ? e.getElementById(this.getAttribute(\"toolbar\")) : void 0 : this.parentNode ? (n = \"trix-toolbar-\" + this.trixId, this.setAttribute(\"toolbar\", n), t = s(\"trix-toolbar\", {\n id: n\n }), this.parentNode.insertBefore(t, this), t) : void 0;\n }\n },\n inputElement: {\n get: function get() {\n var t, e, n;\n return this.hasAttribute(\"input\") ? null != (n = this.ownerDocument) ? n.getElementById(this.getAttribute(\"input\")) : void 0 : this.parentNode ? (e = \"trix-input-\" + this.trixId, this.setAttribute(\"input\", e), t = s(\"input\", {\n type: \"hidden\",\n id: e\n }), this.parentNode.insertBefore(t, this.nextElementSibling), t) : void 0;\n }\n },\n editor: {\n get: function get() {\n var t;\n return null != (t = this.editorController) ? t.editor : void 0;\n }\n },\n name: {\n get: function get() {\n var t;\n return null != (t = this.inputElement) ? t.name : void 0;\n }\n },\n value: {\n get: function get() {\n var t;\n return null != (t = this.inputElement) ? t.value : void 0;\n },\n set: function set(t) {\n var e;\n return this.defaultValue = t, null != (e = this.editor) ? e.loadHTML(this.defaultValue) : void 0;\n }\n },\n notify: function notify(t, e) {\n return this.editorController ? a(\"trix-\" + t, {\n onElement: this,\n attributes: e\n }) : void 0;\n },\n setInputElementValue: function setInputElementValue(t) {\n var e;\n return null != (e = this.inputElement) ? e.value = t : void 0;\n },\n initialize: function initialize() {\n return this.hasAttribute(\"data-trix-internal\") ? void 0 : (m(this), c(this), f(this));\n },\n connect: function connect() {\n return this.hasAttribute(\"data-trix-internal\") ? void 0 : (this.editorController || (a(\"trix-before-initialize\", {\n onElement: this\n }), this.editorController = new e.EditorController({\n editorElement: this,\n html: this.defaultValue = this.value\n }), requestAnimationFrame(function (t) {\n return function () {\n return a(\"trix-initialize\", {\n onElement: t\n });\n };\n }(this))), this.editorController.registerSelectionManager(), this.registerResetListener(), this.registerClickListener(), l(this));\n },\n disconnect: function disconnect() {\n var t;\n return null != (t = this.editorController) && t.unregisterSelectionManager(), this.unregisterResetListener(), this.unregisterClickListener();\n },\n registerResetListener: function registerResetListener() {\n return this.resetListener = this.resetBubbled.bind(this), window.addEventListener(\"reset\", this.resetListener, !1);\n },\n unregisterResetListener: function unregisterResetListener() {\n return window.removeEventListener(\"reset\", this.resetListener, !1);\n },\n registerClickListener: function registerClickListener() {\n return this.clickListener = this.clickBubbled.bind(this), window.addEventListener(\"click\", this.clickListener, !1);\n },\n unregisterClickListener: function unregisterClickListener() {\n return window.removeEventListener(\"click\", this.clickListener, !1);\n },\n resetBubbled: function resetBubbled(t) {\n var e;\n if (!t.defaultPrevented && t.target === (null != (e = this.inputElement) ? e.form : void 0)) return this.reset();\n },\n clickBubbled: function clickBubbled(t) {\n var e;\n if (!(t.defaultPrevented || this.contains(t.target) || !(e = i(t.target, {\n matchingSelector: \"label\"\n })) || u.call(this.labels, e) < 0)) return this.focus();\n },\n reset: function reset() {\n return this.value = this.defaultValue;\n }\n };\n }());\n }.call(this), function () {}.call(this);\n }).call(this), \"object\" == (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) && module.exports ? module.exports = e : \"function\" == typeof define && define.amd && define(e);\n}.call(this);","import { Controller } from \"stimulus\";\nimport Sortable from \"sortablejs\";\n\nexport default class extends Controller {\n connect() {\n this.sortable = Sortable.create(this.element, {\n onEnd: this.end.bind(this),\n });\n const saveElement = document.getElementById('view-preference-apply');\n saveElement.addEventListener('click', this.savePreferences.bind(this));\n\n this.element.addEventListener('change', this.handleCheckboxChange.bind(this));\n\n }\n\n end(event) {\n const id = event.item.dataset.id;\n const optItems = document.querySelectorAll('li.opt-item');\n const data = {\n preferences: {},\n };\n \n optItems.forEach((item, index) => {\n const checkbox = $(\".blue-checkbox[id='\" + item.dataset.itemKey + \"']\");\n data.preferences[item.dataset.itemKey] = {\n status: checkbox.prop('checked'),\n horizontal_alignment: index + 1,\n };\n });\n \n this.element.setAttribute('data-my-controller-data', JSON.stringify(data));\n }\n \n handleCheckboxChange(event) {\n const checkbox = event.target;\n if (checkbox.classList.contains('list-option-cb')) {\n this.updateList();\n }\n }\n\n updateList() {\n const optItems = document.querySelectorAll('li.opt-item');\n const data = {\n preferences: {},\n };\n\n optItems.forEach((item, index) => {\n const checkbox = $(\".blue-checkbox[id='\" + item.dataset.itemKey + \"']\");\n data.preferences[item.dataset.itemKey] = {\n status: checkbox.prop('checked'),\n horizontal_alignment: index + 1,\n };\n });\n\n this.element.setAttribute('data-my-controller-data', JSON.stringify(data));\n }\n\n savePreferences() {\n const id = (this.element.dataset.id).split(\"-\")[0];\n const name = (this.element.dataset.id).split(\"-\")[1];\n const dataString = this.element.getAttribute('data-my-controller-data');\n const data = JSON.parse(dataString);\n\n $.ajax({\n url: '/user_preferences/' + id + '/update_view_option' + '?preferences_name=' + name ,\n method: 'POST',\n data: JSON.stringify(data),\n contentType: 'application/json',\n success: function (response) {\n \n },\n error: function (error) {\n \n }\n });\n }\n}\n","import { Controller } from \"stimulus\"\nimport Sortable from \"sortablejs\"\n\nexport default class extends Controller {\n\n connect() {\n this.sortable = Sortable.create(this.element, {\n onEnd: this.end.bind(this)\n }) \n }\n\n end(event){\n let id = event.item.dataset.id\n let data = new FormData()\n data.append(\"new_position\", event.newIndex + 1)\n data.append(\"interest_id\", id)\n\n\n $.ajax({\n url: '/user_interests/:id/move'.replace(\":id\",id) + '?interest_id=' + id + '&new_position=' + (event.newIndex + 1).toString() + '&old_position=' + (event.oldIndex + 1).toString(),\n processData: false,\n contentType: false,\n data: data\n })\n }\n}","import { Controller } from 'stimulus';\nexport default class extends Controller {\n connect() {\n $(this.element).on('change', function () {\n const token = document.querySelector('meta[name=\"csrf-token\"]').content\n const email_draft_id = parseInt($(this).attr(\"id\"))\n if ($(this).children().is(':checked')){\n fetch('/email_drafts/' + email_draft_id + '/activate_auto_mail', {\n method: 'PUT',\n credentials: 'same-origin',\n headers: {\n 'X-CSRF-Token': token,\n 'Content-type': 'application/json; charset=UTF-8' // Indicates the content\n }\n })\n }\n else{\n fetch('/email_drafts/' + email_draft_id + '/deactivate_auto_mail', {\n method: 'PUT',\n credentials: 'same-origin',\n headers: {\n 'X-CSRF-Token': token,\n 'Content-type': 'application/json; charset=UTF-8' // Indicates the content\n }\n });\n }\n\n\n })\n }\n}\n","import { Controller } from \"stimulus\"\nimport Sortable from \"sortablejs\"\n\nexport default class extends Controller {\n connect() {\n this.sortable = Sortable.create(this.element, {\n onEnd: this.end.bind(this)\n }) \n }\n\n\n \n end(event){\n let id = event.item.dataset.id\n let data = new FormData()\n data.append(\"new_position\", event.newIndex + 1)\n data.append(\"widget_id\", id)\n\n $.ajax({\n url: '/custom_widgets/:id/move_widget'.replace(\":id\",id) + '?widget_id=' + id + '&new_position=' + (event.newIndex + 1).toString() + '&old_position=' + (event.oldIndex + 1).toString(),\n processData: false,\n contentType: false,\n data: data\n })\n\n }\n\n}","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"selectAll\", \"checkbox\", \"selectedCount\", \"bulkActions\"];\n\n connect() {\n this.selectedResponses = new Set();\n this.updateBulkActions();\n }\n\n toggleSelectAll(event) {\n const checked = event.target.checked;\n this.checkboxTargets.forEach((checkbox) => {\n checkbox.checked = checked;\n this.updateSelection(checkbox);\n });\n }\n\n updateSelection(event) {\n const checkbox = event.target || event;\n const responseId = checkbox.dataset.response_id;\n\n if (checkbox.checked) {\n this.selectedResponses.add(responseId);\n } else {\n this.selectedResponses.delete(responseId);\n }\n\n this.updateBulkActions();\n }\n\n updateBulkActions() {\n const count = this.selectedResponses.size;\n this.selectedCountTarget.textContent = count;\n this.bulkActionsTarget.classList.toggle(\"hidden\", count === 0);\n }\n\n performDownload(){\n if (this.selectedResponses.size === 0) return;\n\n // Seçili response ID'lerini virgülle birleştirerek parametre oluştur\n const responseIds = Array.from(this.selectedResponses).join(\",\");\n\n // Butonun data-url attribute'undan URL'yi al\n const url = this.element.dataset.export_url;\n console.log(this.element)\n // Yeni bir link oluşturarak dosya indirme işlemini başlat\n const downloadUrl = `${url}?response_ids=${encodeURIComponent(responseIds)}`;\n window.open(downloadUrl, '_blank');\n }\n\n performBulkAction() {\n if (this.selectedResponses.size === 0) return;\n\n const selectedIds = Array.from(this.selectedResponses);\n \n $(\"#submissions-to-list-modal\").find('#selected-response-ids').val(selectedIds.join(','))\n $(\"#submissions-to-list-modal\").modal(\"show\");\n\n this.updateBulkActions();\n }\n}\n","// Visit The Stimulus Handbook for more details \n// https://stimulusjs.org/handbook/introduction\n// \n// This example controller works with specially annotated HTML like:\n//\n//
\n//

\n//
\n\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"output\" ]\n\n connect() {\n this.outputTarget.textContent = 'Hello, Stimulus!'\n }\n}\n","import { Controller } from \"stimulus\"\nimport Sortable from \"sortablejs\"\n\nexport default class extends Controller {\n\n connect() {\n this.sortable = Sortable.create(this.element, {\n onEnd: this.end.bind(this)\n })\n }\n\n end(event){\n console.log(event)\n let id = event.item.dataset.id\n let position_id = event.item.dataset.position_id\n console.log(id)\n let data = new FormData()\n data.append(\"new_vertical_position\", event.newIndex)\n console.log(data)\n\n $.ajax({\n method: 'PATCH',\n data: data,\n processData: false,\n contentType: false,\n url: ':position_id/position_competencies/:id/move'.replace(\":id\",id).replace(\":position_id\",position_id)\n \n });\n \n }\n}\n","import { Controller } from 'stimulus';\nexport default class extends Controller {\n connect() {\n console.log(\"hello from mailFlow StimulusJS\")\n $(this.element).on('switchChange.bootstrapSwitch', function() {\n const token = document.querySelector('meta[name=\"csrf-token\"]').content\n const mail_flow_id = parseInt($(this).attr(\"id\"))\n if ($(this).children().hasClass(\"bootstrap-switch-on\")) {\n fetch('/mail_flows/' + mail_flow_id + '/activate_mail_automation', {\n method: 'PUT',\n credentials: 'same-origin',\n headers: {\n 'X-CSRF-Token': token,\n 'Content-type': 'application/json; charset=UTF-8' // Indicates the content\n }\n })\n } else {\n fetch('/mail_flows/' + mail_flow_id + '/deactivate_mail_automation', {\n method: 'PUT',\n credentials: 'same-origin',\n headers: {\n 'X-CSRF-Token': token,\n 'Content-type': 'application/json; charset=UTF-8' // Indicates the content\n }\n });\n }\n\n\n })\n }\n}","import { Controller } from 'stimulus';\nexport default class extends Controller {\n connect() {\n console.log(\"hello from mailFlow StimulusJS\")\n $(this.element).on('switchChange.bootstrapSwitch', function() {\n const token = document.querySelector('meta[name=\"csrf-token\"]').content\n const mail_flow_id = parseInt($(this).attr(\"id\"))\n if ($(this).children().hasClass(\"bootstrap-switch-on\")) {\n fetch('/mail_flows/' + mail_flow_id + '/activate_task_creation', {\n method: 'PUT',\n credentials: 'same-origin',\n headers: {\n 'X-CSRF-Token': token,\n 'Content-type': 'application/json; charset=UTF-8' // Indicates the content\n }\n })\n } else {\n fetch('/mail_flows/' + mail_flow_id + '/deactivate_task_creation', {\n method: 'PUT',\n credentials: 'same-origin',\n headers: {\n 'X-CSRF-Token': token,\n 'Content-type': 'application/json; charset=UTF-8' // Indicates the content\n }\n });\n }\n\n\n })\n }\n}","import { Controller } from \"stimulus\"\nimport Tribute from \"tributejs\";\nimport Trix from \"trix\"\n\nexport default class extends Controller {\n static targets = [ \"field\" ]\n\n connect() {\n this.editor = this.fieldTarget.editor\n this.initializeTribute()\n }\n\n disconnect(){\n this.tribute.detach(this.fieldTarget)\n }\n\n initializeTribute(){\n this.tribute = new Tribute({\n allowSpaces: true,\n lookup: function (user, mentionText) {\n return user.firstname +\" \"+ user.lastname;\n },\n values: this.fetchUsers,\n })\n this.tribute.attach(this.fieldTarget)\n this.tribute.range.pasteHtml = this._pasteHtml.bind(this)\n this.fieldTarget.addEventListener('tribute-replaced',this.replaced)\n }\n fetchUsers(text,callback){\n fetch(`/mentions.json?query=${text}`)\n .then(response => response.json())\n .then(users => callback(users))\n .catch(error => callback([]))\n }\n replaced(e){\n let mention = e.detail.item.original\n let attachment = new Trix.Attachment({\n sgid: mention.sgid,\n content: mention.content\n })\n this.editor.insertAttachment(attachment)\n this.editor.insertString(\" \")\n }\n\n _pasteHtml(html,startPos, endPos){\n let position = this.editor.getPosition()\n this.editor.setSelectedRange([position-endPos, position])\n this.editor.deleteInDirection(\"backward\")\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"dropdown\", \"input\", \"holder\"];\n\n connect() {\n $(this.dropdownTarget).on(\"change\", (event) => {\n this.insertField(event);\n });\n }\n\n openDropdown(event) {\n this.holderTarget.style.display = \"block\";\n }\n\n insertField(event) {\n const selectedValue = this.dropdownTarget.value;\n const closestInput = this.inputTarget;\n\n if (closestInput && selectedValue != \"disabledselectoption\") {\n\n var content = closestInput.value;\n var position = this.getCursorPosition(closestInput)\n var newContent = content.substr(0, position) + \"{(\"+ selectedValue +\")}\" + content.substr(position);\n closestInput.value = newContent;\n\n\n setTimeout(\n this.closeDropdown()\n , 500);\n } else {\n \n }\n }\n\n closeDropdown(event) {\n this.dropdownTarget.value = \"disabledselectoption\";\n this.holderTarget.style.display = \"none\";\n }\n\n getCursorPosition(inputElement) {\n return inputElement.selectionStart;\n }\n}","import { Controller } from \"stimulus\"\nimport Sortable from \"sortablejs\"\n\nexport default class extends Controller {\n\n connect() {\n this.sortable = Sortable.create(this.element, {\n onEnd: this.end.bind(this)\n })\n }\n\n end(event){\n console.log(event)\n let id = event.item.dataset.id\n console.log(id)\n let data = new FormData()\n data.append(\"new_position\", event.newIndex + 1)\n console.log(data)\n\n $.ajax({\n method: 'PATCH',\n data: data,\n processData: false,\n contentType: false,\n url: '/positions/:id/move'.replace(\":id\",id)\n \n });\n \n }\n}\n","import { Controller } from \"stimulus\"\nimport Sortable from \"sortablejs\"\n\nexport default class extends Controller {\n connect() {\n this.sortable = Sortable.create(this.element, {\n onEnd: this.end.bind(this)\n }) \n }\n\n\n \n end(event){\n let id = event.item.dataset.id\n let data = new FormData()\n data.append(\"new_position\", event.newIndex + 1)\n data.append(\"widget_id\", id)\n\n const saveElement = document.getElementById('drag_position_save');\n saveElement.addEventListener('click', () => {\n $.ajax({\n url: '/custom_widgets/:id/move_widget'.replace(\":id\",id) + '?widget_id=' + id + '&new_position=' + (event.newIndex + 1).toString() + '&old_position=' + (event.oldIndex + 1).toString(),\n processData: false,\n contentType: false,\n data: data\n })\n });\n }\n\n}","import { Controller } from 'stimulus';\nexport default class extends Controller {\n connect() {\n console.log(\"hello from workFlow StimulusJS\")\n $(this.element).on('switchChange.bootstrapSwitch', function() {\n const token = document.querySelector('meta[name=\"csrf-token\"]').content\n const work_flow_id = parseInt($(this).attr(\"id\"))\n if ($(this).children().hasClass(\"bootstrap-switch-on\")) {\n fetch('/work_flows/' + work_flow_id + '/activate_mail_automation', {\n method: 'PUT',\n credentials: 'same-origin',\n headers: {\n 'X-CSRF-Token': token,\n 'Content-type': 'application/json; charset=UTF-8' // Indicates the content\n }\n })\n } else {\n fetch('/work_flows/' + work_flow_id + '/deactivate_mail_automation', {\n method: 'PUT',\n credentials: 'same-origin',\n headers: {\n 'X-CSRF-Token': token,\n 'Content-type': 'application/json; charset=UTF-8' // Indicates the content\n }\n });\n }\n\n\n })\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n!function (e, t) {\n \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(t) : (e = e || self).Tribute = t();\n}(this, function () {\n \"use strict\";\n\n function e(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }\n\n function t(e, t) {\n for (var n = 0; n < t.length; n++) {\n var i = t[n];\n i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);\n }\n }\n\n function n(e, n, i) {\n return n && t(e.prototype, n), i && t(e, i), e;\n }\n\n function i(e, t) {\n return function (e) {\n if (Array.isArray(e)) return e;\n }(e) || function (e, t) {\n if (!(Symbol.iterator in Object(e) || \"[object Arguments]\" === Object.prototype.toString.call(e))) return;\n var n = [],\n i = !0,\n r = !1,\n o = void 0;\n\n try {\n for (var u, l = e[Symbol.iterator](); !(i = (u = l.next()).done) && (n.push(u.value), !t || n.length !== t); i = !0) {\n ;\n }\n } catch (e) {\n r = !0, o = e;\n } finally {\n try {\n i || null == l[\"return\"] || l[\"return\"]();\n } finally {\n if (r) throw o;\n }\n }\n\n return n;\n }(e, t) || function () {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }();\n }\n\n if (Array.prototype.find || (Array.prototype.find = function (e) {\n if (null === this) throw new TypeError(\"Array.prototype.find called on null or undefined\");\n if (\"function\" != typeof e) throw new TypeError(\"predicate must be a function\");\n\n for (var t, n = Object(this), i = n.length >>> 0, r = arguments[1], o = 0; o < i; o++) {\n if (t = n[o], e.call(r, t, o, n)) return t;\n }\n }), window && \"function\" != typeof window.CustomEvent) {\n var r = function r(e, t) {\n t = t || {\n bubbles: !1,\n cancelable: !1,\n detail: void 0\n };\n var n = document.createEvent(\"CustomEvent\");\n return n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), n;\n };\n\n void 0 !== window.Event && (r.prototype = window.Event.prototype), window.CustomEvent = r;\n }\n\n var o = function () {\n function t(n) {\n e(this, t), this.tribute = n, this.tribute.events = this;\n }\n\n return n(t, [{\n key: \"bind\",\n value: function value(e) {\n e.boundKeydown = this.keydown.bind(e, this), e.boundKeyup = this.keyup.bind(e, this), e.boundInput = this.input.bind(e, this), e.addEventListener(\"keydown\", e.boundKeydown, !1), e.addEventListener(\"keyup\", e.boundKeyup, !1), e.addEventListener(\"input\", e.boundInput, !1);\n }\n }, {\n key: \"unbind\",\n value: function value(e) {\n e.removeEventListener(\"keydown\", e.boundKeydown, !1), e.removeEventListener(\"keyup\", e.boundKeyup, !1), e.removeEventListener(\"input\", e.boundInput, !1), delete e.boundKeydown, delete e.boundKeyup, delete e.boundInput;\n }\n }, {\n key: \"keydown\",\n value: function value(e, n) {\n e.shouldDeactivate(n) && (e.tribute.isActive = !1, e.tribute.hideMenu());\n var i = this;\n e.commandEvent = !1, t.keys().forEach(function (t) {\n t.key === n.keyCode && (e.commandEvent = !0, e.callbacks()[t.value.toLowerCase()](n, i));\n });\n }\n }, {\n key: \"input\",\n value: function value(e, t) {\n e.inputEvent = !0, e.keyup.call(this, e, t);\n }\n }, {\n key: \"click\",\n value: function value(e, t) {\n var n = e.tribute;\n\n if (n.menu && n.menu.contains(t.target)) {\n var i = t.target;\n\n for (t.preventDefault(), t.stopPropagation(); \"li\" !== i.nodeName.toLowerCase();) {\n if (!(i = i.parentNode) || i === n.menu) throw new Error(\"cannot find the
  • container for the click\");\n }\n\n n.selectItemAtIndex(i.getAttribute(\"data-index\"), t), n.hideMenu();\n } else n.current.element && !n.current.externalTrigger && (n.current.externalTrigger = !1, setTimeout(function () {\n return n.hideMenu();\n }));\n }\n }, {\n key: \"keyup\",\n value: function value(e, t) {\n if (e.inputEvent && (e.inputEvent = !1), e.updateSelection(this), 27 !== t.keyCode) {\n if (!e.tribute.allowSpaces && e.tribute.hasTrailingSpace) return e.tribute.hasTrailingSpace = !1, e.commandEvent = !0, void e.callbacks().space(t, this);\n if (!e.tribute.isActive) if (e.tribute.autocompleteMode) e.callbacks().triggerChar(t, this, \"\");else {\n var n = e.getKeyCode(e, this, t);\n if (isNaN(n) || !n) return;\n var i = e.tribute.triggers().find(function (e) {\n return e.charCodeAt(0) === n;\n });\n void 0 !== i && e.callbacks().triggerChar(t, this, i);\n }\n e.tribute.current.mentionText.length < e.tribute.current.collection.menuShowMinLength || ((e.tribute.current.trigger || e.tribute.autocompleteMode) && !1 === e.commandEvent || e.tribute.isActive && 8 === t.keyCode) && e.tribute.showMenuFor(this, !0);\n }\n }\n }, {\n key: \"shouldDeactivate\",\n value: function value(e) {\n if (!this.tribute.isActive) return !1;\n\n if (0 === this.tribute.current.mentionText.length) {\n var n = !1;\n return t.keys().forEach(function (t) {\n e.keyCode === t.key && (n = !0);\n }), !n;\n }\n\n return !1;\n }\n }, {\n key: \"getKeyCode\",\n value: function value(e, t, n) {\n var i = e.tribute,\n r = i.range.getTriggerInfo(!1, i.hasTrailingSpace, !0, i.allowSpaces, i.autocompleteMode);\n return !!r && r.mentionTriggerChar.charCodeAt(0);\n }\n }, {\n key: \"updateSelection\",\n value: function value(e) {\n this.tribute.current.element = e;\n var t = this.tribute.range.getTriggerInfo(!1, this.tribute.hasTrailingSpace, !0, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n t && (this.tribute.current.selectedPath = t.mentionSelectedPath, this.tribute.current.mentionText = t.mentionText, this.tribute.current.selectedOffset = t.mentionSelectedOffset);\n }\n }, {\n key: \"callbacks\",\n value: function value() {\n var e = this;\n return {\n triggerChar: function triggerChar(t, n, i) {\n var r = e.tribute;\n r.current.trigger = i;\n var o = r.collection.find(function (e) {\n return e.trigger === i;\n });\n r.current.collection = o, r.current.mentionText.length >= r.current.collection.menuShowMinLength && r.inputEvent && r.showMenuFor(n, !0);\n },\n enter: function enter(t, n) {\n e.tribute.isActive && e.tribute.current.filteredItems && (t.preventDefault(), t.stopPropagation(), setTimeout(function () {\n e.tribute.selectItemAtIndex(e.tribute.menuSelected, t), e.tribute.hideMenu();\n }, 0));\n },\n escape: function escape(t, n) {\n e.tribute.isActive && (t.preventDefault(), t.stopPropagation(), e.tribute.isActive = !1, e.tribute.hideMenu());\n },\n tab: function tab(t, n) {\n e.callbacks().enter(t, n);\n },\n space: function space(t, n) {\n e.tribute.isActive && (e.tribute.spaceSelectsMatch ? e.callbacks().enter(t, n) : e.tribute.allowSpaces || (t.stopPropagation(), setTimeout(function () {\n e.tribute.hideMenu(), e.tribute.isActive = !1;\n }, 0)));\n },\n up: function up(t, n) {\n if (e.tribute.isActive && e.tribute.current.filteredItems) {\n t.preventDefault(), t.stopPropagation();\n var i = e.tribute.current.filteredItems.length,\n r = e.tribute.menuSelected;\n i > r && r > 0 ? (e.tribute.menuSelected--, e.setActiveLi()) : 0 === r && (e.tribute.menuSelected = i - 1, e.setActiveLi(), e.tribute.menu.scrollTop = e.tribute.menu.scrollHeight);\n }\n },\n down: function down(t, n) {\n if (e.tribute.isActive && e.tribute.current.filteredItems) {\n t.preventDefault(), t.stopPropagation();\n var i = e.tribute.current.filteredItems.length - 1,\n r = e.tribute.menuSelected;\n i > r ? (e.tribute.menuSelected++, e.setActiveLi()) : i === r && (e.tribute.menuSelected = 0, e.setActiveLi(), e.tribute.menu.scrollTop = 0);\n }\n },\n \"delete\": function _delete(t, n) {\n e.tribute.isActive && e.tribute.current.mentionText.length < 1 ? e.tribute.hideMenu() : e.tribute.isActive && e.tribute.showMenuFor(n);\n }\n };\n }\n }, {\n key: \"setActiveLi\",\n value: function value(e) {\n var t = this.tribute.menu.querySelectorAll(\"li\"),\n n = t.length >>> 0;\n e && (this.tribute.menuSelected = parseInt(e));\n\n for (var i = 0; i < n; i++) {\n var r = t[i];\n\n if (i === this.tribute.menuSelected) {\n r.classList.add(this.tribute.current.collection.selectClass);\n var o = r.getBoundingClientRect(),\n u = this.tribute.menu.getBoundingClientRect();\n\n if (o.bottom > u.bottom) {\n var l = o.bottom - u.bottom;\n this.tribute.menu.scrollTop += l;\n } else if (o.top < u.top) {\n var s = u.top - o.top;\n this.tribute.menu.scrollTop -= s;\n }\n } else r.classList.remove(this.tribute.current.collection.selectClass);\n }\n }\n }, {\n key: \"getFullHeight\",\n value: function value(e, t) {\n var n = e.getBoundingClientRect().height;\n\n if (t) {\n var i = e.currentStyle || window.getComputedStyle(e);\n return n + parseFloat(i.marginTop) + parseFloat(i.marginBottom);\n }\n\n return n;\n }\n }], [{\n key: \"keys\",\n value: function value() {\n return [{\n key: 9,\n value: \"TAB\"\n }, {\n key: 8,\n value: \"DELETE\"\n }, {\n key: 13,\n value: \"ENTER\"\n }, {\n key: 27,\n value: \"ESCAPE\"\n }, {\n key: 32,\n value: \"SPACE\"\n }, {\n key: 38,\n value: \"UP\"\n }, {\n key: 40,\n value: \"DOWN\"\n }];\n }\n }]), t;\n }(),\n u = function () {\n function t(n) {\n e(this, t), this.tribute = n, this.tribute.menuEvents = this, this.menu = this.tribute.menu;\n }\n\n return n(t, [{\n key: \"bind\",\n value: function value(e) {\n var t = this;\n this.menuClickEvent = this.tribute.events.click.bind(null, this), this.menuContainerScrollEvent = this.debounce(function () {\n t.tribute.isActive && t.tribute.showMenuFor(t.tribute.current.element, !1);\n }, 300, !1), this.windowResizeEvent = this.debounce(function () {\n t.tribute.isActive && t.tribute.range.positionMenuAtCaret(!0);\n }, 300, !1), this.tribute.range.getDocument().addEventListener(\"MSPointerDown\", this.menuClickEvent, !1), this.tribute.range.getDocument().addEventListener(\"mousedown\", this.menuClickEvent, !1), window.addEventListener(\"resize\", this.windowResizeEvent), this.menuContainer ? this.menuContainer.addEventListener(\"scroll\", this.menuContainerScrollEvent, !1) : window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }, {\n key: \"unbind\",\n value: function value(e) {\n this.tribute.range.getDocument().removeEventListener(\"mousedown\", this.menuClickEvent, !1), this.tribute.range.getDocument().removeEventListener(\"MSPointerDown\", this.menuClickEvent, !1), window.removeEventListener(\"resize\", this.windowResizeEvent), this.menuContainer ? this.menuContainer.removeEventListener(\"scroll\", this.menuContainerScrollEvent, !1) : window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }, {\n key: \"debounce\",\n value: function value(e, t, n) {\n var i,\n r = arguments,\n o = this;\n return function () {\n var u = o,\n l = r,\n s = n && !i;\n clearTimeout(i), i = setTimeout(function () {\n i = null, n || e.apply(u, l);\n }, t), s && e.apply(u, l);\n };\n }\n }]), t;\n }(),\n l = function () {\n function t(n) {\n e(this, t), this.tribute = n, this.tribute.range = this;\n }\n\n return n(t, [{\n key: \"getDocument\",\n value: function value() {\n var e;\n return this.tribute.current.collection && (e = this.tribute.current.collection.iframe), e ? e.contentWindow.document : document;\n }\n }, {\n key: \"positionMenuAtCaret\",\n value: function value(e) {\n var t,\n n = this,\n i = this.tribute.current,\n r = this.getTriggerInfo(!1, this.tribute.hasTrailingSpace, !0, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (void 0 !== r) {\n if (!this.tribute.positionMenu) return void (this.tribute.menu.style.cssText = \"display: block;\");\n t = this.isContentEditable(i.element) ? this.getContentEditableCaretPosition(r.mentionPosition) : this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element, r.mentionPosition), this.tribute.menu.style.cssText = \"top: \".concat(t.top, \"px;\\n left: \").concat(t.left, \"px;\\n right: \").concat(t.right, \"px;\\n bottom: \").concat(t.bottom, \"px;\\n position: absolute;\\n display: block;\"), \"auto\" === t.left && (this.tribute.menu.style.left = \"auto\"), \"auto\" === t.top && (this.tribute.menu.style.top = \"auto\"), e && this.scrollIntoView(), window.setTimeout(function () {\n var i = {\n width: n.tribute.menu.offsetWidth,\n height: n.tribute.menu.offsetHeight\n },\n r = n.isMenuOffScreen(t, i),\n o = window.innerWidth > i.width && (r.left || r.right),\n u = window.innerHeight > i.height && (r.top || r.bottom);\n (o || u) && (n.tribute.menu.style.cssText = \"display: none\", n.positionMenuAtCaret(e));\n }, 0);\n } else this.tribute.menu.style.cssText = \"display: none\";\n }\n }, {\n key: \"selectElement\",\n value: function value(e, t, n) {\n var i,\n r = e;\n if (t) for (var o = 0; o < t.length; o++) {\n if (void 0 === (r = r.childNodes[t[o]])) return;\n\n for (; r.length < n;) {\n n -= r.length, r = r.nextSibling;\n }\n\n 0 !== r.childNodes.length || r.length || (r = r.previousSibling);\n }\n var u = this.getWindowSelection();\n (i = this.getDocument().createRange()).setStart(r, n), i.setEnd(r, n), i.collapse(!0);\n\n try {\n u.removeAllRanges();\n } catch (e) {}\n\n u.addRange(i), e.focus();\n }\n }, {\n key: \"replaceTriggerText\",\n value: function value(e, t, n, i, r) {\n var o = this.getTriggerInfo(!0, n, t, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (void 0 !== o) {\n var u = this.tribute.current,\n l = new CustomEvent(\"tribute-replaced\", {\n detail: {\n item: r,\n instance: u,\n context: o,\n event: i\n }\n });\n\n if (this.isContentEditable(u.element)) {\n e += \"string\" == typeof this.tribute.replaceTextSuffix ? this.tribute.replaceTextSuffix : \" \";\n var s = o.mentionPosition + o.mentionText.length;\n this.tribute.autocompleteMode || (s += o.mentionTriggerChar.length), this.pasteHtml(e, o.mentionPosition, s);\n } else {\n var a = this.tribute.current.element,\n c = \"string\" == typeof this.tribute.replaceTextSuffix ? this.tribute.replaceTextSuffix : \" \";\n e += c;\n var h = o.mentionPosition,\n d = o.mentionPosition + o.mentionText.length + c.length;\n this.tribute.autocompleteMode || (d += o.mentionTriggerChar.length - 1), a.value = a.value.substring(0, h) + e + a.value.substring(d, a.value.length), a.selectionStart = h + e.length, a.selectionEnd = h + e.length;\n }\n\n u.element.dispatchEvent(new CustomEvent(\"input\", {\n bubbles: !0\n })), u.element.dispatchEvent(l);\n }\n }\n }, {\n key: \"pasteHtml\",\n value: function value(e, t, n) {\n var i, r;\n r = this.getWindowSelection(), (i = this.getDocument().createRange()).setStart(r.anchorNode, t), i.setEnd(r.anchorNode, n), i.deleteContents();\n var o = this.getDocument().createElement(\"div\");\n o.innerHTML = e;\n\n for (var u, l, s = this.getDocument().createDocumentFragment(); u = o.firstChild;) {\n l = s.appendChild(u);\n }\n\n i.insertNode(s), l && ((i = i.cloneRange()).setStartAfter(l), i.collapse(!0), r.removeAllRanges(), r.addRange(i));\n }\n }, {\n key: \"getWindowSelection\",\n value: function value() {\n return this.tribute.collection.iframe ? this.tribute.collection.iframe.contentWindow.getSelection() : window.getSelection();\n }\n }, {\n key: \"getNodePositionInParent\",\n value: function value(e) {\n if (null === e.parentNode) return 0;\n\n for (var t = 0; t < e.parentNode.childNodes.length; t++) {\n if (e.parentNode.childNodes[t] === e) return t;\n }\n }\n }, {\n key: \"getContentEditableSelectedPath\",\n value: function value(e) {\n var t = this.getWindowSelection(),\n n = t.anchorNode,\n i = [];\n\n if (null != n) {\n for (var r, o = n.contentEditable; null !== n && \"true\" !== o;) {\n r = this.getNodePositionInParent(n), i.push(r), null !== (n = n.parentNode) && (o = n.contentEditable);\n }\n\n return i.reverse(), {\n selected: n,\n path: i,\n offset: t.getRangeAt(0).startOffset\n };\n }\n }\n }, {\n key: \"getTextPrecedingCurrentSelection\",\n value: function value() {\n var e = this.tribute.current,\n t = \"\";\n\n if (this.isContentEditable(e.element)) {\n var n = this.getWindowSelection().anchorNode;\n\n if (null != n) {\n var i = n.textContent,\n r = this.getWindowSelection().getRangeAt(0).startOffset;\n i && r >= 0 && (t = i.substring(0, r));\n }\n } else {\n var o = this.tribute.current.element;\n\n if (o) {\n var u = o.selectionStart;\n o.value && u >= 0 && (t = o.value.substring(0, u));\n }\n }\n\n return t;\n }\n }, {\n key: \"getLastWordInText\",\n value: function value(e) {\n var t = (e = e.replace(/\\u00A0/g, \" \")).split(/\\s+/);\n return t[t.length - 1].trim();\n }\n }, {\n key: \"getTriggerInfo\",\n value: function value(e, t, n, i, r) {\n var o,\n u,\n l,\n s = this,\n a = this.tribute.current;\n\n if (this.isContentEditable(a.element)) {\n var c = this.getContentEditableSelectedPath(a);\n c && (o = c.selected, u = c.path, l = c.offset);\n } else o = this.tribute.current.element;\n\n var h = this.getTextPrecedingCurrentSelection(),\n d = this.getLastWordInText(h);\n if (r) return {\n mentionPosition: h.length - d.length,\n mentionText: d,\n mentionSelectedElement: o,\n mentionSelectedPath: u,\n mentionSelectedOffset: l\n };\n\n if (null != h) {\n var f,\n m = -1;\n\n if (this.tribute.collection.forEach(function (e) {\n var t = e.trigger,\n i = e.requireLeadingSpace ? s.lastIndexWithLeadingSpace(h, t) : h.lastIndexOf(t);\n i > m && (m = i, f = t, n = e.requireLeadingSpace);\n }), m >= 0 && (0 === m || !n || /[\\xA0\\s]/g.test(h.substring(m - 1, m)))) {\n var p = h.substring(m + f.length, h.length);\n f = h.substring(m, m + f.length);\n var v = p.substring(0, 1),\n g = p.length > 0 && (\" \" === v || \" \" === v);\n t && (p = p.trim());\n var b = i ? /[^\\S ]/g : /[\\xA0\\s]/g;\n if (this.tribute.hasTrailingSpace = b.test(p), !g && (e || !b.test(p))) return {\n mentionPosition: m,\n mentionText: p,\n mentionSelectedElement: o,\n mentionSelectedPath: u,\n mentionSelectedOffset: l,\n mentionTriggerChar: f\n };\n }\n }\n }\n }, {\n key: \"lastIndexWithLeadingSpace\",\n value: function value(e, t) {\n for (var n = e.split(\"\").reverse().join(\"\"), i = -1, r = 0, o = e.length; r < o; r++) {\n for (var u = r === e.length - 1, l = /\\s/.test(n[r + 1]), s = !0, a = t.length - 1; a >= 0; a--) {\n if (t[a] !== n[r - a]) {\n s = !1;\n break;\n }\n }\n\n if (s && (u || l)) {\n i = e.length - 1 - r;\n break;\n }\n }\n\n return i;\n }\n }, {\n key: \"isContentEditable\",\n value: function value(e) {\n return \"INPUT\" !== e.nodeName && \"TEXTAREA\" !== e.nodeName;\n }\n }, {\n key: \"isMenuOffScreen\",\n value: function value(e, t) {\n var n = window.innerWidth,\n i = window.innerHeight,\n r = document.documentElement,\n o = (window.pageXOffset || r.scrollLeft) - (r.clientLeft || 0),\n u = (window.pageYOffset || r.scrollTop) - (r.clientTop || 0),\n l = \"number\" == typeof e.top ? e.top : u + i - e.bottom - t.height,\n s = \"number\" == typeof e.right ? e.right : e.left + t.width,\n a = \"number\" == typeof e.bottom ? e.bottom : e.top + t.height,\n c = \"number\" == typeof e.left ? e.left : o + n - e.right - t.width;\n return {\n top: l < Math.floor(u),\n right: s > Math.ceil(o + n),\n bottom: a > Math.ceil(u + i),\n left: c < Math.floor(o)\n };\n }\n }, {\n key: \"getMenuDimensions\",\n value: function value() {\n var e = {\n width: null,\n height: null\n };\n return this.tribute.menu.style.cssText = \"top: 0px;\\n left: 0px;\\n position: fixed;\\n display: block;\\n visibility; hidden;\", e.width = this.tribute.menu.offsetWidth, e.height = this.tribute.menu.offsetHeight, this.tribute.menu.style.cssText = \"display: none;\", e;\n }\n }, {\n key: \"getTextAreaOrInputUnderlinePosition\",\n value: function value(e, t, n) {\n var i = null !== window.mozInnerScreenX,\n r = this.getDocument().createElement(\"div\");\n r.id = \"input-textarea-caret-position-mirror-div\", this.getDocument().body.appendChild(r);\n var o = r.style,\n u = window.getComputedStyle ? getComputedStyle(e) : e.currentStyle;\n o.whiteSpace = \"pre-wrap\", \"INPUT\" !== e.nodeName && (o.wordWrap = \"break-word\"), o.position = \"absolute\", o.visibility = \"hidden\", [\"direction\", \"boxSizing\", \"width\", \"height\", \"overflowX\", \"overflowY\", \"borderTopWidth\", \"borderRightWidth\", \"borderBottomWidth\", \"borderLeftWidth\", \"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\", \"fontStyle\", \"fontVariant\", \"fontWeight\", \"fontStretch\", \"fontSize\", \"fontSizeAdjust\", \"lineHeight\", \"fontFamily\", \"textAlign\", \"textTransform\", \"textIndent\", \"textDecoration\", \"letterSpacing\", \"wordSpacing\"].forEach(function (e) {\n o[e] = u[e];\n }), i ? (o.width = \"\".concat(parseInt(u.width) - 2, \"px\"), e.scrollHeight > parseInt(u.height) && (o.overflowY = \"scroll\")) : o.overflow = \"hidden\", r.textContent = e.value.substring(0, t), \"INPUT\" === e.nodeName && (r.textContent = r.textContent.replace(/\\s/g, \" \"));\n var l = this.getDocument().createElement(\"span\");\n l.textContent = e.value.substring(t) || \".\", r.appendChild(l);\n var s = e.getBoundingClientRect(),\n a = document.documentElement,\n c = (window.pageXOffset || a.scrollLeft) - (a.clientLeft || 0),\n h = (window.pageYOffset || a.scrollTop) - (a.clientTop || 0),\n d = 0,\n f = 0;\n this.menuContainerIsBody && (d = s.top, f = s.left);\n var m = {\n top: d + h + l.offsetTop + parseInt(u.borderTopWidth) + parseInt(u.fontSize) - e.scrollTop,\n left: f + c + l.offsetLeft + parseInt(u.borderLeftWidth)\n },\n p = window.innerWidth,\n v = window.innerHeight,\n g = this.getMenuDimensions(),\n b = this.isMenuOffScreen(m, g);\n b.right && (m.right = p - m.left, m.left = \"auto\");\n var y = this.tribute.menuContainer ? this.tribute.menuContainer.offsetHeight : this.getDocument().body.offsetHeight;\n\n if (b.bottom) {\n var w = y - (v - (this.tribute.menuContainer ? this.tribute.menuContainer.getBoundingClientRect() : this.getDocument().body.getBoundingClientRect()).top);\n m.bottom = w + (v - s.top - l.offsetTop), m.top = \"auto\";\n }\n\n return (b = this.isMenuOffScreen(m, g)).left && (m.left = p > g.width ? c + p - g.width : c, delete m.right), b.top && (m.top = v > g.height ? h + v - g.height : h, delete m.bottom), this.getDocument().body.removeChild(r), m;\n }\n }, {\n key: \"getContentEditableCaretPosition\",\n value: function value(e) {\n var t,\n n = this.getWindowSelection();\n (t = this.getDocument().createRange()).setStart(n.anchorNode, e), t.setEnd(n.anchorNode, e), t.collapse(!1);\n var i = t.getBoundingClientRect(),\n r = document.documentElement,\n o = (window.pageXOffset || r.scrollLeft) - (r.clientLeft || 0),\n u = (window.pageYOffset || r.scrollTop) - (r.clientTop || 0),\n l = {\n left: i.left + o,\n top: i.top + i.height + u\n },\n s = window.innerWidth,\n a = window.innerHeight,\n c = this.getMenuDimensions(),\n h = this.isMenuOffScreen(l, c);\n h.right && (l.left = \"auto\", l.right = s - i.left - o);\n var d = this.tribute.menuContainer ? this.tribute.menuContainer.offsetHeight : this.getDocument().body.offsetHeight;\n\n if (h.bottom) {\n var f = d - (a - (this.tribute.menuContainer ? this.tribute.menuContainer.getBoundingClientRect() : this.getDocument().body.getBoundingClientRect()).top);\n l.top = \"auto\", l.bottom = f + (a - i.top);\n }\n\n return (h = this.isMenuOffScreen(l, c)).left && (l.left = s > c.width ? o + s - c.width : o, delete l.right), h.top && (l.top = a > c.height ? u + a - c.height : u, delete l.bottom), this.menuContainerIsBody || (l.left = l.left ? l.left - this.tribute.menuContainer.offsetLeft : l.left, l.top = l.top ? l.top - this.tribute.menuContainer.offsetTop : l.top), l;\n }\n }, {\n key: \"scrollIntoView\",\n value: function value(e) {\n var t,\n n = this.menu;\n\n if (void 0 !== n) {\n for (; void 0 === t || 0 === t.height;) {\n if (0 === (t = n.getBoundingClientRect()).height && (void 0 === (n = n.childNodes[0]) || !n.getBoundingClientRect)) return;\n }\n\n var i = t.top,\n r = i + t.height;\n if (i < 0) window.scrollTo(0, window.pageYOffset + t.top - 20);else if (r > window.innerHeight) {\n var o = window.pageYOffset + t.top - 20;\n o - window.pageYOffset > 100 && (o = window.pageYOffset + 100);\n var u = window.pageYOffset - (window.innerHeight - r);\n u > o && (u = o), window.scrollTo(0, u);\n }\n }\n }\n }, {\n key: \"menuContainerIsBody\",\n get: function get() {\n return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n }\n }]), t;\n }(),\n s = function () {\n function t(n) {\n e(this, t), this.tribute = n, this.tribute.search = this;\n }\n\n return n(t, [{\n key: \"simpleFilter\",\n value: function value(e, t) {\n var n = this;\n return t.filter(function (t) {\n return n.test(e, t);\n });\n }\n }, {\n key: \"test\",\n value: function value(e, t) {\n return null !== this.match(e, t);\n }\n }, {\n key: \"match\",\n value: function value(e, t, n) {\n n = n || {};\n t.length;\n var i = n.pre || \"\",\n r = n.post || \"\",\n o = n.caseSensitive && t || t.toLowerCase();\n if (n.skip) return {\n rendered: t,\n score: 0\n };\n e = n.caseSensitive && e || e.toLowerCase();\n var u = this.traverse(o, e, 0, 0, []);\n return u ? {\n rendered: this.render(t, u.cache, i, r),\n score: u.score\n } : null;\n }\n }, {\n key: \"traverse\",\n value: function value(e, t, n, i, r) {\n if (t.length === i) return {\n score: this.calculateScore(r),\n cache: r.slice()\n };\n\n if (!(e.length === n || t.length - i > e.length - n)) {\n for (var o, u, l = t[i], s = e.indexOf(l, n); s > -1;) {\n if (r.push(s), u = this.traverse(e, t, s + 1, i + 1, r), r.pop(), !u) return o;\n (!o || o.score < u.score) && (o = u), s = e.indexOf(l, s + 1);\n }\n\n return o;\n }\n }\n }, {\n key: \"calculateScore\",\n value: function value(e) {\n var t = 0,\n n = 1;\n return e.forEach(function (i, r) {\n r > 0 && (e[r - 1] + 1 === i ? n += n + 1 : n = 1), t += n;\n }), t;\n }\n }, {\n key: \"render\",\n value: function value(e, t, n, i) {\n var r = e.substring(0, t[0]);\n return t.forEach(function (o, u) {\n r += n + e[o] + i + e.substring(o + 1, t[u + 1] ? t[u + 1] : e.length);\n }), r;\n }\n }, {\n key: \"filter\",\n value: function value(e, t, n) {\n var i = this;\n return n = n || {}, t.reduce(function (t, r, o, u) {\n var l = r;\n n.extract && ((l = n.extract(r)) || (l = \"\"));\n var s = i.match(e, l, n);\n return null != s && (t[t.length] = {\n string: s.rendered,\n score: s.score,\n index: o,\n original: r\n }), t;\n }, []).sort(function (e, t) {\n var n = t.score - e.score;\n return n || e.index - t.index;\n });\n }\n }]), t;\n }();\n\n return function () {\n function t(n) {\n var i,\n r = this,\n a = n.values,\n c = void 0 === a ? null : a,\n h = n.iframe,\n d = void 0 === h ? null : h,\n f = n.selectClass,\n m = void 0 === f ? \"highlight\" : f,\n p = n.containerClass,\n v = void 0 === p ? \"tribute-container\" : p,\n g = n.itemClass,\n b = void 0 === g ? \"\" : g,\n y = n.trigger,\n w = void 0 === y ? \"@\" : y,\n T = n.autocompleteMode,\n C = void 0 !== T && T,\n S = n.selectTemplate,\n E = void 0 === S ? null : S,\n k = n.menuItemTemplate,\n x = void 0 === k ? null : k,\n M = n.lookup,\n A = void 0 === M ? \"key\" : M,\n L = n.fillAttr,\n I = void 0 === L ? \"value\" : L,\n N = n.collection,\n O = void 0 === N ? null : N,\n D = n.menuContainer,\n P = void 0 === D ? null : D,\n R = n.noMatchTemplate,\n W = void 0 === R ? null : R,\n H = n.requireLeadingSpace,\n B = void 0 === H || H,\n F = n.allowSpaces,\n _ = void 0 !== F && F,\n j = n.replaceTextSuffix,\n Y = void 0 === j ? null : j,\n z = n.positionMenu,\n K = void 0 === z || z,\n q = n.spaceSelectsMatch,\n U = void 0 !== q && q,\n X = n.searchOpts,\n Q = void 0 === X ? {} : X,\n V = n.menuItemLimit,\n G = void 0 === V ? null : V,\n J = n.menuShowMinLength,\n Z = void 0 === J ? 0 : J;\n\n if (e(this, t), this.autocompleteMode = C, this.menuSelected = 0, this.current = {}, this.inputEvent = !1, this.isActive = !1, this.menuContainer = P, this.allowSpaces = _, this.replaceTextSuffix = Y, this.positionMenu = K, this.hasTrailingSpace = !1, this.spaceSelectsMatch = U, this.autocompleteMode && (w = \"\", _ = !1), c) this.collection = [{\n trigger: w,\n iframe: d,\n selectClass: m,\n containerClass: v,\n itemClass: b,\n selectTemplate: (E || t.defaultSelectTemplate).bind(this),\n menuItemTemplate: (x || t.defaultMenuItemTemplate).bind(this),\n noMatchTemplate: (i = W, \"string\" == typeof i ? \"\" === i.trim() ? null : i : \"function\" == typeof i ? i.bind(r) : W || function () {\n return \"
  • No Match Found!
  • \";\n }.bind(r)),\n lookup: A,\n fillAttr: I,\n values: c,\n requireLeadingSpace: B,\n searchOpts: Q,\n menuItemLimit: G,\n menuShowMinLength: Z\n }];else {\n if (!O) throw new Error(\"[Tribute] No collection specified.\");\n this.autocompleteMode && console.warn(\"Tribute in autocomplete mode does not work for collections\"), this.collection = O.map(function (e) {\n return {\n trigger: e.trigger || w,\n iframe: e.iframe || d,\n selectClass: e.selectClass || m,\n containerClass: e.containerClass || v,\n itemClass: e.itemClass || b,\n selectTemplate: (e.selectTemplate || t.defaultSelectTemplate).bind(r),\n menuItemTemplate: (e.menuItemTemplate || t.defaultMenuItemTemplate).bind(r),\n noMatchTemplate: function (e) {\n return \"string\" == typeof e ? \"\" === e.trim() ? null : e : \"function\" == typeof e ? e.bind(r) : W || function () {\n return \"
  • No Match Found!
  • \";\n }.bind(r);\n }(W),\n lookup: e.lookup || A,\n fillAttr: e.fillAttr || I,\n values: e.values,\n requireLeadingSpace: e.requireLeadingSpace,\n searchOpts: e.searchOpts || Q,\n menuItemLimit: e.menuItemLimit || G,\n menuShowMinLength: e.menuShowMinLength || Z\n };\n });\n }\n new l(this), new o(this), new u(this), new s(this);\n }\n\n return n(t, [{\n key: \"triggers\",\n value: function value() {\n return this.collection.map(function (e) {\n return e.trigger;\n });\n }\n }, {\n key: \"attach\",\n value: function value(e) {\n if (!e) throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n if (\"undefined\" != typeof jQuery && e instanceof jQuery && (e = e.get()), e.constructor === NodeList || e.constructor === HTMLCollection || e.constructor === Array) for (var t = e.length, n = 0; n < t; ++n) {\n this._attach(e[n]);\n } else this._attach(e);\n }\n }, {\n key: \"_attach\",\n value: function value(e) {\n e.hasAttribute(\"data-tribute\") && console.warn(\"Tribute was already bound to \" + e.nodeName), this.ensureEditable(e), this.events.bind(e), e.setAttribute(\"data-tribute\", !0);\n }\n }, {\n key: \"ensureEditable\",\n value: function value(e) {\n if (-1 === t.inputTypes().indexOf(e.nodeName)) {\n if (!e.contentEditable) throw new Error(\"[Tribute] Cannot bind to \" + e.nodeName);\n e.contentEditable = !0;\n }\n }\n }, {\n key: \"createMenu\",\n value: function value(e) {\n var t = this.range.getDocument().createElement(\"div\"),\n n = this.range.getDocument().createElement(\"ul\");\n return t.className = e, t.appendChild(n), this.menuContainer ? this.menuContainer.appendChild(t) : this.range.getDocument().body.appendChild(t);\n }\n }, {\n key: \"showMenuFor\",\n value: function value(e, t) {\n var n = this;\n\n if (!this.isActive || this.current.element !== e || this.current.mentionText !== this.currentMentionTextSnapshot) {\n this.currentMentionTextSnapshot = this.current.mentionText, this.menu || (this.menu = this.createMenu(this.current.collection.containerClass), e.tributeMenu = this.menu, this.menuEvents.bind(this.menu)), this.isActive = !0, this.menuSelected = 0, this.current.mentionText || (this.current.mentionText = \"\");\n\n var r = function r(e) {\n if (n.isActive) {\n var r = n.search.filter(n.current.mentionText, e, {\n pre: n.current.collection.searchOpts.pre || \"\",\n post: n.current.collection.searchOpts.post || \"\",\n skip: n.current.collection.searchOpts.skip,\n extract: function extract(e) {\n if (\"string\" == typeof n.current.collection.lookup) return e[n.current.collection.lookup];\n if (\"function\" == typeof n.current.collection.lookup) return n.current.collection.lookup(e, n.current.mentionText);\n throw new Error(\"Invalid lookup attribute, lookup must be string or function.\");\n }\n });\n n.current.collection.menuItemLimit && (r = r.slice(0, n.current.collection.menuItemLimit)), n.current.filteredItems = r;\n var o = n.menu.querySelector(\"ul\");\n\n if (n.range.positionMenuAtCaret(t), !r.length) {\n var u = new CustomEvent(\"tribute-no-match\", {\n detail: n.menu\n });\n return n.current.element.dispatchEvent(u), void (\"function\" == typeof n.current.collection.noMatchTemplate && !n.current.collection.noMatchTemplate() || !n.current.collection.noMatchTemplate ? n.hideMenu() : \"function\" == typeof n.current.collection.noMatchTemplate ? o.innerHTML = n.current.collection.noMatchTemplate() : o.innerHTML = n.current.collection.noMatchTemplate);\n }\n\n o.innerHTML = \"\";\n var l = n.range.getDocument().createDocumentFragment();\n r.forEach(function (e, t) {\n var r = n.range.getDocument().createElement(\"li\");\n r.setAttribute(\"data-index\", t), r.className = n.current.collection.itemClass, r.addEventListener(\"mousemove\", function (e) {\n var t = i(n._findLiTarget(e.target), 2),\n r = (t[0], t[1]);\n 0 !== e.movementY && n.events.setActiveLi(r);\n }), n.menuSelected === t && r.classList.add(n.current.collection.selectClass), r.innerHTML = n.current.collection.menuItemTemplate(e), l.appendChild(r);\n }), o.appendChild(l);\n }\n };\n\n \"function\" == typeof this.current.collection.values ? this.current.collection.values(this.current.mentionText, r) : r(this.current.collection.values);\n }\n }\n }, {\n key: \"_findLiTarget\",\n value: function value(e) {\n if (!e) return [];\n var t = e.getAttribute(\"data-index\");\n return t ? [e, t] : this._findLiTarget(e.parentNode);\n }\n }, {\n key: \"showMenuForCollection\",\n value: function value(e, t) {\n e !== document.activeElement && this.placeCaretAtEnd(e), this.current.collection = this.collection[t || 0], this.current.externalTrigger = !0, this.current.element = e, e.isContentEditable ? this.insertTextAtCursor(this.current.collection.trigger) : this.insertAtCaret(e, this.current.collection.trigger), this.showMenuFor(e);\n }\n }, {\n key: \"placeCaretAtEnd\",\n value: function value(e) {\n if (e.focus(), void 0 !== window.getSelection && void 0 !== document.createRange) {\n var t = document.createRange();\n t.selectNodeContents(e), t.collapse(!1);\n var n = window.getSelection();\n n.removeAllRanges(), n.addRange(t);\n } else if (void 0 !== document.body.createTextRange) {\n var i = document.body.createTextRange();\n i.moveToElementText(e), i.collapse(!1), i.select();\n }\n }\n }, {\n key: \"insertTextAtCursor\",\n value: function value(e) {\n var t, n;\n (n = (t = window.getSelection()).getRangeAt(0)).deleteContents();\n var i = document.createTextNode(e);\n n.insertNode(i), n.selectNodeContents(i), n.collapse(!1), t.removeAllRanges(), t.addRange(n);\n }\n }, {\n key: \"insertAtCaret\",\n value: function value(e, t) {\n var n = e.scrollTop,\n i = e.selectionStart,\n r = e.value.substring(0, i),\n o = e.value.substring(e.selectionEnd, e.value.length);\n e.value = r + t + o, i += t.length, e.selectionStart = i, e.selectionEnd = i, e.focus(), e.scrollTop = n;\n }\n }, {\n key: \"hideMenu\",\n value: function value() {\n this.menu && (this.menu.style.cssText = \"display: none;\", this.isActive = !1, this.menuSelected = 0, this.current = {});\n }\n }, {\n key: \"selectItemAtIndex\",\n value: function value(e, t) {\n if (\"number\" == typeof (e = parseInt(e)) && !isNaN(e)) {\n var n = this.current.filteredItems[e],\n i = this.current.collection.selectTemplate(n);\n null !== i && this.replaceText(i, t, n);\n }\n }\n }, {\n key: \"replaceText\",\n value: function value(e, t, n) {\n this.range.replaceTriggerText(e, !0, !0, t, n);\n }\n }, {\n key: \"_append\",\n value: function value(e, t, n) {\n if (\"function\" == typeof e.values) throw new Error(\"Unable to append to values, as it is a function.\");\n e.values = n ? t : e.values.concat(t);\n }\n }, {\n key: \"append\",\n value: function value(e, t, n) {\n var i = parseInt(e);\n if (\"number\" != typeof i) throw new Error(\"please provide an index for the collection to update.\");\n var r = this.collection[i];\n\n this._append(r, t, n);\n }\n }, {\n key: \"appendCurrent\",\n value: function value(e, t) {\n if (!this.isActive) throw new Error(\"No active state. Please use append instead and pass an index.\");\n\n this._append(this.current.collection, e, t);\n }\n }, {\n key: \"detach\",\n value: function value(e) {\n if (!e) throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n if (\"undefined\" != typeof jQuery && e instanceof jQuery && (e = e.get()), e.constructor === NodeList || e.constructor === HTMLCollection || e.constructor === Array) for (var t = e.length, n = 0; n < t; ++n) {\n this._detach(e[n]);\n } else this._detach(e);\n }\n }, {\n key: \"_detach\",\n value: function value(e) {\n var t = this;\n this.events.unbind(e), e.tributeMenu && this.menuEvents.unbind(e.tributeMenu), setTimeout(function () {\n e.removeAttribute(\"data-tribute\"), t.isActive = !1, e.tributeMenu && e.tributeMenu.remove();\n });\n }\n }, {\n key: \"isActive\",\n get: function get() {\n return this._isActive;\n },\n set: function set(e) {\n if (this._isActive != e && (this._isActive = e, this.current.element)) {\n var t = new CustomEvent(\"tribute-active-\".concat(e));\n this.current.element.dispatchEvent(t);\n }\n }\n }], [{\n key: \"defaultSelectTemplate\",\n value: function value(e) {\n return void 0 === e ? \"\".concat(this.current.collection.trigger).concat(this.current.mentionText) : this.range.isContentEditable(this.current.element) ? '' + (this.current.collection.trigger + e.original[this.current.collection.fillAttr]) + \"\" : this.current.collection.trigger + e.original[this.current.collection.fillAttr];\n }\n }, {\n key: \"defaultMenuItemTemplate\",\n value: function value(e) {\n return e.string;\n }\n }, {\n key: \"inputTypes\",\n value: function value() {\n return [\"TEXTAREA\", \"INPUT\"];\n }\n }]), t;\n }();\n});","/* 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\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\n\nimport 'devextreme/dist/css/dx.common.css';\nimport 'devextreme/dist/css/dx.light.css';\n\nconst application = Application.start()\nconst context = require.context(\"../controllers\", true, /\\.js$/)\napplication.load(definitionsFromContext(context))\n\n// Support component names relative to this directory:\n/*var componentRequireContext = require.context(\"components\", true);\nvar ReactRailsUJS = require(\"react_ujs\");\nReactRailsUJS.useContext(componentRequireContext);*/\n\nimport * as ActiveStorage from \"@rails/activestorage\"\nActiveStorage.start()\nrequire(\"trix\")\nrequire(\"@rails/actiontext\")\n","var map = {\n\t\"./columns_controller.js\": 7,\n\t\"./drag_controller.js\": 8,\n\t\"./emaildraft_controller.js\": 9,\n\t\"./favorites_controller.js\": 10,\n\t\"./form-response-bulk_controller.js\": 11,\n\t\"./hello_controller.js\": 12,\n\t\"./index.js\": 31,\n\t\"./jobdescription_controller.js\": 13,\n\t\"./mailflowactive_controller.js\": 14,\n\t\"./mailflowtaskactive_controller.js\": 15,\n\t\"./mentions_controller.js\": 16,\n\t\"./personalized-field_controller.js\": 18,\n\t\"./position_controller.js\": 19,\n\t\"./widgets_controller.js\": 20,\n\t\"./workflow_controller.js\": 21\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 = 30;","// Load all the controllers within this directory and all subdirectories. \n// Controller files must be named *_controller.js.\n\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\n\nconst application = Application.start()\nconst context = require.context(\"controllers\", true, /_controller\\.js$/)\napplication.load(definitionsFromContext(context))\n","var map = {\n\t\"./columns_controller.js\": 7,\n\t\"./drag_controller.js\": 8,\n\t\"./emaildraft_controller.js\": 9,\n\t\"./favorites_controller.js\": 10,\n\t\"./form-response-bulk_controller.js\": 11,\n\t\"./hello_controller.js\": 12,\n\t\"./jobdescription_controller.js\": 13,\n\t\"./mailflowactive_controller.js\": 14,\n\t\"./mailflowtaskactive_controller.js\": 15,\n\t\"./mentions_controller.js\": 16,\n\t\"./personalized-field_controller.js\": 18,\n\t\"./position_controller.js\": 19,\n\t\"./widgets_controller.js\": 20,\n\t\"./workflow_controller.js\": 21\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 = 32;","var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n}; // setimmediate attaches itself to the global object\n\n\nrequire(\"setimmediate\"); // On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\n\n\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a