{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./app/javascript/controllers/application_controller.js","webpack:///./node_modules/morphdom/dist/morphdom-esm.js","webpack:///./node_modules/cable_ready/javascript/cable_ready.js","webpack:///./node_modules/cable_ready/javascript/enums.js","webpack:///./node_modules/cable_ready/javascript/utils.js","webpack:///./node_modules/cable_ready/javascript/callbacks.js","webpack:///./node_modules/stimulus_reflex/javascript/schema.js","webpack:///./node_modules/stimulus_reflex/javascript/consumer.js","webpack:///./node_modules/stimulus_reflex/javascript/utils.js","webpack:///./node_modules/stimulus_reflex/javascript/debug.js","webpack:///./node_modules/stimulus_reflex/javascript/lifecycle.js","webpack:///./node_modules/stimulus_reflex/javascript/attributes.js","webpack:///./node_modules/stimulus_reflex/javascript/controllers.js","webpack:///./node_modules/stimulus_reflex/javascript/log.js","webpack:///./node_modules/stimulus_reflex/javascript/stimulus_reflex.js","webpack:///./app/javascript/channels/consumer.js","webpack:///./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack:///./node_modules/stimulus-checkbox-select-all/dist/stimulus-checkbox-select-all.es.js","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///./node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js","webpack:///./node_modules/@rails/request.js/src/fetch_response.js","webpack:///./node_modules/@rails/request.js/src/request_interceptor.js","webpack:///./node_modules/@rails/request.js/src/lib/utils.js","webpack:///./node_modules/@rails/request.js/src/fetch_request.js","webpack:///./node_modules/@rails/request.js/src/verbs.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/environment.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/unfetch/dist/unfetch.module.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/isomorphic-unfetch/browser.js","webpack:///./node_modules/@appsignal/stimulus/dist/esm/index.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/functional.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/hashmap.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/error.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/async.js","webpack:///./node_modules/@appsignal/core/dist/esm/serializable.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/environment.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/transports/xdomain.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/transports/xhr.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/transports/fetch.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/transports/node.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/api.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/url.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/span.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/queue.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/dispatcher.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/index.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/version.js","webpack:///./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","webpack:///./node_modules/debounced/src/events.js","webpack:///./node_modules/debounced/src/index.js","webpack:///(webpack)/buildin/module.js","webpack:///./app/javascript/libraries/index.js","webpack:///./app/javascript/controllers/index.js","webpack:///./app/javascript/controllers sync _controller\\.(js|ts)$","webpack:///./app/javascript/controllers/agenda_controller.js","webpack:///./app/javascript/controllers/app_opdrachten_controller.js","webpack:///./app/javascript/controllers/app_requisition_controller.js","webpack:///./app/javascript/controllers/beschikbaarheid_controller.js","webpack:///./app/javascript/controllers/boekhouding_factuur_controller.js","webpack:///./app/javascript/controllers/boekhouding_factuurregel_controller.js","webpack:///./app/javascript/controllers/bulk_invoice_controller.js","webpack:///./app/javascript/controllers/bulk_timesheet_controller.js","webpack:///./app/javascript/controllers/company_controller.js","webpack:///./app/javascript/controllers/contributie_facturen_controller.js","webpack:///./app/javascript/controllers/conversation_controller.js","webpack:///./app/javascript/controllers/date_check_controller.js","webpack:///./app/javascript/controllers/document_controller.js","webpack:///./app/javascript/controllers/example_controller.js","webpack:///./app/javascript/controllers/field_order_controller.js","webpack:///./app/javascript/controllers/group_member_controller.js","webpack:///./app/javascript/controllers/hello_controller.js","webpack:///./app/javascript/controllers/hours_controller.js","webpack:///./app/javascript/controllers/invoice_controller.js","webpack:///./app/javascript/controllers/landing_block_controller.js","webpack:///./app/javascript/controllers/landing_navigation_controller.js","webpack:///./app/javascript/controllers/landing_navigation_item_controller.js","webpack:///./app/javascript/controllers/my_availability_controller.js","webpack:///./app/javascript/controllers/newconversation_controller.js","webpack:///./app/javascript/controllers/note_controller.js","webpack:///./app/javascript/controllers/ordering_controller.js","webpack:///./app/javascript/controllers/project_controller.js","webpack:///./app/javascript/controllers/reloader_controller.js","webpack:///./app/javascript/controllers/requisition_controller.js","webpack:///./app/javascript/controllers/requisition_hour_controller.js","webpack:///./app/javascript/controllers/requisition_invite_controller.js","webpack:///./app/javascript/controllers/reset_form_controller.js","webpack:///./app/javascript/controllers/selection_list_controller.js","webpack:///./app/javascript/controllers/tekst_controller.js","webpack:///./app/javascript/controllers/timesheets_controller.js","webpack:///./app/javascript/controllers/unreads_controller.js","webpack:///./app/javascript/controllers/user_controller.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/trix/dist/trix.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.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","StimulusReflex","register","this","element","reflex","noop","reflexId","error","message","window","Notification","permission","console","Controller","range","doc","document","undefined","HAS_TEMPLATE_SUPPORT","createElement","HAS_RANGE_SUPPORT","createRange","toElement","str","trim","template","innerHTML","content","childNodes","createFragmentFromTemplate","selectNode","body","createContextualFragment","createFragmentFromRange","fragment","createFragmentFromWrap","compareNodeNames","fromEl","toEl","fromCodeStart","toCodeStart","fromNodeName","nodeName","toNodeName","charCodeAt","toUpperCase","syncBooleanAttrProp","setAttribute","removeAttribute","specialElHandlers","OPTION","parentNode","parentName","hasAttribute","selected","selectedIndex","INPUT","TEXTAREA","newValue","firstChild","oldValue","nodeValue","placeholder","SELECT","optgroup","curChild","nextSibling","defaultGetNodeKey","node","getAttribute","id","activeElement","morphdom","morphAttrs","fromNode","toNode","options","toNodeHtml","getNodeKey","onBeforeNodeAdded","onNodeAdded","onBeforeElUpdated","onElUpdated","onBeforeNodeDiscarded","onNodeDiscarded","onBeforeElChildrenUpdated","childrenOnly","fromNodesLookup","keyedRemovalList","addKeyedRemoval","push","walkDiscardedChildNodes","skipKeyedNodes","nodeType","removeNode","removeChild","handleNodeAdded","el","unmatchedFromEl","replaceChild","morphEl","toElKey","curToNodeKey","curFromNodeKey","fromNextSibling","toNextSibling","matchingFromEl","curToNodeChild","curFromNodeChild","outer","isSameNode","curFromNodeType","isCompatible","insertBefore","appendChild","onBeforeNodeAddedResult","actualize","ownerDocument","cleanupFromEl","specialElHandler","morphChildren","indexTree","namespaceURI","morphedNode","morphedNodeType","toNodeType","nextChild","moveChildren","createElementNS","len","length","elToRemove","morphdomFactory","attr","attrName","attrNamespaceURI","attrValue","toNodeAttrs","attributes","localName","getAttributeNS","prefix","setAttributeNS","fromNodeAttrs","hasAttributeNS","removeAttributeNS","inputTags","mutableTags","textInputTypes","color","date","datetime","email","month","number","password","search","tel","text","textarea","time","url","week","selector","focusElement","Node","ELEMENT_NODE","querySelector","focus","dispatch","detail","arguments","init","bubbles","cancelable","evt","CustomEvent","dispatchEvent","jQuery","trigger","xpathToElement","xpath","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","getClassNames","names","Array","flat","processElements","operation","callback","from","selectAll","forEach","_slicedToArray","arr","isArray","_arrayWithHoles","_i","iterator","_s","_e","_arr","_n","_d","next","done","err","_iterableToArrayLimit","_unsupportedIterableToArray","TypeError","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","minLen","toString","slice","constructor","test","arr2","shouldMorphCallbacks","tagName","isEqualNode","permanentAttributeName","permanent","closest","concat","type","ignore","attribute","didMorphCallbacks","shouldMorph","map","includes","didMorph","DOMOperations","append","html","focusSelector","cancel","insertAdjacentHTML","graft","parent","parentElement","innerHtml","insertAdjacentHtml","position","insertAdjacentText","morph","String","ordinal","children","indexOf","outerHtml","outerHTML","prepend","remove","replace","textContent","addCssClass","_element$classList","classList","add","apply","removeCssClass","_element$classList2","setDatasetProperty","dataset","setProperty","setStyle","style","setStyles","styles","_i2","_Object$entries","entries","_ref2","setValue","clearStorage","storage","sessionStorage","localStorage","clear","go","delta","history","pushState","state","title","removeStorageItem","removeItem","replaceState","scrollIntoView","setCookie","cookie","setFocus","setStorageItem","setItem","consoleLog","level","log","notification","requestPermission","then","result","playSound","src","canplaythrough","audio","removeEventListener","play","addEventListener","operations","emitMissingElementWarnings","e","Audio","unlockAudio","catch","defaultSchema","reflexAttribute","reflexPermanentAttribute","reflexRootAttribute","reflexDatasetAttribute","isConsumer","connect","disconnect","send","findConsumer","depth","values","find","getConsumer","uuidv4","crypto","msCrypto","getRandomValues","Uint8Array","serializeForm","form","w","formData","FormData","data","encodeURIComponent","join","submitButton","Set","camelize","uppercaseFirstLetter","$1","toLowerCase","substr","emitEvent","event","elementToXPath","ix","siblings","sibling","computedPath","ixInc","XPathToElement","debugging","enabled","disabled","set","debug","stage","reflexElement","controllerElement","reflexData","controller","reflexController","target","reflexMethodName","split","specificLifecycleMethod","genericLifecycleMethod","reflexError","reflexes","finalStage","Reflect","deleteProperty","warned","warn","ownKeys","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","configurable","writable","attributeValue","v","attributeValues","extractElementAttributes","attrs","reduce","memo","checked","tag_name","match","querySelectorAll","multipleInstances","collectedOptions","elem","collectCheckedOptions","extractElementDataset","datasetAttribute","extractDataAttributes","startsWith","app","schema","controllerAttribute","getControllerForElementAndIdentifier","request","args","timestamp","Date","success","_ref3","stimulusReflex","serverMessage","progress","totalOperations","completedOperations","duration","halted","subject","_ref5","payload","_defineProperties","props","descriptor","_classCallCheck","instance","Constructor","_setPrototypeOf","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","self","_typeof","_assertThisInitialized","ReferenceError","getPrototypeOf","stimulusApplication","actionCableConsumer","actionCableParams","isolationMode","NOOP","actionCableSubscriptionActive","subscription","channel","identifier","JSON","stringify","subscriptions","findAll","received","cableReady","reflexOperations","splice","urls","location","href","xpathController","xpathElement","pendingOperations","connected","rejected","disconnected","willAttemptReconnect","assign","isActionCableConnectionOpen","consumer","connection","isOpen","stimulate","shift","validity","badInput","opts","selectors","getReflexRoots","resolveLate","setTimeout","params","promise","context","scope","__perform","preventDefault","stopPropagation","Promise","resolve","reject","StimulusReflexController","_Controller","subClass","superClass","_inherits","protoProps","staticProps","_super","_this","_len","_key","setupDeclarativeReflexes","timeoutId","delay","clearTimeout","debounce","controllers","reflexAttributeNames","actions","actionAttribute","reflexName","action","allReflexControllers","controllerValue","actionValue","reflexString","list","reflexRoot","stimulusReflexInitialized","MutationObserver","observe","documentElement","childList","subtree","_ref4","nothing","initialize","application","initializeOptions","isolate","createConsumer","asyncGeneratorStep","gen","_next","_throw","arg","info","_createForOfIteratorHelper","allowArrayLike","it","F","_e2","f","normalCompletion","didErr","step","_e3","return","_createClass","EventListener","eventTarget","eventName","eventOptions","unorderedBindings","binding","delete","_step","extendedEvent","_stopImmediatePropagation","stopImmediatePropagation","immediatePropagationStopped","extendEvent","_iterator","bindings","handleEvent","sort","left","right","leftIndex","index","rightIndex","Dispatcher","eventListenerMaps","Map","started","eventListeners","eventListener","listeners","fetchEventListenerForBinding","bindingConnected","bindingDisconnected","handleError","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","createEventListener","parts","descriptorPattern","parseEventTarget","eventTargetName","_","char","capitalize","charAt","dasherize","Action","defaultEventNames","getDefaultEventNameForElement","methodName","eventNameSuffix","Element","getParamsFromEventTargetAttributes","pattern","RegExp","_ref","parse","o_O","typecast","token","descriptorString","matches","Error","Binding","willBeInvokedByEvent","invokeWithEvent","method","currentTarget","actionEvent","logDebugActivity","contains","containsElement","ElementObserver","delegate","mutationObserverInit","elements","mutationObserver","mutations","processMutations","refresh","takeRecords","matchElementsInTree","_Array$from","has","removeElement","_Array$from2","_element","addElement","_step2","_iterator2","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","_i3","_Array$from3","elementFromNode","processTree","_i4","_Array$from4","elementIsActive","tree","processor","_step3","_iterator3","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","start","pause","stop","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","StringMapObserver","_this2","stringMap","attributeOldValue","_step4","_iterator4","knownAttributeNames","refreshAttribute","_step5","_iterator5","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","_oldValue","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","_add","fetch","del","size","prune","Multimap","valuesByKey","some","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","_this$refreshTokensFo2","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","getValuesForKey","tokens","_this4","tokenMatched","_this5","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","findIndex","_ref6","_ref7","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","disconnectAllActions","_this6","forToken","connectAction","disconnectAction","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","hasValue","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","_step6","_iterator6","valueDescriptors","_ref9","rawValue","rawOldValue","changedMethodName","changedMethod","reader","_this7","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","_ref10","connectTarget","_ref11","disconnectTarget","_a","_this8","targetConnected","_this9","targetDisconnected","_step7","_iterator7","_step8","_iterator8","Context","_this10","functionName","controllerConstructor","bindingObserver","dispatcher","valueObserver","targetObserver","invokeControllerMethod","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","reverse","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getShadowedDescriptor","getShadowProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertyNames","extendWithReflect","extended","b","a","_constructor","_super2","Module","blessDefinition","contextsByScope","connectedContexts","fetchContextForScope","ClassMap","getDataKey","getAll","getAttributeNameForKey","DataMap","Guide","logger","warnedKeysByObject","warnedKeys","attributeValueContainsToken","TargetSet","targetName","_this11","_len2","targetNames","_key2","findTarget","findLegacyTarget","_this12","_len3","_key3","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","_this13","targetDescriptor","targetAttribute","revisedAttributeName","guide","Scope","_this14","classes","controllerSelector","queryElements","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","unloadIdentifier","connectModule","disconnectModule","connectContextForScope","disconnectContextForScope","Application","_this15","logFormattedMessage","router","fn","_start","mark","_callee","wrap","_context","prev","readyState","shouldLoad","load","head","_this16","_len4","rest","_key4","definitions","loadDefinition","_this17","_len5","_key5","identifiers","getContextForElementAndIdentifier","onerror","groupCollapsed","groupEnd","parseValueDefinitionPair","_ref15","_ref16","typeDefinition","typeFromObject","typeObject","parseValueTypeConstant","defaultValueType","parseValueTypeDefault","default","parseValueTypeObject","typeFromDefaultValue","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Number","array","boolean","string","writeJSON","_ref17","_ref17$target","_ref17$detail","_ref17$prefix","_ref17$bubbles","_ref17$cancelable","blessings","classDefinition","_ref12","getAttributeName","targetDefinition","_ref13","valueDefinitionPairs","propertyDescriptorMap","_this18","valueDefinitionPair","valueDescriptor","_ref14","read","write","propertiesForValueDefinitionPair","_r","u","h","_class","g","_ref3$target","_ref3$detail","_ref3$prefix","_ref3$bubbles","_ref3$cancelable","_Object$assign","_t","_Object$assign2","_g","toggle","hasCheckboxAllTarget","checkboxAllTarget","checkboxTargets","_this3","triggerInputEvent","indeterminate","Event","_objectSpread2","_extends","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","userAgent","navigator","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","on","off","substring","msMatchesSelector","webkitMatchesSelector","getParentOrHost","host","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","className","css","prop","val","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","getElementsByTagName","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","bottom","height","width","innerHeight","innerWidth","containerRect","parseInt","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","includeDragEl","currentChild","display","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","includeSelf","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","isRectEqual","rect1","rect2","round","throttle","ms","scrollBy","x","y","Polymer","$","Zepto","dom","cloneNode","expando","getTime","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","animation","child","rect","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","indexOfObject","animateAll","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","animationResetTimer","currentRect","translateX","translateY","animatingX","animatingY","forRepaintDummy","offsetWidth","repaint","easing","animated","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","pluginName","pluginEvent","sortable","eventCanceled","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","rootEl","targetEl","cloneEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","createEvent","initEvent","to","item","pullMode","lastPutMode","allEventProperties","_excluded","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","active","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","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","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","store","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","preventOnFilter","setData","dataTransfer","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","sum","_nextTick","_cancelNextTick","_getDirection","touch","pointerType","originalTarget","shadowRoot","path","composedPath","root","inputs","idx","_saveInputCheckedState","button","isContentEditable","criteria","_prepareDragStart","dragStartFn","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","_hideClone","cloneId","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","spacer","_ghostIsLast","changed","_ghostIsFirst","targetBeforeFirstSwap","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","save","dropEffect","_globalDragOver","toArray","order","useAnimation","items","destroy","utils","is","dst","nextTick","cancelNextTick","detectDirection","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","parentSortable","AutoScroll","forceAutoScrollFallback","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","adapters","WebSocket","_adapters$logger","messages","now","secondsSince","ConnectionMonitor","visibilityDidChange","reconnectAttempts","isRunning","startedAt","stoppedAt","startPolling","staleThreshold","stopPolling","pingedAt","recordPing","disconnectedAt","poll","pollTimeout","reconnectIfStale","getPollInterval","_this$constructor","reconnectionBackoffRate","min","random","connectionIsStale","refreshedAt","disconnectedRecently","reopen","visibilityState","INTERNAL","message_types","welcome","ping","confirmation","rejection","protocols","supportedProtocols","Connection","open","monitor","webSocket","isActive","getState","uninstallEventHandlers","installEventHandlers","allowReconnect","close","reopenDelay","protocol","isState","getProtocol","states","events","handler","isProtocolSupported","_JSON$parse","reason","reconnect","recordConnect","reload","confirmSubscription","notify","recordDisconnect","notifyAll","Subscription","mixin","command","SubscriptionGuarantor","pendingSubscriptions","startGuaranteeing","stopGuaranteeing","retrySubscribing","retryTimeout","subscribe","Subscriptions","guarantor","channelName","ensureActiveConnection","forget","sendCommand","callbackName","guarantee","Consumer","_url","createWebSocketURL","getConfig","FetchResponse","response","_renderTurboStream","status","redirected","ok","statusCode","headers","contentType","responseJson","json","responseText","isTurboStream","Turbo","t0","t1","sent","renderStreamMessage","abrupt","RequestInterceptor","interceptor","metaContent","mergeEntries","searchParams","File","FetchRequest","originalUrl","_perform","requestInterceptor","fetchOptions","t2","unauthenticated","authenticationURL","renderTurboStream","additionalHeaders","formattedBody","signal","credentials","redirect","compact","csrfToken","Accept","accept","cookies","decodeURIComponent","getCookie","responseKind","originalQuery","URLSearchParams","requestQuery","query","bodyIsAString","_x5","_x6","_put","_callee3","_context3","perform","factory","sparkMd5","createCommonjsModule","hex_chr","md5cycle","k","md5blk","md5blks","md5blk_array","md51","tail","tmp","lo","hi","md51_array","subarray","rhex","j","hex","toUtf8","unescape","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","fromCharCode","concatenateArrayBuffers","first","second","byteLength","buffer","hexToBinaryString","bytes","SparkMD5","reset","clamp","num","targetArray","sourceArray","begin","end","appendBinary","contents","_buff","_length","_hash","raw","_finish","hash","setState","hashBinary","classCallCheck","createClass","fileSlice","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","ceil","chunkIndex","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","eventInit","toArray$1","BlobRecord","checksum","filename","content_type","byte_size","xhr","XMLHttpRequest","responseType","setRequestHeader","getMetaValue","requestDidLoad","requestDidError","blob","direct_upload","directUploadData","toJSON","_xhr","BlobUpload","_blob$directUploadDat","DirectUpload","upload","DirectUploadController","input","directUpload","hiddenInput","insertAdjacentElement","dispatchError","signed_id","loaded","total","defaultPrevented","alert","uploadRequestDidProgress","DirectUploadsController","files","createDirectUploadControllers","startNextController","processingAttribute","submitButtonsByForm","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","disable","enable","click","submitForm","ActiveStorage","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","browser","env","argv","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","dir","umask","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","awrap","async","pop","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","isNodeEnv","getGlobalObject","global","statusText","responseURL","Blob","onload","getAllResponseHeaders","withCredentials","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","cspNonce","matchesSelector","mozMatchesSelector","oMatchesSelector","getData","csrfParam","meta","CSRFProtection","refreshCSRFTokens","param","fire","initCustomEvent","stopEverything","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","xml","script","ajax","getResponseHeader","beforeSend","OPENED","dataType","crossDomain","onreadystatechange","DONE","parser","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","serializeElement","additionalParam","formElements","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","link","isRemote","handleRemote","enctype","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","rails","ajaxPrefilter","originalOptions","_rails_loaded","installErrorHandler","appsignal","prevHandler","span","createSpan","setTags","framework","setError","_extendStatics","_assign","__awaiter","thisArg","_arguments","P","fulfilled","__generator","label","trys","ops","verb","op","__values","__read","ar","__spreadArray","pack","compose","funcs","toHashMap","getStacktrace","stacktrace","line","stack","_b","Serializable","_data","serialize","Environment","transport","origin","globals","product","hostname","jest","XDomainRequest","supportsPromises","XDomainTransport","req","rx","XHRTransport","req_1","FetchTransport","res","NodeTransport","PushApi","_uri","uri","_apiKey","_clientVersion","_transport","_createTransport","auth","_authorization","api_key","Span","namespace","backtrace","__","__extends","setAction","setNamespace","isError","tags","toHashMapString","setParams","setBreadcrumbs","breadcrumbs","Queue","drain","api","_retries","_timerID","_duration","_api","_queue","limit","initialDuration","schedule","expDuration","e_2_1","e_2","_c","Appsignal","VERSION","ignored","_breadcrumbs","_hooks","decorators","overrides","_env","revision","ignoreErrors","_dispatcher","_options","tagsOrFn","error_1","_createSpanFromError","sendError","use","environment","e_1","addDecorator","decorator","addOverride","override","demo","demo_sample","addBreadcrumb","breadcrumb","crumb","metadata","category","unshift","definitionsFromContext","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","wait","DOMContentLoaded","abort","animationcancel","animationend","animationiteration","animationstart","auxclick","change","compositionend","compositionstart","compositionupdate","contextmenu","copy","cut","dblclick","drag","dragend","dragenter","dragleave","dragover","dragstart","focusin","focusout","fullscreenchange","fullscreenerror","hashchange","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","paste","pointercancel","pointerdown","pointerlockchange","pointerlockerror","pointermove","pointerout","pointerover","pointerup","popstate","select","submit","touchcancel","touchend","touchmove","touchstart","transitioncancel","transitionend","transitionrun","transitionstart","visibilitychange","wheel","initializedEvents","composed","debouncedEvent","initializeEvent","debouncedDispatch","evts","webpackPolyfill","paths","APPSIGNAL_JAVASCRIPT_API_KEY","require","debounced","webpackContext","webpackContextResolve","code","initSelect2","initForReflex","ApplicationController","countCheckboxes","CheckboxSelectAll","vat_value","vatTarget","agb_value","agbTarget","kvk_value","kvkTarget","company_value","companyTarget","_connected","_disconnected","_received","messagesTarget","scrollToBottom","hidden","destroyed","replaceWith","conversation_containerTarget","initDefaultDatatable","onEnd","updatePosition","sgid","field_order","keyCode","hourId","hourIdTarget","hourRejection","hourRejectionTarget","conversationlistTarget","columnLeft","onAdd","columnRight","landing_block_type","landingblocktype","intervalValue","interval","initSubmitFormsWithCtrlEnter","requestSubmit","creator_id","count","new_countTarget","last_messageTarget","channels","webpackEmptyContext","_state","_handled","_value","_deferreds","onFulfilled","onRejected","setImmediate","all","race","_setImmediateFn","_setUnhandledRejectionFn","customElements","registerElement","A","uid_","nodes_","observer","removeTransientObservers","callback_","enqueue","records_","C","previousSibling","attributeNamespace","transientObservedNodes","JsMutationObserver","postMessage","ShadowDOMPolyfill","wrapIfNeeded","characterData","attributeFilter","characterDataOldValue","SyntaxError","removeListeners","addListeners","addListeners_","removeListeners_","addTransientObserver","relatedNode","attrChange","MutationEvent","ADDITION","prevValue","_isPolyfilled","performance","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","WebComponents","CustomElements","flags","addModule","initializeModules","hasNative","isIE","useNative","HTMLImports","firstElementChild","olderShadowRoot","import","IMPORT_LINK_TYPE","forDocumentTree","forSubtree","upgrade","__upgraded__","__attached","attachedCallback","detachedCallback","URL","_URL","DOCUMENT_FRAGMENT_NODE","E","__observer","baseURI","hasPolyfillMutations","hasThrottledAttached","S","createShadowRoot","watchShadow","__watched","upgradeDocumentTree","upgradeDocument","upgradeSubtree","upgradeAll","attached","createdCallback","HTMLElement","native","HTMLTemplateElement","decorate","getRegisteredDefinition","tag","extends","upgradeWithDefinition","implementPrototype","_polyfilled","attributeChangedCallback","__name","lifecycle","ancestry","ready","registry","instanceof","reservedTagList","readyTime","elapsed","unwrap","unwrapIfNeeded","__importsParsingHook","eager","attachEvent","Trix","ZERO_WIDTH_SPACE","NON_BREAKING_SPACE","OBJECT_REPLACEMENT_CHARACTER","composesExistingText","forcesObjectResizing","supportsInputEvents","InputEvent","config","BasicObject","proxyMethod","toMethod","toProperty","optional","__super__","fromJSONString","fromJSON","hasSameConstructorAs","isEqualTo","inspect","contentsForInspection","toJSONString","toUTF16String","UTF16String","box","getCacheKey","defer","normalizeSpaces","normalizeNewlines","breakableWhitespacePattern","squishBreakableWhitespace","summarizeStringChange","added","removed","utf16String","offset","codepoints","fromCodepoints","_t2","copyObject","objectsAreEqual","arraysAreEqual","arrayStartsWith","spliceArray","summarizeArrayChange","getAllAttributeNames","getTextAttributeNames","getBlockAttributeNames","getBlockConfig","blockAttributes","getTextConfig","textAttributes","getListAttributeNames","listAttribute","onElement","matchingSelector","withCallback","inPhase","times","findClosestElementFromNode","handleEventOnce","triggerEvent","elementMatchesSelector","untilNode","findInnerElement","innerElementIsActive","elementContainsNode","findNodeFromContainerAndOffset","TEXT_NODE","findElementFromContainerAndOffset","findChildIndexOfNode","walkTree","onlyNodesOfType","usingFilter","expandEntityReferences","NodeFilter","SHOW_ELEMENT","SHOW_TEXT","SHOW_COMMENT","SHOW_ALL","createTreeWalker","makeElement","editable","contenteditable","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","getDOMSelection","rangeCount","getDOMRange","getRangeAt","setDOMRange","addRange","selectionChangeObserver","update","_t4","startContainer","endContainer","dataTransferIsPlainText","dataTransferIsWritable","keyEventIsKeyboardCommand","platform","RTL_PATTERN","getDirection","dirName","Hash","fromCommonAttributesOfObjects","getKeys","getKeysCommonToHash","merge","isEmpty","toObject","ObjectGroup","objects","asTree","groupObjects","canBeGrouped","canBeGroupedWith","getObjects","getDepth","_t5","ObjectMap","ElementStore","trixStoreKey","_t6","Operation","isPerforming","performing","hasPerformed","performed","hasSucceeded","succeeded","hasFailed","getPromise","release","ucs2String","ucs2Length","fromUCS2String","offsetToUCS2Offset","offsetFromUCS2Offset","codePointAt","fromCodePoint","lang","attachFiles","bold","bullets","captionPlaceholder","heading1","indent","italic","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","plaintext","bulletList","bullet","numberList","exclusive","fileSize","precision","formatter","byte","toFixed","inheritable","fontWeight","fontStyle","groupTagName","frozen","backgroundColor","serializers","Document","fromHTML","toSerializableDocument","DocumentView","render","deserializers","serializeToContentType","deserializeFromContentType","toolbar","getDefaultHTML","undoInterval","attachments","preview","presentation","caption","keyNames","level2Enabled","getLevel","pickFiles","multiple","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","InputController","handlerFor","editorWillSyncDocumentView","editorDidSyncDocumentView","requestRender","inputControllerDidRequestRender","requestReparse","inputControllerDidRequestReparse","handleInput","inputControllerWillAttachFiles","responder","insertFiles","inputControllerWillHandleInput","inputControllerDidHandleInput","createLinkHTML","Level0InputController","resetInputSummary","setInputSummary","inputSummary","isComposing","inputControllerDidAllowUnhandledInput","mutationIsExpected","preferDocument","didDelete","getSelectedRange","positionIsBlockBreak","compositionInput","getEndData","didInput","keyName","inputControllerDidReceiveKeyboardCommand","keypress","altKey","inputControllerWillPerformTyping","insertString","selectionIsExpanded","textInput","setSelectedRange","serializeSelectionToDataTransfer","draggedRange","inputControllerDidStartDrag","canAcceptDataTransfer","draggingPoint","inputControllerDidReceiveDragOverPoint","inputControllerDidCancelDrag","setLocationRangeFromPointRange","inputControllerWillMoveText","moveTextFromRange","insertDocument","clipboardData","inputControllerWillCutText","deleteInDirection","R","D","L","testClipboardData","clipboard","getPastedHTMLUsingHiddenElement","inputControllerWillPaste","insertHTML","inputControllerDidPaste","types","getAsFile","insertFile","getCompositionInput","beforeinput","backspace","insertLineBreak","tab","canIncreaseNestingLevel","increaseNestingLevel","selectionIsInCursorTarget","moveCursorInDirection","control","canDecreaseNestingLevel","decreaseNestingLevel","expandSelectionInDirection","alt","isEnded","getSelectedDocument","Files","pageXOffset","pageYOffset","opacity","which","charCode","inputController","isSignificant","insertPlaceholder","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","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","trixAction","getFilename","getFormattedFilesize","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","CompositionController","composition","didClickAttachment","didBlur","didFocus","documentView","focused","compositionControllerDidFocus","blurPromise","compositionControllerDidBlur","findAttachmentForElement","compositionControllerDidSelectAttachment","getSerializableElement","isEditingAttachment","canSyncDocumentView","compositionControllerWillSyncDocumentView","compositionControllerDidSyncDocumentView","compositionControllerDidRender","rerenderViewForObject","refreshViewCache","attachmentEditor","installAttachmentEditorForAttachment","uninstallAttachmentEditor","getAttachmentPieceForAttachment","compositionControllerWillUpdateAttachment","updateAttributesForAttachment","removeAttributeForAttachment","compositionControllerDidRequestRemovalOfAttachment","compositionControllerDidRequestDeselectingAttachment","getAttachmentById","ToolbarController","didKeyDownDialogInput","didClickDialogButton","didClickAttributeButton","resetDialogInputs","toolbarDidClickButton","getDialog","toggleDialog","toolbarDidInvokeAction","toolbarDidToggleAttribute","refreshAttributeButtons","hideDialog","updateActions","refreshActionButtons","eachActionButton","updateAttributes","eachAttributeButton","dialogIsVisible","applyKeyboardCommand","showDialog","toolbarWillShowDialog","toolbarDidShowDialog","willValidate","checkValidity","toolbarDidUpdateAttribute","toolbarDidRemoveAttribute","toolbarDidHideDialog","_t12","ImagePreloadOperation","Image","naturalWidth","naturalHeight","_t13","Attachment","releaseFile","didChangeAttributes","previewablePattern","attachmentForFile","attributesForFile","setFile","filesize","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","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","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","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","Timeout","clearFn","_id","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","task","AttachmentUpload","directUploadUrl","directUploadDidComplete","attachable_sgid","createBlobUrl","signedId","blobUrlTemplate"],"mappings":"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","file":"js/application-68ebe9a5b9846092b4ce.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 = 68);\n","module.exports = require(\"regenerator-runtime\");\n","import { Controller } from 'stimulus'\nimport StimulusReflex from 'stimulus_reflex'\n\n/* This is your ApplicationController.\n * All StimulusReflex controllers should inherit from this class.\n *\n * Example:\n *\n * import ApplicationController from './application_controller'\n *\n * export default class extends ApplicationController { ... }\n *\n * Learn more at: https://docs.stimulusreflex.com\n */\nexport default class extends Controller {\n connect () {\n StimulusReflex.register(this);\n }\n\n /* Application-wide lifecycle methods\n *\n * Use these methods to handle lifecycle concerns for the entire application.\n * Using the lifecycle is optional, so feel free to delete these stubs if you don't need them.\n *\n * Arguments:\n *\n * element - the element that triggered the reflex\n * may be different than the Stimulus controller's this.element\n *\n * reflex - the name of the reflex e.g. \"Example#demo\"\n *\n * error/noop - the error message (for reflexError), otherwise null\n *\n * reflexId - a UUID4 or developer-provided unique identifier for each Reflex\n */\n\n beforeReflex (element, reflex, noop, reflexId) {\n // document.body.classList.add('wait')\n }\n\n reflexSuccess (element, reflex, noop, reflexId) {\n // show success message etc...\n }\n\n reflexError (element, reflex, error, reflexId) {\n // show error message etc...\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n // document.body.classList.remove('wait')\n }\n\n notify(message) {\n // Let's check if the browser supports notifications\n if (!(\"Notification\" in window)) {\n console.error(\"This browser does not support desktop notification\");\n }\n\n // Let's check whether notification permissions have already been granted\n else if (Notification.permission === \"granted\") {\n // If it's okay let's create a notification\n var notification = new Notification(message);\n } else {\n console.error(\"Notifications not granted\");\n }\n }\n\n}\n","var DOCUMENT_FRAGMENT_NODE = 11;\n\nfunction morphAttrs(fromNode, toNode) {\n var toNodeAttrs = toNode.attributes;\n var attr;\n var attrName;\n var attrNamespaceURI;\n var attrValue;\n var fromValue; // document-fragments dont have attributes so lets not do anything\n\n if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE || fromNode.nodeType === DOCUMENT_FRAGMENT_NODE) {\n return;\n } // update attributes on original DOM element\n\n\n for (var i = toNodeAttrs.length - 1; i >= 0; i--) {\n attr = toNodeAttrs[i];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n attrValue = attr.value;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n\n if (fromValue !== attrValue) {\n if (attr.prefix === 'xmlns') {\n attrName = attr.name; // It's not allowed to set an attribute with the XMLNS namespace without specifying the `xmlns` prefix\n }\n\n fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n }\n } else {\n fromValue = fromNode.getAttribute(attrName);\n\n if (fromValue !== attrValue) {\n fromNode.setAttribute(attrName, attrValue);\n }\n }\n } // Remove any extra attributes found on the original DOM element that\n // weren't found on the target element.\n\n\n var fromNodeAttrs = fromNode.attributes;\n\n for (var d = fromNodeAttrs.length - 1; d >= 0; d--) {\n attr = fromNodeAttrs[d];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n\n if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n }\n } else {\n if (!toNode.hasAttribute(attrName)) {\n fromNode.removeAttribute(attrName);\n }\n }\n }\n}\n\nvar range; // Create a range object for efficently rendering strings to elements.\n\nvar NS_XHTML = 'http://www.w3.org/1999/xhtml';\nvar doc = typeof document === 'undefined' ? undefined : document;\nvar HAS_TEMPLATE_SUPPORT = !!doc && 'content' in doc.createElement('template');\nvar HAS_RANGE_SUPPORT = !!doc && doc.createRange && 'createContextualFragment' in doc.createRange();\n\nfunction createFragmentFromTemplate(str) {\n var template = doc.createElement('template');\n template.innerHTML = str;\n return template.content.childNodes[0];\n}\n\nfunction createFragmentFromRange(str) {\n if (!range) {\n range = doc.createRange();\n range.selectNode(doc.body);\n }\n\n var fragment = range.createContextualFragment(str);\n return fragment.childNodes[0];\n}\n\nfunction createFragmentFromWrap(str) {\n var fragment = doc.createElement('body');\n fragment.innerHTML = str;\n return fragment.childNodes[0];\n}\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */\n\n\nfunction toElement(str) {\n str = str.trim();\n\n if (HAS_TEMPLATE_SUPPORT) {\n // avoid restrictions on content for things like `<tr><th>Hi</th></tr>` which\n // createContextualFragment doesn't support\n // <template> support not available in IE\n return createFragmentFromTemplate(str);\n } else if (HAS_RANGE_SUPPORT) {\n return createFragmentFromRange(str);\n }\n\n return createFragmentFromWrap(str);\n}\n/**\n * Returns true if two node's names are the same.\n *\n * NOTE: We don't bother checking `namespaceURI` because you will never find two HTML elements with the same\n * nodeName and different namespace URIs.\n *\n * @param {Element} a\n * @param {Element} b The target element\n * @return {boolean}\n */\n\n\nfunction compareNodeNames(fromEl, toEl) {\n var fromNodeName = fromEl.nodeName;\n var toNodeName = toEl.nodeName;\n var fromCodeStart, toCodeStart;\n\n if (fromNodeName === toNodeName) {\n return true;\n }\n\n fromCodeStart = fromNodeName.charCodeAt(0);\n toCodeStart = toNodeName.charCodeAt(0); // If the target element is a virtual DOM node or SVG node then we may\n // need to normalize the tag name before comparing. Normal HTML elements that are\n // in the \"http://www.w3.org/1999/xhtml\"\n // are converted to upper case\n\n if (fromCodeStart <= 90 && toCodeStart >= 97) {\n // from is upper and to is lower\n return fromNodeName === toNodeName.toUpperCase();\n } else if (toCodeStart <= 90 && fromCodeStart >= 97) {\n // to is upper and from is lower\n return toNodeName === fromNodeName.toUpperCase();\n } else {\n return false;\n }\n}\n/**\n * Create an element, optionally with a known namespace URI.\n *\n * @param {string} name the element name, e.g. 'div' or 'svg'\n * @param {string} [namespaceURI] the element's namespace URI, i.e. the value of\n * its `xmlns` attribute or its inferred namespace.\n *\n * @return {Element}\n */\n\n\nfunction createElementNS(name, namespaceURI) {\n return !namespaceURI || namespaceURI === NS_XHTML ? doc.createElement(name) : doc.createElementNS(namespaceURI, name);\n}\n/**\n * Copies the children of one DOM element to another DOM element\n */\n\n\nfunction moveChildren(fromEl, toEl) {\n var curChild = fromEl.firstChild;\n\n while (curChild) {\n var nextChild = curChild.nextSibling;\n toEl.appendChild(curChild);\n curChild = nextChild;\n }\n\n return toEl;\n}\n\nfunction syncBooleanAttrProp(fromEl, toEl, name) {\n if (fromEl[name] !== toEl[name]) {\n fromEl[name] = toEl[name];\n\n if (fromEl[name]) {\n fromEl.setAttribute(name, '');\n } else {\n fromEl.removeAttribute(name);\n }\n }\n}\n\nvar specialElHandlers = {\n OPTION: function OPTION(fromEl, toEl) {\n var parentNode = fromEl.parentNode;\n\n if (parentNode) {\n var parentName = parentNode.nodeName.toUpperCase();\n\n if (parentName === 'OPTGROUP') {\n parentNode = parentNode.parentNode;\n parentName = parentNode && parentNode.nodeName.toUpperCase();\n }\n\n if (parentName === 'SELECT' && !parentNode.hasAttribute('multiple')) {\n if (fromEl.hasAttribute('selected') && !toEl.selected) {\n // Workaround for MS Edge bug where the 'selected' attribute can only be\n // removed if set to a non-empty value:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12087679/\n fromEl.setAttribute('selected', 'selected');\n fromEl.removeAttribute('selected');\n } // We have to reset select element's selectedIndex to -1, otherwise setting\n // fromEl.selected using the syncBooleanAttrProp below has no effect.\n // The correct selectedIndex will be set in the SELECT special handler below.\n\n\n parentNode.selectedIndex = -1;\n }\n }\n\n syncBooleanAttrProp(fromEl, toEl, 'selected');\n },\n\n /**\n * The \"value\" attribute is special for the <input> element since it sets\n * the initial value. Changing the \"value\" attribute without changing the\n * \"value\" property will have no effect since it is only used to the set the\n * initial value. Similar for the \"checked\" attribute, and \"disabled\".\n */\n INPUT: function INPUT(fromEl, toEl) {\n syncBooleanAttrProp(fromEl, toEl, 'checked');\n syncBooleanAttrProp(fromEl, toEl, 'disabled');\n\n if (fromEl.value !== toEl.value) {\n fromEl.value = toEl.value;\n }\n\n if (!toEl.hasAttribute('value')) {\n fromEl.removeAttribute('value');\n }\n },\n TEXTAREA: function TEXTAREA(fromEl, toEl) {\n var newValue = toEl.value;\n\n if (fromEl.value !== newValue) {\n fromEl.value = newValue;\n }\n\n var firstChild = fromEl.firstChild;\n\n if (firstChild) {\n // Needed for IE. Apparently IE sets the placeholder as the\n // node value and vise versa. This ignores an empty update.\n var oldValue = firstChild.nodeValue;\n\n if (oldValue == newValue || !newValue && oldValue == fromEl.placeholder) {\n return;\n }\n\n firstChild.nodeValue = newValue;\n }\n },\n SELECT: function SELECT(fromEl, toEl) {\n if (!toEl.hasAttribute('multiple')) {\n var selectedIndex = -1;\n var i = 0; // We have to loop through children of fromEl, not toEl since nodes can be moved\n // from toEl to fromEl directly when morphing.\n // At the time this special handler is invoked, all children have already been morphed\n // and appended to / removed from fromEl, so using fromEl here is safe and correct.\n\n var curChild = fromEl.firstChild;\n var optgroup;\n var nodeName;\n\n while (curChild) {\n nodeName = curChild.nodeName && curChild.nodeName.toUpperCase();\n\n if (nodeName === 'OPTGROUP') {\n optgroup = curChild;\n curChild = optgroup.firstChild;\n } else {\n if (nodeName === 'OPTION') {\n if (curChild.hasAttribute('selected')) {\n selectedIndex = i;\n break;\n }\n\n i++;\n }\n\n curChild = curChild.nextSibling;\n\n if (!curChild && optgroup) {\n curChild = optgroup.nextSibling;\n optgroup = null;\n }\n }\n }\n\n fromEl.selectedIndex = selectedIndex;\n }\n }\n};\nvar ELEMENT_NODE = 1;\nvar DOCUMENT_FRAGMENT_NODE$1 = 11;\nvar TEXT_NODE = 3;\nvar COMMENT_NODE = 8;\n\nfunction noop() {}\n\nfunction defaultGetNodeKey(node) {\n if (node) {\n return node.getAttribute && node.getAttribute('id') || node.id;\n }\n}\n\nfunction morphdomFactory(morphAttrs) {\n return function morphdom(fromNode, toNode, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof toNode === 'string') {\n if (fromNode.nodeName === '#document' || fromNode.nodeName === 'HTML' || fromNode.nodeName === 'BODY') {\n var toNodeHtml = toNode;\n toNode = doc.createElement('html');\n toNode.innerHTML = toNodeHtml;\n } else {\n toNode = toElement(toNode);\n }\n }\n\n var getNodeKey = options.getNodeKey || defaultGetNodeKey;\n var onBeforeNodeAdded = options.onBeforeNodeAdded || noop;\n var onNodeAdded = options.onNodeAdded || noop;\n var onBeforeElUpdated = options.onBeforeElUpdated || noop;\n var onElUpdated = options.onElUpdated || noop;\n var onBeforeNodeDiscarded = options.onBeforeNodeDiscarded || noop;\n var onNodeDiscarded = options.onNodeDiscarded || noop;\n var onBeforeElChildrenUpdated = options.onBeforeElChildrenUpdated || noop;\n var childrenOnly = options.childrenOnly === true; // This object is used as a lookup to quickly find all keyed elements in the original DOM tree.\n\n var fromNodesLookup = Object.create(null);\n var keyedRemovalList = [];\n\n function addKeyedRemoval(key) {\n keyedRemovalList.push(key);\n }\n\n function walkDiscardedChildNodes(node, skipKeyedNodes) {\n if (node.nodeType === ELEMENT_NODE) {\n var curChild = node.firstChild;\n\n while (curChild) {\n var key = undefined;\n\n if (skipKeyedNodes && (key = getNodeKey(curChild))) {\n // If we are skipping keyed nodes then we add the key\n // to a list so that it can be handled at the very end.\n addKeyedRemoval(key);\n } else {\n // Only report the node as discarded if it is not keyed. We do this because\n // at the end we loop through all keyed elements that were unmatched\n // and then discard them in one final pass.\n onNodeDiscarded(curChild);\n\n if (curChild.firstChild) {\n walkDiscardedChildNodes(curChild, skipKeyedNodes);\n }\n }\n\n curChild = curChild.nextSibling;\n }\n }\n }\n /**\n * Removes a DOM node out of the original DOM\n *\n * @param {Node} node The node to remove\n * @param {Node} parentNode The nodes parent\n * @param {Boolean} skipKeyedNodes If true then elements with keys will be skipped and not discarded.\n * @return {undefined}\n */\n\n\n function removeNode(node, parentNode, skipKeyedNodes) {\n if (onBeforeNodeDiscarded(node) === false) {\n return;\n }\n\n if (parentNode) {\n parentNode.removeChild(node);\n }\n\n onNodeDiscarded(node);\n walkDiscardedChildNodes(node, skipKeyedNodes);\n } // // TreeWalker implementation is no faster, but keeping this around in case this changes in the future\n // function indexTree(root) {\n // var treeWalker = document.createTreeWalker(\n // root,\n // NodeFilter.SHOW_ELEMENT);\n //\n // var el;\n // while((el = treeWalker.nextNode())) {\n // var key = getNodeKey(el);\n // if (key) {\n // fromNodesLookup[key] = el;\n // }\n // }\n // }\n // // NodeIterator implementation is no faster, but keeping this around in case this changes in the future\n //\n // function indexTree(node) {\n // var nodeIterator = document.createNodeIterator(node, NodeFilter.SHOW_ELEMENT);\n // var el;\n // while((el = nodeIterator.nextNode())) {\n // var key = getNodeKey(el);\n // if (key) {\n // fromNodesLookup[key] = el;\n // }\n // }\n // }\n\n\n function indexTree(node) {\n if (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE$1) {\n var curChild = node.firstChild;\n\n while (curChild) {\n var key = getNodeKey(curChild);\n\n if (key) {\n fromNodesLookup[key] = curChild;\n } // Walk recursively\n\n\n indexTree(curChild);\n curChild = curChild.nextSibling;\n }\n }\n }\n\n indexTree(fromNode);\n\n function handleNodeAdded(el) {\n onNodeAdded(el);\n var curChild = el.firstChild;\n\n while (curChild) {\n var nextSibling = curChild.nextSibling;\n var key = getNodeKey(curChild);\n\n if (key) {\n var unmatchedFromEl = fromNodesLookup[key]; // if we find a duplicate #id node in cache, replace `el` with cache value\n // and morph it to the child node.\n\n if (unmatchedFromEl && compareNodeNames(curChild, unmatchedFromEl)) {\n curChild.parentNode.replaceChild(unmatchedFromEl, curChild);\n morphEl(unmatchedFromEl, curChild);\n } else {\n handleNodeAdded(curChild);\n }\n } else {\n // recursively call for curChild and it's children to see if we find something in\n // fromNodesLookup\n handleNodeAdded(curChild);\n }\n\n curChild = nextSibling;\n }\n }\n\n function cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey) {\n // We have processed all of the \"to nodes\". If curFromNodeChild is\n // non-null then we still have some from nodes left over that need\n // to be removed\n while (curFromNodeChild) {\n var fromNextSibling = curFromNodeChild.nextSibling;\n\n if (curFromNodeKey = getNodeKey(curFromNodeChild)) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true\n /* skip keyed nodes */\n );\n }\n\n curFromNodeChild = fromNextSibling;\n }\n }\n\n function morphEl(fromEl, toEl, childrenOnly) {\n var toElKey = getNodeKey(toEl);\n\n if (toElKey) {\n // If an element with an ID is being morphed then it will be in the final\n // DOM so clear it out of the saved elements collection\n delete fromNodesLookup[toElKey];\n }\n\n if (!childrenOnly) {\n // optional\n if (onBeforeElUpdated(fromEl, toEl) === false) {\n return;\n } // update attributes on original DOM element first\n\n\n morphAttrs(fromEl, toEl); // optional\n\n onElUpdated(fromEl);\n\n if (onBeforeElChildrenUpdated(fromEl, toEl) === false) {\n return;\n }\n }\n\n if (fromEl.nodeName !== 'TEXTAREA') {\n morphChildren(fromEl, toEl);\n } else {\n specialElHandlers.TEXTAREA(fromEl, toEl);\n }\n }\n\n function morphChildren(fromEl, toEl) {\n var curToNodeChild = toEl.firstChild;\n var curFromNodeChild = fromEl.firstChild;\n var curToNodeKey;\n var curFromNodeKey;\n var fromNextSibling;\n var toNextSibling;\n var matchingFromEl; // walk the children\n\n outer: while (curToNodeChild) {\n toNextSibling = curToNodeChild.nextSibling;\n curToNodeKey = getNodeKey(curToNodeChild); // walk the fromNode children all the way through\n\n while (curFromNodeChild) {\n fromNextSibling = curFromNodeChild.nextSibling;\n\n if (curToNodeChild.isSameNode && curToNodeChild.isSameNode(curFromNodeChild)) {\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n continue outer;\n }\n\n curFromNodeKey = getNodeKey(curFromNodeChild);\n var curFromNodeType = curFromNodeChild.nodeType; // this means if the curFromNodeChild doesnt have a match with the curToNodeChild\n\n var isCompatible = undefined;\n\n if (curFromNodeType === curToNodeChild.nodeType) {\n if (curFromNodeType === ELEMENT_NODE) {\n // Both nodes being compared are Element nodes\n if (curToNodeKey) {\n // The target node has a key so we want to match it up with the correct element\n // in the original DOM tree\n if (curToNodeKey !== curFromNodeKey) {\n // The current element in the original DOM tree does not have a matching key so\n // let's check our lookup to see if there is a matching element in the original\n // DOM tree\n if (matchingFromEl = fromNodesLookup[curToNodeKey]) {\n if (fromNextSibling === matchingFromEl) {\n // Special case for single element removals. To avoid removing the original\n // DOM node out of the tree (since that can break CSS transitions, etc.),\n // we will instead discard the current node and wait until the next\n // iteration to properly match up the keyed target element with its matching\n // element in the original tree\n isCompatible = false;\n } else {\n // We found a matching keyed element somewhere in the original DOM tree.\n // Let's move the original DOM node into the current position and morph\n // it.\n // NOTE: We use insertBefore instead of replaceChild because we want to go through\n // the `removeNode()` function for the node that is being discarded so that\n // all lifecycle hooks are correctly invoked\n fromEl.insertBefore(matchingFromEl, curFromNodeChild); // fromNextSibling = curFromNodeChild.nextSibling;\n\n if (curFromNodeKey) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true\n /* skip keyed nodes */\n );\n }\n\n curFromNodeChild = matchingFromEl;\n }\n } else {\n // The nodes are not compatible since the \"to\" node has a key and there\n // is no matching keyed node in the source tree\n isCompatible = false;\n }\n }\n } else if (curFromNodeKey) {\n // The original has a key\n isCompatible = false;\n }\n\n isCompatible = isCompatible !== false && compareNodeNames(curFromNodeChild, curToNodeChild);\n\n if (isCompatible) {\n // We found compatible DOM elements so transform\n // the current \"from\" node to match the current\n // target DOM node.\n // MORPH\n morphEl(curFromNodeChild, curToNodeChild);\n }\n } else if (curFromNodeType === TEXT_NODE || curFromNodeType == COMMENT_NODE) {\n // Both nodes being compared are Text or Comment nodes\n isCompatible = true; // Simply update nodeValue on the original node to\n // change the text value\n\n if (curFromNodeChild.nodeValue !== curToNodeChild.nodeValue) {\n curFromNodeChild.nodeValue = curToNodeChild.nodeValue;\n }\n }\n }\n\n if (isCompatible) {\n // Advance both the \"to\" child and the \"from\" child since we found a match\n // Nothing else to do as we already recursively called morphChildren above\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n continue outer;\n } // No compatible match so remove the old node from the DOM and continue trying to find a\n // match in the original DOM. However, we only do this if the from node is not keyed\n // since it is possible that a keyed node might match up with a node somewhere else in the\n // target tree and we don't want to discard it just yet since it still might find a\n // home in the final DOM tree. After everything is done we will remove any keyed nodes\n // that didn't find a home\n\n\n if (curFromNodeKey) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true\n /* skip keyed nodes */\n );\n }\n\n curFromNodeChild = fromNextSibling;\n } // END: while(curFromNodeChild) {}\n // If we got this far then we did not find a candidate match for\n // our \"to node\" and we exhausted all of the children \"from\"\n // nodes. Therefore, we will just append the current \"to\" node\n // to the end\n\n\n if (curToNodeKey && (matchingFromEl = fromNodesLookup[curToNodeKey]) && compareNodeNames(matchingFromEl, curToNodeChild)) {\n fromEl.appendChild(matchingFromEl); // MORPH\n\n morphEl(matchingFromEl, curToNodeChild);\n } else {\n var onBeforeNodeAddedResult = onBeforeNodeAdded(curToNodeChild);\n\n if (onBeforeNodeAddedResult !== false) {\n if (onBeforeNodeAddedResult) {\n curToNodeChild = onBeforeNodeAddedResult;\n }\n\n if (curToNodeChild.actualize) {\n curToNodeChild = curToNodeChild.actualize(fromEl.ownerDocument || doc);\n }\n\n fromEl.appendChild(curToNodeChild);\n handleNodeAdded(curToNodeChild);\n }\n }\n\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n }\n\n cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey);\n var specialElHandler = specialElHandlers[fromEl.nodeName];\n\n if (specialElHandler) {\n specialElHandler(fromEl, toEl);\n }\n } // END: morphChildren(...)\n\n\n var morphedNode = fromNode;\n var morphedNodeType = morphedNode.nodeType;\n var toNodeType = toNode.nodeType;\n\n if (!childrenOnly) {\n // Handle the case where we are given two DOM nodes that are not\n // compatible (e.g. <div> --> <span> or <div> --> TEXT)\n if (morphedNodeType === ELEMENT_NODE) {\n if (toNodeType === ELEMENT_NODE) {\n if (!compareNodeNames(fromNode, toNode)) {\n onNodeDiscarded(fromNode);\n morphedNode = moveChildren(fromNode, createElementNS(toNode.nodeName, toNode.namespaceURI));\n }\n } else {\n // Going from an element node to a text node\n morphedNode = toNode;\n }\n } else if (morphedNodeType === TEXT_NODE || morphedNodeType === COMMENT_NODE) {\n // Text or comment node\n if (toNodeType === morphedNodeType) {\n if (morphedNode.nodeValue !== toNode.nodeValue) {\n morphedNode.nodeValue = toNode.nodeValue;\n }\n\n return morphedNode;\n } else {\n // Text node to something else\n morphedNode = toNode;\n }\n }\n }\n\n if (morphedNode === toNode) {\n // The \"to node\" was not compatible with the \"from node\" so we had to\n // toss out the \"from node\" and use the \"to node\"\n onNodeDiscarded(fromNode);\n } else {\n if (toNode.isSameNode && toNode.isSameNode(morphedNode)) {\n return;\n }\n\n morphEl(morphedNode, toNode, childrenOnly); // We now need to loop over any keyed nodes that might need to be\n // removed. We only do the removal if we know that the keyed node\n // never found a match. When a keyed node is matched up we remove\n // it out of fromNodesLookup and we use fromNodesLookup to determine\n // if a keyed node has been matched up or not\n\n if (keyedRemovalList) {\n for (var i = 0, len = keyedRemovalList.length; i < len; i++) {\n var elToRemove = fromNodesLookup[keyedRemovalList[i]];\n\n if (elToRemove) {\n removeNode(elToRemove, elToRemove.parentNode, false);\n }\n }\n }\n }\n\n if (!childrenOnly && morphedNode !== fromNode && fromNode.parentNode) {\n if (morphedNode.actualize) {\n morphedNode = morphedNode.actualize(fromNode.ownerDocument || doc);\n } // If we had to swap out the from node with a new node because the old\n // node was not compatible with the target node then we need to\n // replace the old DOM node in the original DOM tree. This is only\n // possible if the original DOM node was part of a DOM tree which\n // we know is the case if it has a parent node.\n\n\n fromNode.parentNode.replaceChild(morphedNode, fromNode);\n }\n\n return morphedNode;\n };\n}\n\nvar morphdom = morphdomFactory(morphAttrs);\nexport default morphdom;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport morphdom from 'morphdom';\nimport { verifyNotMutable, verifyNotPermanent } from './callbacks';\nimport { assignFocus, dispatch, xpathToElement, getClassNames, processElements } from './utils';\nexport var activeElement;\nvar shouldMorphCallbacks = [verifyNotMutable, verifyNotPermanent];\nvar didMorphCallbacks = []; // Indicates whether or not we should morph an element via onBeforeElUpdated callback\n// SEE: https://github.com/patrick-steele-idem/morphdom#morphdomfromnode-tonode-options--node\n//\n\nvar shouldMorph = function shouldMorph(operation) {\n return function (fromEl, toEl) {\n return !shouldMorphCallbacks.map(function (callback) {\n return typeof callback === 'function' ? callback(operation, fromEl, toEl) : true;\n }).includes(false);\n };\n}; // Execute any pluggable functions that modify elements after morphing via onElUpdated callback\n//\n\n\nvar didMorph = function didMorph(operation) {\n return function (el) {\n didMorphCallbacks.forEach(function (callback) {\n if (typeof callback === 'function') callback(operation, el);\n });\n };\n};\n\nvar DOMOperations = {\n // DOM Mutations\n append: function append(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-append', operation);\n var html = operation.html,\n focusSelector = operation.focusSelector;\n\n if (!operation.cancel) {\n element.insertAdjacentHTML('beforeend', html);\n assignFocus(focusSelector);\n }\n\n dispatch(element, 'cable-ready:after-append', operation);\n });\n },\n graft: function graft(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-graft', operation);\n var parent = operation.parent,\n focusSelector = operation.focusSelector;\n var parentElement = document.querySelector(parent);\n\n if (!operation.cancel && parentElement) {\n parentElement.appendChild(element);\n assignFocus(focusSelector);\n }\n\n dispatch(element, 'cable-ready:after-graft', operation);\n });\n },\n innerHtml: function innerHtml(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-inner-html', operation);\n var html = operation.html,\n focusSelector = operation.focusSelector;\n\n if (!operation.cancel) {\n element.innerHTML = html;\n assignFocus(focusSelector);\n }\n\n dispatch(element, 'cable-ready:after-inner-html', operation);\n });\n },\n insertAdjacentHtml: function insertAdjacentHtml(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-insert-adjacent-html', operation);\n var html = operation.html,\n position = operation.position,\n focusSelector = operation.focusSelector;\n\n if (!operation.cancel) {\n element.insertAdjacentHTML(position || 'beforeend', html);\n assignFocus(focusSelector);\n }\n\n dispatch(element, 'cable-ready:after-insert-adjacent-html', operation);\n });\n },\n insertAdjacentText: function insertAdjacentText(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-insert-adjacent-text', operation);\n var text = operation.text,\n position = operation.position,\n focusSelector = operation.focusSelector;\n\n if (!operation.cancel) {\n element.insertAdjacentText(position || 'beforeend', text);\n assignFocus(focusSelector);\n }\n\n dispatch(element, 'cable-ready:after-insert-adjacent-text', operation);\n });\n },\n morph: function morph(operation) {\n processElements(operation, function (element) {\n var html = operation.html;\n var template = document.createElement('template');\n template.innerHTML = String(html).trim();\n operation.content = template.content;\n dispatch(element, 'cable-ready:before-morph', operation);\n var childrenOnly = operation.childrenOnly,\n focusSelector = operation.focusSelector;\n var parent = element.parentElement;\n var ordinal = Array.from(parent.children).indexOf(element);\n\n if (!operation.cancel) {\n morphdom(element, childrenOnly ? template.content : template.innerHTML, {\n childrenOnly: !!childrenOnly,\n onBeforeElUpdated: shouldMorph(operation),\n onElUpdated: didMorph(operation)\n });\n assignFocus(focusSelector);\n }\n\n dispatch(parent.children[ordinal], 'cable-ready:after-morph', operation);\n });\n },\n outerHtml: function outerHtml(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-outer-html', operation);\n var html = operation.html,\n focusSelector = operation.focusSelector;\n var parent = element.parentElement;\n var ordinal = Array.from(parent.children).indexOf(element);\n\n if (!operation.cancel) {\n element.outerHTML = html;\n assignFocus(focusSelector);\n }\n\n dispatch(parent.children[ordinal], 'cable-ready:after-outer-html', operation);\n });\n },\n prepend: function prepend(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-prepend', operation);\n var html = operation.html,\n focusSelector = operation.focusSelector;\n\n if (!operation.cancel) {\n element.insertAdjacentHTML('afterbegin', html);\n assignFocus(focusSelector);\n }\n\n dispatch(element, 'cable-ready:after-prepend', operation);\n });\n },\n remove: function remove(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-remove', operation);\n var focusSelector = operation.focusSelector;\n\n if (!operation.cancel) {\n element.remove();\n assignFocus(focusSelector);\n }\n\n dispatch(document, 'cable-ready:after-remove', operation);\n });\n },\n replace: function replace(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-replace', operation);\n var html = operation.html,\n focusSelector = operation.focusSelector;\n var parent = element.parentElement;\n var ordinal = Array.from(parent.children).indexOf(element);\n\n if (!operation.cancel) {\n element.outerHTML = html;\n assignFocus(focusSelector);\n }\n\n dispatch(parent.children[ordinal], 'cable-ready:after-replace', operation);\n });\n },\n textContent: function textContent(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-text-content', operation);\n var text = operation.text,\n focusSelector = operation.focusSelector;\n\n if (!operation.cancel) {\n element.textContent = text;\n assignFocus(focusSelector);\n }\n\n dispatch(element, 'cable-ready:after-text-content', operation);\n });\n },\n // Element Property Mutations\n addCssClass: function addCssClass(operation) {\n processElements(operation, function (element) {\n var _element$classList;\n\n dispatch(element, 'cable-ready:before-add-css-class', operation);\n var name = operation.name;\n if (!operation.cancel) (_element$classList = element.classList).add.apply(_element$classList, _toConsumableArray(getClassNames(name)));\n dispatch(element, 'cable-ready:after-add-css-class', operation);\n });\n },\n removeAttribute: function removeAttribute(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-remove-attribute', operation);\n var name = operation.name;\n if (!operation.cancel) element.removeAttribute(name);\n dispatch(element, 'cable-ready:after-remove-attribute', operation);\n });\n },\n removeCssClass: function removeCssClass(operation) {\n processElements(operation, function (element) {\n var _element$classList2;\n\n dispatch(element, 'cable-ready:before-remove-css-class', operation);\n var name = operation.name;\n if (!operation.cancel) (_element$classList2 = element.classList).remove.apply(_element$classList2, _toConsumableArray(getClassNames(name)));\n dispatch(element, 'cable-ready:after-remove-css-class', operation);\n });\n },\n setAttribute: function setAttribute(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-set-attribute', operation);\n var name = operation.name,\n value = operation.value;\n if (!operation.cancel) element.setAttribute(name, value);\n dispatch(element, 'cable-ready:after-set-attribute', operation);\n });\n },\n setDatasetProperty: function setDatasetProperty(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-set-dataset-property', operation);\n var name = operation.name,\n value = operation.value;\n if (!operation.cancel) element.dataset[name] = value;\n dispatch(element, 'cable-ready:after-set-dataset-property', operation);\n });\n },\n setProperty: function setProperty(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-set-property', operation);\n var name = operation.name,\n value = operation.value;\n if (!operation.cancel && name in element) element[name] = value;\n dispatch(element, 'cable-ready:after-set-property', operation);\n });\n },\n setStyle: function setStyle(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-set-style', operation);\n var name = operation.name,\n value = operation.value;\n if (!operation.cancel) element.style[name] = value;\n dispatch(element, 'cable-ready:after-set-style', operation);\n });\n },\n setStyles: function setStyles(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-set-styles', operation);\n var styles = operation.styles;\n\n for (var _i2 = 0, _Object$entries = Object.entries(styles); _i2 < _Object$entries.length; _i2++) {\n var _ref3 = _Object$entries[_i2];\n\n var _ref2 = _slicedToArray(_ref3, 2);\n\n var name = _ref2[0];\n var value = _ref2[1];\n if (!operation.cancel) element.style[name] = value;\n }\n\n dispatch(element, 'cable-ready:after-set-styles', operation);\n });\n },\n setValue: function setValue(operation) {\n processElements(operation, function (element) {\n dispatch(element, 'cable-ready:before-set-value', operation);\n var value = operation.value;\n if (!operation.cancel) element.value = value;\n dispatch(element, 'cable-ready:after-set-value', operation);\n });\n },\n // DOM Events\n dispatchEvent: function dispatchEvent(operation) {\n processElements(operation, function (element) {\n var name = operation.name,\n detail = operation.detail;\n dispatch(element, name, detail);\n });\n },\n // Browser Manipulations\n clearStorage: function clearStorage(operation) {\n dispatch(document, 'cable-ready:before-clear-storage', operation);\n var type = operation.type;\n var storage = type === 'session' ? sessionStorage : localStorage;\n if (!operation.cancel) storage.clear();\n dispatch(document, 'cable-ready:after-clear-storage', operation);\n },\n go: function go(operation) {\n dispatch(window, 'cable-ready:before-go', operation);\n var delta = operation.delta;\n if (!operation.cancel) history.go(delta);\n dispatch(window, 'cable-ready:after-go', operation);\n },\n pushState: function pushState(operation) {\n dispatch(window, 'cable-ready:before-push-state', operation);\n var state = operation.state,\n title = operation.title,\n url = operation.url;\n if (!operation.cancel) history.pushState(state || {}, title || '', url);\n dispatch(window, 'cable-ready:after-push-state', operation);\n },\n removeStorageItem: function removeStorageItem(operation) {\n dispatch(document, 'cable-ready:before-remove-storage-item', operation);\n var key = operation.key,\n type = operation.type;\n var storage = type === 'session' ? sessionStorage : localStorage;\n if (!operation.cancel) storage.removeItem(key);\n dispatch(document, 'cable-ready:after-remove-storage-item', operation);\n },\n replaceState: function replaceState(operation) {\n dispatch(window, 'cable-ready:before-replace-state', operation);\n var state = operation.state,\n title = operation.title,\n url = operation.url;\n if (!operation.cancel) history.replaceState(state || {}, title || '', url);\n dispatch(window, 'cable-ready:after-replace-state', operation);\n },\n scrollIntoView: function scrollIntoView(operation) {\n var element = operation.element;\n dispatch(element, 'cable-ready:before-scroll-into-view', operation);\n if (!operation.cancel) element.scrollIntoView(operation);\n dispatch(element, 'cable-ready:after-scroll-into-view', operation);\n },\n setCookie: function setCookie(operation) {\n dispatch(document, 'cable-ready:before-set-cookie', operation);\n var cookie = operation.cookie;\n if (!operation.cancel) document.cookie = cookie;\n dispatch(document, 'cable-ready:after-set-cookie', operation);\n },\n setFocus: function setFocus(operation) {\n var element = operation.element;\n dispatch(element, 'cable-ready:before-set-focus', operation);\n if (!operation.cancel) assignFocus(element);\n dispatch(element, 'cable-ready:after-set-focus', operation);\n },\n setStorageItem: function setStorageItem(operation) {\n dispatch(document, 'cable-ready:before-set-storage-item', operation);\n var key = operation.key,\n value = operation.value,\n type = operation.type;\n var storage = type === 'session' ? sessionStorage : localStorage;\n if (!operation.cancel) storage.setItem(key, value);\n dispatch(document, 'cable-ready:after-set-storage-item', operation);\n },\n // Notifications\n consoleLog: function consoleLog(operation) {\n var message = operation.message,\n level = operation.level;\n level && ['warn', 'info', 'error'].includes(level) ? console[level](message) : console.log(message);\n },\n notification: function notification(operation) {\n dispatch(document, 'cable-ready:before-notification', operation);\n var title = operation.title,\n options = operation.options;\n if (!operation.cancel) Notification.requestPermission().then(function (result) {\n operation.permission = result;\n if (result === 'granted') new Notification(title || '', options);\n });\n dispatch(document, 'cable-ready:after-notification', operation);\n },\n playSound: function playSound(operation) {\n dispatch(document, 'cable-ready:before-play-sound', operation);\n var src = operation.src;\n\n if (!operation.cancel) {\n var canplaythrough = function canplaythrough() {\n document.audio.removeEventListener('canplaythrough', canplaythrough);\n document.audio.play();\n };\n\n var ended = function ended() {\n document.audio.removeEventListener('ended', canplaythrough);\n dispatch(document, 'cable-ready:after-play-sound', operation);\n };\n\n document.audio.addEventListener('canplaythrough', canplaythrough);\n document.audio.addEventListener('ended', ended);\n document.audio.src = src;\n document.audio.play();\n } else dispatch(document, 'cable-ready:after-play-sound', operation);\n }\n};\n\nvar perform = function perform(operations) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n emitMissingElementWarnings: true\n };\n\n for (var name in operations) {\n if (operations.hasOwnProperty(name)) {\n var entries = operations[name];\n\n for (var i = 0; i < entries.length; i++) {\n var operation = entries[i];\n\n try {\n if (operation.selector) {\n operation.element = operation.xpath ? xpathToElement(operation.selector) : document[operation.selectAll ? 'querySelectorAll' : 'querySelector'](operation.selector);\n } else {\n operation.element = document;\n }\n\n if (operation.element || options.emitMissingElementWarnings) {\n activeElement = document.activeElement;\n DOMOperations[name](operation);\n }\n } catch (e) {\n if (operation.element) {\n console.error(\"CableReady detected an error in \".concat(name, \": \").concat(e.message, \". If you need to support older browsers make sure you've included the corresponding polyfills. https://docs.stimulusreflex.com/setup#polyfills-for-ie11.\"));\n console.error(e);\n } else {\n console.log(\"CableReady \".concat(name, \" failed due to missing DOM element for selector: '\").concat(operation.selector, \"'\"));\n }\n }\n }\n }\n }\n};\n\nvar performAsync = function performAsync(operations) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n emitMissingElementWarnings: true\n };\n return new Promise(function (resolve, reject) {\n try {\n resolve(perform(operations, options));\n } catch (err) {\n reject(err);\n }\n });\n};\n\ndocument.addEventListener('DOMContentLoaded', function () {\n if (!document.audio) {\n document.audio = new Audio('data:audio/mpeg;base64,//OExAAAAAAAAAAAAEluZm8AAAAHAAAABAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/P39/f39/f39/f39/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAJAa/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//MUxAAAAANIAAAAAExBTUUzLjk2LjFV//MUxAsAAANIAAAAAFVVVVVVVVVVVVVV//MUxBYAAANIAAAAAFVVVVVVVVVVVVVV//MUxCEAAANIAAAAAFVVVVVVVVVVVVVV');\n\n var unlockAudio = function unlockAudio() {\n document.body.removeEventListener('click', unlockAudio);\n document.body.removeEventListener('touchstart', unlockAudio);\n document.audio.play().then(function () {}).catch(function () {});\n };\n\n document.body.addEventListener('click', unlockAudio);\n document.body.addEventListener('touchstart', unlockAudio);\n }\n});\nexport default {\n perform: perform,\n performAsync: performAsync,\n DOMOperations: DOMOperations,\n shouldMorphCallbacks: shouldMorphCallbacks,\n didMorphCallbacks: didMorphCallbacks\n};","export var inputTags = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true\n};\nexport var mutableTags = {\n INPUT: true,\n TEXTAREA: true,\n OPTION: true\n};\nexport var textInputTypes = {\n 'datetime-local': true,\n 'select-multiple': true,\n 'select-one': true,\n color: true,\n date: true,\n datetime: true,\n email: true,\n month: true,\n number: true,\n password: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n textarea: true,\n time: true,\n url: true,\n week: true\n};","import { inputTags, textInputTypes } from './enums';\nimport { activeElement } from './cable_ready'; // Indicates if the passed element is considered a text input.\n//\n\nexport var isTextInput = function isTextInput(element) {\n return inputTags[element.tagName] && textInputTypes[element.type];\n}; // Assigns focus to the appropriate element... preferring the explicitly passed selector\n//\n// * selector - a CSS selector for the element that should have focus\n//\n\nexport var assignFocus = function assignFocus(selector) {\n var element = selector && selector.nodeType === Node.ELEMENT_NODE ? selector : document.querySelector(selector);\n var focusElement = element || activeElement;\n if (focusElement && focusElement.focus) focusElement.focus();\n}; // Dispatches an event on the passed element\n//\n// * element - the element\n// * name - the name of the event\n// * detail - the event detail\n//\n\nexport var dispatch = function dispatch(element, name) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var init = {\n bubbles: true,\n cancelable: true,\n detail: detail\n };\n var evt = new CustomEvent(name, init);\n element.dispatchEvent(evt);\n if (window.jQuery) window.jQuery(element).trigger(name, detail);\n}; // Accepts an xPath query and returns the element found at that position in the DOM\n//\n\nexport var xpathToElement = function xpathToElement(xpath) {\n return document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n}; // Return an array with the class names to be used\n//\n// * names - could be a string or an array of strings for multiple classes.\n//\n\nexport var getClassNames = function getClassNames(names) {\n return Array(names).flat();\n}; // Perform operation for either the first or all of the elements returned by CSS selector\n//\n// * operation - the instruction payload from perform\n// * callback - the operation function to run for each element\n//\n\nexport var processElements = function processElements(operation, callback) {\n Array.from(operation.selectAll ? operation.element : [operation.element]).forEach(callback);\n};","import { mutableTags } from './enums';\nimport { isTextInput } from './utils';\nimport { activeElement } from './cable_ready';\nexport var verifyNotMutable = function verifyNotMutable(detail, fromEl, toEl) {\n // Skip nodes that are equal:\n // https://github.com/patrick-steele-idem/morphdom#can-i-make-morphdom-blaze-through-the-dom-tree-even-faster-yes\n if (!mutableTags[fromEl.tagName] && fromEl.isEqualNode(toEl)) return false;\n return true;\n};\nexport var verifyNotPermanent = function verifyNotPermanent(detail, fromEl, toEl) {\n var permanentAttributeName = detail.permanentAttributeName;\n if (!permanentAttributeName) return true;\n var permanent = fromEl.closest(\"[\".concat(permanentAttributeName, \"]\")); // only morph attributes on the active non-permanent text input\n\n if (!permanent && isTextInput(fromEl) && fromEl === activeElement) {\n var ignore = {\n value: true\n };\n Array.from(toEl.attributes).forEach(function (attribute) {\n if (!ignore[attribute.name]) fromEl.setAttribute(attribute.name, attribute.value);\n });\n return false;\n }\n\n return !permanent;\n};","export var defaultSchema = {\n reflexAttribute: 'data-reflex',\n reflexPermanentAttribute: 'data-reflex-permanent',\n reflexRootAttribute: 'data-reflex-root',\n reflexDatasetAttribute: 'data-reflex-dataset'\n};","import { createConsumer } from '@rails/actioncable';\n\nfunction isConsumer(object) {\n if (object) {\n try {\n return object.constructor.name === 'Consumer' && object.connect && object.disconnect && object.send;\n } catch (e) {}\n }\n\n return false;\n}\n\nfunction findConsumer(object) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (!object) return null;\n if (depth > 3) return null;\n if (isConsumer(object)) return object;\n return Object.values(object).map(function (o) {\n return findConsumer(o, depth + 1);\n }).find(function (o) {\n return o;\n });\n}\n\nexport function getConsumer() {\n return findConsumer(window) || createConsumer();\n}","// uuid4 function taken from stackoverflow\n// https://stackoverflow.com/a/2117523/554903\nexport var uuidv4 = function uuidv4() {\n var crypto = window.crypto || window.msCrypto;\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {\n return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);\n });\n};\nexport var serializeForm = function serializeForm(form) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!form) return '';\n var w = options.w || window;\n var element = options.element;\n var formData = new w.FormData(form);\n var data = Array.from(formData, function (e) {\n return e.map(encodeURIComponent).join('=');\n });\n var submitButton = form.querySelector('input[type=submit]');\n\n if (element && element.name && element.nodeName === 'INPUT' && element.type === 'submit') {\n data.push(\"\".concat(encodeURIComponent(element.name), \"=\").concat(encodeURIComponent(element.value)));\n } else if (submitButton && submitButton.name) {\n data.push(\"\".concat(encodeURIComponent(submitButton.name), \"=\").concat(encodeURIComponent(submitButton.value)));\n }\n\n return Array.from(new Set(data)).join('&');\n};\nexport var camelize = function camelize(value) {\n var uppercaseFirstLetter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (typeof value !== 'string') return '';\n value = value.replace(/[\\s_](.)/g, function ($1) {\n return $1.toUpperCase();\n }).replace(/[\\s_]/g, '').replace(/^(.)/, function ($1) {\n return $1.toLowerCase();\n });\n if (uppercaseFirstLetter) value = value.substr(0, 1).toUpperCase() + value.substr(1);\n return value;\n};\nexport var debounce = function debounce(callback) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 250;\n var timeoutId;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n clearTimeout(timeoutId);\n timeoutId = setTimeout(function () {\n timeoutId = null;\n callback.apply(void 0, args);\n }, delay);\n };\n};\nexport var extractReflexName = function extractReflexName(reflexString) {\n var match = reflexString.match(/(?:.*->)?(.*?)(?:Reflex)?#/);\n return match ? match[1] : '';\n};\nexport var emitEvent = function emitEvent(event, detail) {\n document.dispatchEvent(new CustomEvent(event, {\n bubbles: true,\n cancelable: false,\n detail: detail\n }));\n if (window.jQuery) window.jQuery(document).trigger(event, detail);\n}; // construct a valid xPath for an element in the DOM\n\nexport var elementToXPath = function elementToXPath(element) {\n if (element.id !== '') return \"//*[@id='\" + element.id + \"']\";\n if (element === document.body) return '/html/body';\n var ix = 0;\n var siblings = element.parentNode.childNodes;\n\n for (var i = 0; i < siblings.length; i++) {\n var sibling = siblings[i];\n\n if (sibling === element) {\n var computedPath = elementToXPath(element.parentNode);\n var tagName = element.tagName.toLowerCase();\n var ixInc = ix + 1;\n return \"\".concat(computedPath, \"/\").concat(tagName, \"[\").concat(ixInc, \"]\");\n }\n\n if (sibling.nodeType === 1 && sibling.tagName === element.tagName) {\n ix++;\n }\n }\n};\nexport var XPathToElement = function XPathToElement(xpath) {\n return document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n};","var debugging = false;\nexport default {\n get enabled() {\n return debugging;\n },\n\n get disabled() {\n return !debugging;\n },\n\n get value() {\n return debugging;\n },\n\n set: function set(value) {\n debugging = !!value;\n },\n\n set debug(value) {\n debugging = !!value;\n }\n\n};","import { camelize } from './utils';\nimport Debug from './debug'; // Invokes a lifecycle method on a StimulusReflex controller.\n//\n// - stage - the lifecycle stage\n// * before\n// * success\n// * error\n// * halted\n// * after\n// * finalize\n//\n// - reflexElement - the element that triggered the Reflex (not necessarily the StimulusReflex Controller Element)\n//\n// - controllerElement - the element holding the StimulusReflex Controller\n//\n// - reflexId - the UUIDv4 which uniquely identifies the Reflex\n//\n\nvar invokeLifecycleMethod = function invokeLifecycleMethod(stage, reflexElement, controllerElement, reflexId) {\n if (!controllerElement || !controllerElement.reflexData[reflexId]) return;\n var controller = controllerElement.reflexController[reflexId];\n var reflex = controllerElement.reflexData[reflexId].target;\n var reflexMethodName = reflex.split('#')[1];\n var specificLifecycleMethodName = ['before', 'after', 'finalize'].includes(stage) ? \"\".concat(stage).concat(camelize(reflexMethodName)) : \"\".concat(camelize(reflexMethodName, false)).concat(camelize(stage));\n var specificLifecycleMethod = controller[specificLifecycleMethodName];\n var genericLifecycleMethodName = ['before', 'after', 'finalize'].includes(stage) ? \"\".concat(stage, \"Reflex\") : \"reflex\".concat(camelize(stage));\n var genericLifecycleMethod = controller[genericLifecycleMethodName];\n\n if (typeof specificLifecycleMethod === 'function') {\n specificLifecycleMethod.call(controller, reflexElement, reflex, controllerElement.reflexError[reflexId], reflexId);\n }\n\n if (typeof genericLifecycleMethod === 'function') {\n genericLifecycleMethod.call(controller, reflexElement, reflex, controllerElement.reflexError[reflexId], reflexId);\n }\n\n if (reflexes[reflexId] && stage === reflexes[reflexId].finalStage) {\n Reflect.deleteProperty(controllerElement.reflexController, reflexId);\n Reflect.deleteProperty(controllerElement.reflexData, reflexId);\n Reflect.deleteProperty(controllerElement.reflexError, reflexId);\n Reflect.deleteProperty(reflexes, reflexId);\n }\n};\n\ndocument.addEventListener('stimulus-reflex:before', function (event) {\n return invokeLifecycleMethod('before', event.detail.element, event.detail.controller.element, event.detail.reflexId);\n}, true);\ndocument.addEventListener('stimulus-reflex:success', function (event) {\n invokeLifecycleMethod('success', event.detail.element, event.detail.controller.element, event.detail.reflexId);\n dispatchLifecycleEvent('after', event.detail.element, event.detail.controller.element, event.detail.reflexId);\n}, true);\ndocument.addEventListener('stimulus-reflex:nothing', function (event) {\n invokeLifecycleMethod('success', event.detail.element, event.detail.controller.element, event.detail.reflexId);\n dispatchLifecycleEvent('after', event.detail.element, event.detail.controller.element, event.detail.reflexId);\n}, true);\ndocument.addEventListener('stimulus-reflex:error', function (event) {\n invokeLifecycleMethod('error', event.detail.element, event.detail.controller.element, event.detail.reflexId);\n dispatchLifecycleEvent('after', event.detail.element, event.detail.controller.element, event.detail.reflexId);\n}, true);\ndocument.addEventListener('stimulus-reflex:halted', function (event) {\n return invokeLifecycleMethod('halted', event.detail.element, event.detail.controller.element, event.detail.reflexId);\n}, true);\ndocument.addEventListener('stimulus-reflex:after', function (event) {\n return invokeLifecycleMethod('after', event.detail.element, event.detail.controller.element, event.detail.reflexId);\n}, true);\ndocument.addEventListener('stimulus-reflex:finalize', function (event) {\n return invokeLifecycleMethod('finalize', event.detail.element, event.detail.controller.element, event.detail.reflexId);\n}, true); // Dispatches a lifecycle event on document\n//\n// - stage - the lifecycle stage\n// * before\n// * success\n// * error\n// * halted\n// * after\n// * finalize\n//\n// - reflexElement - the element that triggered the Reflex (not necessarily the StimulusReflex Controller Element)\n//\n// - controllerElement - the element holding the StimulusReflex Controller\n//\n// - reflexId - the UUIDv4 which uniquely identifies the Reflex\n//\n\nexport var dispatchLifecycleEvent = function dispatchLifecycleEvent(stage, reflexElement, controllerElement, reflexId) {\n if (!controllerElement) {\n if (Debug.enabled && !reflexes[reflexId].warned) {\n console.warn(\"StimulusReflex was not able execute callbacks or emit events for \\\"\".concat(stage, \"\\\" or later life-cycle stages for this Reflex. The StimulusReflex Controller Element is no longer present in the DOM. Could you move the StimulusReflex Controller to an element higher in your DOM?\"));\n reflexes[reflexId].warned = true;\n }\n\n return;\n }\n\n if (!controllerElement.reflexController || controllerElement.reflexController && !controllerElement.reflexController[reflexId]) {\n if (Debug.enabled && !reflexes[reflexId].warned) {\n console.warn(\"StimulusReflex detected that the StimulusReflex Controller responsible for this Reflex has been replaced with a new instance. Callbacks and events for \\\"\".concat(stage, \"\\\" or later life-cycle stages cannot be executed.\"));\n reflexes[reflexId].warned = true;\n }\n\n return;\n }\n\n var _ref = controllerElement.reflexData[reflexId] || {},\n target = _ref.target;\n\n var controller = controllerElement.reflexController[reflexId] || {};\n var event = \"stimulus-reflex:\".concat(stage);\n var detail = {\n reflex: target,\n controller: controller,\n reflexId: reflexId,\n element: reflexElement\n };\n controllerElement.dispatchEvent(new CustomEvent(event, {\n bubbles: true,\n cancelable: false,\n detail: detail\n }));\n if (window.jQuery) window.jQuery(controllerElement).trigger(event, detail);\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { defaultSchema } from './schema';\nimport Debug from './debug';\n\nvar multipleInstances = function multipleInstances(element) {\n if (['checkbox', 'radio'].includes(element.type)) {\n return document.querySelectorAll(\"input[type=\\\"\".concat(element.type, \"\\\"][name=\\\"\").concat(element.name, \"\\\"]\")).length > 1;\n }\n\n return false;\n};\n\nvar collectCheckedOptions = function collectCheckedOptions(element) {\n return Array.from(element.querySelectorAll('option:checked')).concat(Array.from(document.querySelectorAll(\"input[type=\\\"\".concat(element.type, \"\\\"][name=\\\"\").concat(element.name, \"\\\"]\"))).filter(function (elem) {\n return elem.checked;\n })).map(function (o) {\n return o.value;\n });\n}; // Returns a string value for the passed array.\n//\n// attributeValue(['', 'one', null, 'two', 'three ']) // 'one two three'\n//\n\n\nexport var attributeValue = function attributeValue() {\n var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var value = values.filter(function (v) {\n return v && String(v).length;\n }).map(function (v) {\n return v.trim();\n }).join(' ').trim();\n return value.length ? value : null;\n}; // Returns an array for the passed string value by splitting on whitespace.\n//\n// attributeValues('one two three ') // ['one', 'two', 'three']\n//\n\nexport var attributeValues = function attributeValues(value) {\n if (!value) return [];\n if (!value.length) return [];\n return value.split(' ').filter(function (v) {\n return v.trim().length;\n });\n}; // Extracts attributes from a DOM element.\n//\n\nexport var extractElementAttributes = function extractElementAttributes(element) {\n var attrs = Array.from(element.attributes).reduce(function (memo, attr) {\n memo[attr.name] = attr.value;\n return memo;\n }, {});\n attrs.checked = !!element.checked;\n attrs.selected = !!element.selected;\n attrs.tag_name = element.tagName;\n\n if (element.tagName.match(/select/i) || multipleInstances(element)) {\n var collectedOptions = collectCheckedOptions(element);\n attrs.values = collectedOptions;\n attrs.value = collectedOptions.join(',');\n } else {\n attrs.value = element.value;\n }\n\n return attrs;\n}; // Extracts the dataset of an element and combines it with the data attributes from all parents if requested.\n//\n\nexport var extractElementDataset = function extractElementDataset(element) {\n var datasetAttribute = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var attrs = extractDataAttributes(element) || {};\n var dataset = datasetAttribute && element.attributes[datasetAttribute];\n\n if (dataset && dataset.value === 'combined') {\n var parent = element.parentElement;\n\n while (parent) {\n attrs = _objectSpread(_objectSpread({}, extractDataAttributes(parent)), attrs);\n parent = parent.parentElement;\n }\n }\n\n return attrs;\n}; // Extracts all data attributes from a DOM element.\n//\n\nexport var extractDataAttributes = function extractDataAttributes(element) {\n var attrs = {};\n\n if (element && element.attributes) {\n Array.from(element.attributes).forEach(function (attr) {\n if (attr.name.startsWith('data-')) {\n attrs[attr.name] = attr.value;\n }\n });\n }\n\n return attrs;\n};","import { attributeValues } from './attributes'; // Returns StimulusReflex controllers local to the passed element based on the data-controller attribute.\n//\n\nvar localReflexControllers = function localReflexControllers(app, element) {\n return attributeValues(element.getAttribute(app.schema.controllerAttribute)).reduce(function (memo, name) {\n var controller = app.getControllerForElementAndIdentifier(element, name);\n if (controller && controller.StimulusReflex) memo.push(controller);\n return memo;\n }, []);\n}; // Returns all StimulusReflex controllers for the passed element.\n// Traverses DOM ancestors starting with element.\n//\n\n\nexport var allReflexControllers = function allReflexControllers(app, element) {\n var controllers = [];\n\n while (element) {\n controllers = controllers.concat(localReflexControllers(app, element));\n element = element.parentElement;\n }\n\n return controllers;\n};","function request(reflexId, target, args, controller, element, controllerElement) {\n reflexes[reflexId].timestamp = new Date();\n console.log(\"\\u2191 stimulus \\u2191 \".concat(target), {\n reflexId: reflexId,\n args: args,\n controller: controller,\n element: element,\n controllerElement: controllerElement\n });\n}\n\nfunction success(event) {\n var _ref = event || {},\n detail = _ref.detail;\n\n var _ref2 = detail || {},\n selector = _ref2.selector;\n\n var _ref3 = detail.stimulusReflex || {},\n reflexId = _ref3.reflexId,\n target = _ref3.target,\n morph = _ref3.morph,\n serverMessage = _ref3.serverMessage;\n\n var reflex = reflexes[reflexId];\n var progress = reflex.totalOperations > 1 ? \" \".concat(reflex.completedOperations, \"/\").concat(reflex.totalOperations) : '';\n var duration = reflex.timestamp ? \"in \".concat(new Date() - reflex.timestamp, \"ms\") : 'CLONED';\n var operation = event.type.split(':')[1].split('-').slice(1).join('_');\n var halted = serverMessage && serverMessage.subject === 'halted' || false;\n console.log(\"\\u2193 reflex \\u2193 \".concat(target, \" \\u2192 \").concat(selector || \"\\u221E\").concat(progress, \" \").concat(duration), {\n reflexId: reflexId,\n morph: morph,\n operation: operation,\n halted: halted\n });\n}\n\nfunction error(event) {\n var _ref4 = event || {},\n detail = _ref4.detail;\n\n var _ref5 = detail.stimulusReflex || {},\n reflexId = _ref5.reflexId,\n target = _ref5.target,\n serverMessage = _ref5.serverMessage;\n\n var reflex = reflexes[reflexId];\n var duration = reflex.timestamp ? \"in \".concat(new Date() - reflex.timestamp, \"ms\") : 'CLONED';\n var payload = detail.stimulusReflex;\n console.log(\"\\u2193 reflex \\u2193 \".concat(target, \" \").concat(duration, \" %cERROR: \").concat(serverMessage.body), 'color: #f00;', {\n reflexId: reflexId,\n payload: payload\n });\n}\n\nexport default {\n request: request,\n success: success,\n error: error\n};","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Controller } from 'stimulus';\nimport CableReady from 'cable_ready';\nimport { defaultSchema } from './schema';\nimport { getConsumer } from './consumer';\nimport { dispatchLifecycleEvent } from './lifecycle';\nimport { allReflexControllers } from './controllers';\nimport { uuidv4, debounce, emitEvent, serializeForm } from './utils';\nimport Log from './log';\nimport Debug from './debug';\nimport { attributeValue, attributeValues, extractElementAttributes, extractElementDataset } from './attributes';\nimport { extractReflexName, elementToXPath, XPathToElement } from './utils'; // A lambda that does nothing. Very zen; we are made of stars\n\nvar NOOP = function NOOP() {}; // A reference to the Stimulus application registered with: StimulusReflex.initialize\n\n\nvar stimulusApplication; // A reference to the ActionCable consumer registered with: StimulusReflex.initialize or getConsumer\n\nvar actionCableConsumer; // A reference to an optional object called params defined in the StimulusReflex.initialize and passed to channels\n\nvar actionCableParams; // Flag which will be false if the server does not accept the channel subscription\n\nvar actionCableSubscriptionActive = false; // A dictionary of all active Reflex operations, indexed by reflexId\n\nwindow.reflexes = {}; // Should Reflex playback be restricted to the tab that called it?\n\nvar isolationMode; // Subscribes a StimulusReflex controller to an ActionCable channel.\n// controller - the StimulusReflex controller to subscribe\n//\n\nvar createSubscription = function createSubscription(controller) {\n actionCableConsumer = actionCableConsumer || getConsumer();\n var channel = controller.StimulusReflex.channel;\n\n var subscription = _objectSpread({\n channel: channel\n }, actionCableParams);\n\n var identifier = JSON.stringify(subscription);\n controller.StimulusReflex.subscription = actionCableConsumer.subscriptions.findAll(identifier)[0] || actionCableConsumer.subscriptions.create(subscription, {\n received: function received(data) {\n if (!data.cableReady) return;\n var reflexOperations = {};\n\n for (var name in data.operations) {\n if (data.operations.hasOwnProperty(name)) {\n for (var i = data.operations[name].length - 1; i >= 0; i--) {\n if (data.operations[name][i].stimulusReflex || data.operations[name][i].detail && data.operations[name][i].detail.stimulusReflex) {\n reflexOperations[name] = reflexOperations[name] || [];\n reflexOperations[name].push(data.operations[name][i]);\n data.operations[name].splice(i, 1);\n }\n }\n\n if (!data.operations[name].length) Reflect.deleteProperty(data.operations, name);\n }\n }\n\n var totalOperations = 0;\n var reflexData;\n var dispatchEvent = reflexOperations['dispatchEvent'];\n var morph = reflexOperations['morph'];\n var innerHtml = reflexOperations['innerHtml'];\n [dispatchEvent, morph, innerHtml].forEach(function (operation) {\n if (operation && operation.length) {\n var urls = Array.from(new Set(operation.map(function (m) {\n return m.detail ? m.detail.stimulusReflex.url : m.stimulusReflex.url;\n })));\n if (urls.length !== 1 || urls[0] !== location.href) return;\n totalOperations += operation.length;\n\n if (!reflexData) {\n reflexData = operation[0].detail ? operation[0].detail.stimulusReflex : operation[0].stimulusReflex;\n }\n }\n });\n\n if (reflexData) {\n var _reflexData = reflexData,\n reflexId = _reflexData.reflexId;\n\n if (!reflexes[reflexId] && !isolationMode) {\n var controllerElement = XPathToElement(reflexData.xpathController);\n var reflexElement = XPathToElement(reflexData.xpathElement);\n controllerElement.reflexController = controllerElement.reflexController || {};\n controllerElement.reflexData = controllerElement.reflexData || {};\n controllerElement.reflexError = controllerElement.reflexError || {};\n controllerElement.reflexController[reflexId] = stimulusApplication.getControllerForElementAndIdentifier(controllerElement, reflexData.reflexController);\n controllerElement.reflexData[reflexId] = reflexData;\n dispatchLifecycleEvent('before', reflexElement, controllerElement, reflexId);\n registerReflex(reflexData);\n }\n\n if (reflexes[reflexId]) {\n reflexes[reflexId].totalOperations = totalOperations;\n reflexes[reflexId].pendingOperations = totalOperations;\n reflexes[reflexId].completedOperations = 0;\n CableReady.perform(reflexOperations);\n }\n } // run piggy back operations after stimulus reflex behavior\n\n\n CableReady.perform(data.operations);\n },\n connected: function connected() {\n actionCableSubscriptionActive = true;\n emitEvent('stimulus-reflex:connected');\n },\n rejected: function rejected() {\n actionCableSubscriptionActive = false;\n emitEvent('stimulus-reflex:rejected');\n if (Debug.enabled) console.warn('Channel subscription was rejected.');\n },\n disconnected: function disconnected(willAttemptReconnect) {\n actionCableSubscriptionActive = false;\n emitEvent('stimulus-reflex:disconnected', willAttemptReconnect);\n }\n });\n}; // Extends a regular Stimulus controller with StimulusReflex behavior.\n//\n// Methods added to the Stimulus controller:\n// - stimulate\n// - __perform\n//\n\n\nvar extendStimulusController = function extendStimulusController(controller) {\n Object.assign(controller, {\n // Indicates if the ActionCable web socket connection is open.\n // The connection must be open before calling stimulate.\n //\n isActionCableConnectionOpen: function isActionCableConnectionOpen() {\n return this.StimulusReflex.subscription.consumer.connection.isOpen();\n },\n // Invokes a server side reflex method.\n //\n // - target - the reflex target (full name of the server side reflex) i.e. 'ReflexClassName#method'\n // - controllerElement - [optional] the element that triggered the reflex, defaults to this.element\n // - options - [optional] an object that contains at least one of attrs, reflexId, selectors, resolveLate, serializeForm\n // - *args - remaining arguments are forwarded to the server side reflex method\n //\n stimulate: function stimulate() {\n var url = location.href;\n var args = Array.from(arguments);\n var target = args.shift() || 'StimulusReflex::Reflex#default_reflex';\n var controllerElement = this.element;\n var reflexElement = args[0] && args[0].nodeType === Node.ELEMENT_NODE ? args.shift() : controllerElement;\n\n if (reflexElement.type === 'number' && reflexElement.validity && reflexElement.validity.badInput) {\n if (Debug.enabled) console.warn('Reflex aborted: invalid numeric input');\n return;\n }\n\n var options = {};\n\n if (args[0] && _typeof(args[0]) === 'object' && Object.keys(args[0]).filter(function (key) {\n return ['attrs', 'selectors', 'reflexId', 'resolveLate', 'serializeForm'].includes(key);\n }).length) {\n var opts = args.shift();\n Object.keys(opts).forEach(function (o) {\n return options[o] = opts[o];\n });\n }\n\n var attrs = options['attrs'] || extractElementAttributes(reflexElement);\n var reflexId = options['reflexId'] || uuidv4();\n var selectors = options['selectors'] || getReflexRoots(reflexElement);\n if (typeof selectors === 'string') selectors = [selectors];\n var resolveLate = options['resolveLate'] || false;\n var datasetAttribute = stimulusApplication.schema.reflexDatasetAttribute;\n var dataset = extractElementDataset(reflexElement, datasetAttribute);\n var xpathController = elementToXPath(controllerElement);\n var xpathElement = elementToXPath(reflexElement);\n var data = {\n target: target,\n args: args,\n url: url,\n attrs: attrs,\n dataset: dataset,\n selectors: selectors,\n reflexId: reflexId,\n resolveLate: resolveLate,\n xpathController: xpathController,\n xpathElement: xpathElement,\n reflexController: this.identifier,\n permanentAttributeName: stimulusApplication.schema.reflexPermanentAttribute\n };\n var subscription = this.StimulusReflex.subscription;\n if (!this.isActionCableConnectionOpen()) throw 'The ActionCable connection is not open! `this.isActionCableConnectionOpen()` must return true before calling `this.stimulate()`';\n if (!actionCableSubscriptionActive) throw 'The ActionCable channel subscription for StimulusReflex was rejected.'; // lifecycle setup\n\n controllerElement.reflexController = controllerElement.reflexController || {};\n controllerElement.reflexData = controllerElement.reflexData || {};\n controllerElement.reflexError = controllerElement.reflexError || {};\n controllerElement.reflexController[reflexId] = this;\n controllerElement.reflexData[reflexId] = data;\n dispatchLifecycleEvent('before', reflexElement, controllerElement, reflexId);\n setTimeout(function () {\n var _ref = controllerElement.reflexData[reflexId] || {},\n params = _ref.params;\n\n var formData = options['serializeForm'] === false ? '' : serializeForm(reflexElement.closest('form'), {\n element: reflexElement\n });\n controllerElement.reflexData[reflexId] = _objectSpread(_objectSpread({}, data), {}, {\n params: params,\n formData: formData\n });\n subscription.send(controllerElement.reflexData[reflexId]);\n });\n var promise = registerReflex(data);\n\n if (Debug.enabled) {\n Log.request(reflexId, target, args, this.context.scope.identifier, reflexElement, controllerElement);\n }\n\n return promise;\n },\n // Wraps the call to stimulate for any data-reflex elements.\n // This is internal and should not be invoked directly.\n __perform: function __perform(event) {\n var element = event.target;\n var reflex;\n\n while (element && !reflex) {\n reflex = element.getAttribute(stimulusApplication.schema.reflexAttribute);\n if (!reflex || !reflex.trim().length) element = element.parentElement;\n }\n\n var match = attributeValues(reflex).find(function (reflex) {\n return reflex.split('->')[0] === event.type;\n });\n\n if (match) {\n event.preventDefault();\n event.stopPropagation();\n this.stimulate(match.split('->')[1], element);\n }\n }\n });\n};\n\nvar registerReflex = function registerReflex(data) {\n var reflexId = data.reflexId;\n reflexes[reflexId] = {\n finalStage: 'finalize'\n };\n var promise = new Promise(function (resolve, reject) {\n reflexes[reflexId].promise = {\n resolve: resolve,\n reject: reject,\n data: data\n };\n });\n promise.reflexId = reflexId;\n if (Debug.enabled) promise.catch(NOOP);\n return promise;\n}; // Registers a Stimulus controller and extends it with StimulusReflex behavior\n//\n// controller - the Stimulus controller\n// options - [optional] configuration\n//\n\n\nvar register = function register(controller) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var channel = 'StimulusReflex::Channel';\n controller.StimulusReflex = _objectSpread(_objectSpread({}, options), {}, {\n channel: channel\n });\n createSubscription(controller);\n extendStimulusController(controller);\n}; // Default StimulusReflexController that is implicitly wired up as data-controller for any DOM elements\n// that have configured data-reflex. Note that this default can be overridden when initializing the application.\n// i.e. StimulusReflex.initialize(myStimulusApplication, MyCustomDefaultController);\n//\n\n\nvar StimulusReflexController = /*#__PURE__*/function (_Controller) {\n _inherits(StimulusReflexController, _Controller);\n\n var _super = _createSuper(StimulusReflexController);\n\n function StimulusReflexController() {\n var _this;\n\n _classCallCheck(this, StimulusReflexController);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n register(_assertThisInitialized(_this));\n return _this;\n }\n\n return _createClass(StimulusReflexController);\n}(Controller); // Sets up declarative reflex behavior.\n// Any elements that define data-reflex will automatically be wired up with the default StimulusReflexController.\n//\n\n\nvar setupDeclarativeReflexes = debounce(function () {\n document.querySelectorAll(\"[\".concat(stimulusApplication.schema.reflexAttribute, \"]\")).forEach(function (element) {\n var controllers = attributeValues(element.getAttribute(stimulusApplication.schema.controllerAttribute));\n var reflexAttributeNames = attributeValues(element.getAttribute(stimulusApplication.schema.reflexAttribute));\n var actions = attributeValues(element.getAttribute(stimulusApplication.schema.actionAttribute));\n reflexAttributeNames.forEach(function (reflexName) {\n var controller = findControllerByReflexName(reflexName, allReflexControllers(stimulusApplication, element));\n var action;\n\n if (controller) {\n action = \"\".concat(reflexName.split('->')[0], \"->\").concat(controller.identifier, \"#__perform\");\n if (!actions.includes(action)) actions.push(action);\n } else {\n action = \"\".concat(reflexName.split('->')[0], \"->stimulus-reflex#__perform\");\n\n if (!controllers.includes('stimulus-reflex')) {\n controllers.push('stimulus-reflex');\n }\n\n if (!actions.includes(action)) actions.push(action);\n }\n });\n var controllerValue = attributeValue(controllers);\n var actionValue = attributeValue(actions);\n\n if (controllerValue && element.getAttribute(stimulusApplication.schema.controllerAttribute) != controllerValue) {\n element.setAttribute(stimulusApplication.schema.controllerAttribute, controllerValue);\n }\n\n if (actionValue && element.getAttribute(stimulusApplication.schema.actionAttribute) != actionValue) element.setAttribute(stimulusApplication.schema.actionAttribute, actionValue);\n });\n emitEvent('stimulus-reflex:ready');\n}, 20); // Given a reflex string such as 'click->TestReflex#create' and a list of\n// controllers. It will find the matching controller based on the controller's\n// identifier. e.g. Given these controller identifiers ['foo', 'bar', 'test'],\n// it would select the 'test' controller.\n\nvar findControllerByReflexName = function findControllerByReflexName(reflexName, controllers) {\n var controller = controllers.find(function (controller) {\n if (!controller.identifier) return;\n return extractReflexName(reflexName).toLowerCase() === controller.identifier.toLowerCase();\n });\n return controller || controllers[0];\n}; // compute the DOM element(s) which will be the morph root\n// use the data-reflex-root attribute on the reflex or the controller\n// optional value is a CSS selector(s); comma-separated list\n// order of preference is data-reflex, data-controller, document body (default)\n\n\nvar getReflexRoots = function getReflexRoots(element) {\n var list = [];\n\n while (list.length === 0 && element) {\n var reflexRoot = element.getAttribute(stimulusApplication.schema.reflexRootAttribute);\n\n if (reflexRoot) {\n if (reflexRoot.length === 0 && element.id) reflexRoot = \"#\".concat(element.id);\n var selectors = reflexRoot.split(',').filter(function (s) {\n return s.trim().length;\n });\n\n if (selectors.length === 0) {\n console.error(\"No value found for \".concat(stimulusApplication.schema.reflexRootAttribute, \". Add an #id to the element or provide a value for \").concat(stimulusApplication.schema.reflexRootAttribute, \".\"), element);\n }\n\n list = list.concat(selectors.filter(function (s) {\n return document.querySelector(s);\n }));\n }\n\n element = element.parentElement ? element.parentElement.closest(\"[\".concat(stimulusApplication.schema.reflexRootAttribute, \"]\")) : null;\n }\n\n return list;\n}; // Initializes StimulusReflex by registering the default Stimulus controller with the passed Stimulus application.\n//\n// - application - the Stimulus application\n// - options\n// * controller - [optional] the default StimulusReflexController\n// * consumer - [optional] the ActionCable consumer\n// * debug - [false] log all Reflexes to the console\n// * params - [{}] key/value parameters to send during channel subscription\n// * isolate - [false] restrict Reflex playback to the tab which initiated it\n//\n\n\nvar initialize = function initialize(application) {\n var initializeOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var controller = initializeOptions.controller,\n consumer = initializeOptions.consumer,\n debug = initializeOptions.debug,\n params = initializeOptions.params,\n isolate = initializeOptions.isolate;\n actionCableConsumer = consumer;\n actionCableParams = params;\n isolationMode = !!isolate;\n stimulusApplication = application;\n stimulusApplication.schema = _objectSpread(_objectSpread({}, defaultSchema), application.schema);\n stimulusApplication.register('stimulus-reflex', controller || StimulusReflexController);\n Debug.set(!!debug);\n};\n\nif (!document.stimulusReflexInitialized) {\n document.stimulusReflexInitialized = true;\n window.addEventListener('load', function () {\n setupDeclarativeReflexes();\n var observer = new MutationObserver(setupDeclarativeReflexes);\n observer.observe(document.documentElement, {\n attributes: true,\n childList: true,\n subtree: true\n });\n });\n\n var beforeDOMUpdate = function beforeDOMUpdate(event) {\n var _ref2 = event.detail || {},\n stimulusReflex = _ref2.stimulusReflex;\n\n if (!stimulusReflex) return;\n var reflexId = stimulusReflex.reflexId,\n xpathElement = stimulusReflex.xpathElement,\n xpathController = stimulusReflex.xpathController;\n var controllerElement = XPathToElement(xpathController);\n var reflexElement = XPathToElement(xpathElement);\n var reflex = reflexes[reflexId];\n var promise = reflex.promise;\n reflex.pendingOperations--;\n if (reflex.pendingOperations > 0) return;\n if (!stimulusReflex.resolveLate) setTimeout(function () {\n return promise.resolve({\n element: reflexElement,\n event: event,\n data: promise.data\n });\n });\n setTimeout(function () {\n return dispatchLifecycleEvent('success', reflexElement, controllerElement, reflexId);\n });\n };\n\n document.addEventListener('cable-ready:before-inner-html', beforeDOMUpdate);\n document.addEventListener('cable-ready:before-morph', beforeDOMUpdate);\n\n var afterDOMUpdate = function afterDOMUpdate(event) {\n var _ref3 = event.detail || {},\n stimulusReflex = _ref3.stimulusReflex;\n\n if (!stimulusReflex) return;\n var reflexId = stimulusReflex.reflexId,\n xpathElement = stimulusReflex.xpathElement,\n xpathController = stimulusReflex.xpathController;\n var controllerElement = XPathToElement(xpathController);\n var reflexElement = XPathToElement(xpathElement);\n var reflex = reflexes[reflexId];\n var promise = reflex.promise;\n reflex.completedOperations++;\n if (Debug.enabled) Log.success(event);\n if (reflex.completedOperations < reflex.totalOperations) return;\n if (stimulusReflex.resolveLate) setTimeout(function () {\n return promise.resolve({\n element: reflexElement,\n event: event,\n data: promise.data\n });\n });\n setTimeout(function () {\n return dispatchLifecycleEvent('finalize', reflexElement, controllerElement, reflexId);\n });\n };\n\n document.addEventListener('cable-ready:after-inner-html', afterDOMUpdate);\n document.addEventListener('cable-ready:after-morph', afterDOMUpdate);\n document.addEventListener('stimulus-reflex:server-message', function (event) {\n var _ref4 = event.detail.stimulusReflex || {},\n reflexId = _ref4.reflexId,\n serverMessage = _ref4.serverMessage,\n xpathController = _ref4.xpathController,\n xpathElement = _ref4.xpathElement;\n\n var subject = serverMessage.subject,\n body = serverMessage.body;\n var controllerElement = XPathToElement(xpathController);\n var reflexElement = XPathToElement(xpathElement);\n var promise = reflexes[reflexId].promise;\n var subjects = {\n error: true,\n halted: true,\n nothing: true,\n success: true\n };\n controllerElement.reflexError = controllerElement.reflexError || {};\n if (controllerElement && subject === 'error') controllerElement.reflexError[reflexId] = body;\n promise[subject === 'error' ? 'reject' : 'resolve']({\n data: promise.data,\n element: reflexElement,\n event: event,\n toString: function toString() {\n return body;\n }\n });\n reflexes[reflexId].finalStage = subject === 'halted' ? 'halted' : 'after';\n if (Debug.enabled) Log[subject === 'error' ? 'error' : 'success'](event);\n if (subjects[subject]) dispatchLifecycleEvent(subject, reflexElement, controllerElement, reflexId);\n });\n}\n\nexport default {\n initialize: initialize,\n register: register,\n\n get debug() {\n return Debug.value;\n },\n\n set debug(value) {\n Debug.set(!!value);\n }\n\n};","// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `bin/rails generate channel` command.\n\nimport { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\nStimulus 3.0.1\nCopyright © 2021 Basecamp, LLC\n */\nvar EventListener = /*#__PURE__*/function () {\n function EventListener(eventTarget, eventName, eventOptions) {\n _classCallCheck(this, EventListener);\n\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n\n _createClass(EventListener, [{\n key: \"connect\",\n value: function connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n }, {\n key: \"bindingConnected\",\n value: function bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n }, {\n key: \"bindingDisconnected\",\n value: function bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n var extendedEvent = extendEvent(event);\n\n var _iterator = _createForOfIteratorHelper(this.bindings),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var binding = _step.value;\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"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 }]);\n\n return EventListener;\n}();\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var _stopImmediatePropagation = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n\n _stopImmediatePropagation.call(this);\n }\n });\n }\n}\n\nvar Dispatcher = /*#__PURE__*/function () {\n function Dispatcher(application) {\n _classCallCheck(this, Dispatcher);\n\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n _createClass(Dispatcher, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n }\n }, {\n key: \"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 }, {\n key: \"bindingConnected\",\n value: function bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n }, {\n key: \"bindingDisconnected\",\n value: function bindingDisconnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.application.handleError(error, \"Error \".concat(message), detail);\n }\n }, {\n key: \"fetchEventListenerForBinding\",\n value: function fetchEventListenerForBinding(binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n }, {\n key: \"fetchEventListener\",\n value: function fetchEventListener(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 key: \"createEventListener\",\n value: function createEventListener(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 key: \"fetchEventListenerMapForEventTarget\",\n value: function fetchEventListenerMapForEventTarget(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 key: \"cacheKey\",\n value: function cacheKey(eventName, eventOptions) {\n var parts = [eventName];\n Object.keys(eventOptions).sort().forEach(function (key) {\n parts.push(\"\".concat(eventOptions[key] ? \"\" : \"!\").concat(key));\n });\n return parts.join(\":\");\n }\n }]);\n\n return Dispatcher;\n}();\n\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\n\nfunction 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 return Object.assign(options, _defineProperty({}, token.replace(/^!/, \"\"), !/^!/.test(token)));\n }, {});\n}\n\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, function (_, char) {\n return char.toUpperCase();\n });\n}\n\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) {\n return \"-\".concat(char.toLowerCase());\n });\n}\n\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nvar Action = /*#__PURE__*/function () {\n function Action(element, index, descriptor) {\n _classCallCheck(this, Action);\n\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 _createClass(Action, [{\n key: \"toString\",\n value: function toString() {\n var eventNameSuffix = this.eventTargetName ? \"@\".concat(this.eventTargetName) : \"\";\n return \"\".concat(this.eventName).concat(eventNameSuffix, \"->\").concat(this.identifier, \"#\").concat(this.methodName);\n }\n }, {\n key: \"params\",\n get: function get() {\n if (this.eventTarget instanceof Element) {\n return this.getParamsFromEventTargetAttributes(this.eventTarget);\n } else {\n return {};\n }\n }\n }, {\n key: \"getParamsFromEventTargetAttributes\",\n value: function getParamsFromEventTargetAttributes(eventTarget) {\n var params = {};\n var pattern = new RegExp(\"^data-\".concat(this.identifier, \"-(.+)-param$\"));\n var attributes = Array.from(eventTarget.attributes);\n attributes.forEach(function (_ref) {\n var name = _ref.name,\n value = _ref.value;\n var match = name.match(pattern);\n var key = match && match[1];\n\n if (key) {\n Object.assign(params, _defineProperty({}, camelize(key), typecast(value)));\n }\n });\n return params;\n }\n }, {\n key: \"eventTargetName\",\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n }\n }], [{\n key: \"forToken\",\n value: function forToken(token) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content));\n }\n }]);\n\n return Action;\n}();\n\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 \"details\": function details(e) {\n return \"toggle\";\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};\n\nfunction 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}\n\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\n\nvar Binding = /*#__PURE__*/function () {\n function Binding(context, action) {\n _classCallCheck(this, Binding);\n\n this.context = context;\n this.action = action;\n }\n\n _createClass(Binding, [{\n key: \"index\",\n get: function get() {\n return this.action.index;\n }\n }, {\n key: \"eventTarget\",\n get: function get() {\n return this.action.eventTarget;\n }\n }, {\n key: \"eventOptions\",\n get: function get() {\n return this.action.eventOptions;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.context.identifier;\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n }\n }, {\n key: \"eventName\",\n get: function get() {\n return this.action.eventName;\n }\n }, {\n key: \"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 \\\"\".concat(this.action, \"\\\" references undefined method \\\"\").concat(this.methodName, \"\\\"\"));\n }\n }, {\n key: \"invokeWithEvent\",\n value: function invokeWithEvent(event) {\n var target = event.target,\n currentTarget = event.currentTarget;\n\n try {\n var params = this.action.params;\n var actionEvent = Object.assign(event, {\n params: params\n });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, {\n event: event,\n target: target,\n currentTarget: currentTarget,\n action: this.methodName\n });\n } catch (error) {\n var identifier = this.identifier,\n controller = this.controller,\n element = this.element,\n index = this.index;\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 \\\"\".concat(this.action, \"\\\"\"), detail);\n }\n }\n }, {\n key: \"willBeInvokedByEvent\",\n value: function willBeInvokedByEvent(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 key: \"controller\",\n get: function get() {\n return this.context.controller;\n }\n }, {\n key: \"methodName\",\n get: function get() {\n return this.action.methodName;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }]);\n\n return Binding;\n}();\n\nvar ElementObserver = /*#__PURE__*/function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n _classCallCheck(this, ElementObserver);\n\n this.mutationObserverInit = {\n attributes: true,\n childList: true,\n subtree: true\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 _createClass(ElementObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n }, {\n key: \"pause\",\n value: function pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n\n callback();\n\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i = 0, _Array$from = Array.from(this.elements); _i < _Array$from.length; _i++) {\n var element = _Array$from[_i];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (var _i2 = 0, _Array$from2 = Array.from(matches); _i2 < _Array$from2.length; _i2++) {\n var _element = _Array$from2[_i2];\n this.addElement(_element);\n }\n }\n }\n }, {\n key: \"processMutations\",\n value: function processMutations(mutations) {\n if (this.started) {\n var _iterator2 = _createForOfIteratorHelper(mutations),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var mutation = _step2.value;\n this.processMutation(mutation);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }\n }, {\n key: \"processMutation\",\n value: function processMutation(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 key: \"processAttributeChange\",\n value: function processAttributeChange(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 key: \"processRemovedNodes\",\n value: function processRemovedNodes(nodes) {\n for (var _i3 = 0, _Array$from3 = Array.from(nodes); _i3 < _Array$from3.length; _i3++) {\n var node = _Array$from3[_i3];\n var element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n }, {\n key: \"processAddedNodes\",\n value: function processAddedNodes(nodes) {\n for (var _i4 = 0, _Array$from4 = Array.from(nodes); _i4 < _Array$from4.length; _i4++) {\n var node = _Array$from4[_i4];\n var element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n }, {\n key: \"matchElement\",\n value: function matchElement(element) {\n return this.delegate.matchElement(element);\n }\n }, {\n key: \"matchElementsInTree\",\n value: function matchElementsInTree() {\n var tree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.element;\n return this.delegate.matchElementsInTree(tree);\n }\n }, {\n key: \"processTree\",\n value: function processTree(tree, processor) {\n var _iterator3 = _createForOfIteratorHelper(this.matchElementsInTree(tree)),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var element = _step3.value;\n processor.call(this, element);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"elementFromNode\",\n value: function elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n }, {\n key: \"elementIsActive\",\n value: function elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }\n }, {\n key: \"addElement\",\n value: function addElement(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 key: \"removeElement\",\n value: function removeElement(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\n return ElementObserver;\n}();\n\nvar AttributeObserver = /*#__PURE__*/function () {\n function AttributeObserver(element, attributeName, delegate) {\n _classCallCheck(this, AttributeObserver);\n\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n _createClass(AttributeObserver, [{\n key: \"element\",\n get: function get() {\n return this.elementObserver.element;\n }\n }, {\n key: \"selector\",\n get: function get() {\n return \"[\".concat(this.attributeName, \"]\");\n }\n }, {\n key: \"start\",\n value: function start() {\n this.elementObserver.start();\n }\n }, {\n key: \"pause\",\n value: function pause(callback) {\n this.elementObserver.pause(callback);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.elementObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.elementObserver.refresh();\n }\n }, {\n key: \"started\",\n get: function get() {\n return this.elementObserver.started;\n }\n }, {\n key: \"matchElement\",\n value: function matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n }, {\n key: \"matchElementsInTree\",\n value: function matchElementsInTree(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 key: \"elementMatched\",\n value: function elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n }, {\n key: \"elementUnmatched\",\n value: function elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n }, {\n key: \"elementAttributeChanged\",\n value: function elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n }]);\n\n return AttributeObserver;\n}();\n\nvar StringMapObserver = /*#__PURE__*/function () {\n function StringMapObserver(element, delegate) {\n var _this2 = this;\n\n _classCallCheck(this, StringMapObserver);\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 _this2.processMutations(mutations);\n });\n }\n\n _createClass(StringMapObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n attributeOldValue: true\n });\n this.refresh();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n if (this.started) {\n var _iterator4 = _createForOfIteratorHelper(this.knownAttributeNames),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var attributeName = _step4.value;\n this.refreshAttribute(attributeName, null);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }\n }, {\n key: \"processMutations\",\n value: function processMutations(mutations) {\n if (this.started) {\n var _iterator5 = _createForOfIteratorHelper(mutations),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var mutation = _step5.value;\n this.processMutation(mutation);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n }, {\n key: \"processMutation\",\n value: function processMutation(mutation) {\n var attributeName = mutation.attributeName;\n\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n }, {\n key: \"refreshAttribute\",\n value: function refreshAttribute(attributeName, oldValue) {\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, oldValue);\n }\n\n if (value == null) {\n var _oldValue = this.stringMap.get(attributeName);\n\n this.stringMap.delete(attributeName);\n if (_oldValue) this.stringMapKeyRemoved(key, attributeName, _oldValue);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n }, {\n key: \"stringMapKeyAdded\",\n value: function stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n }, {\n key: \"stringMapValueChanged\",\n value: function stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n }, {\n key: \"stringMapKeyRemoved\",\n value: function stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n }, {\n key: \"knownAttributeNames\",\n get: function get() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n }, {\n key: \"currentAttributeNames\",\n get: function get() {\n return Array.from(this.element.attributes).map(function (attribute) {\n return attribute.name;\n });\n }\n }, {\n key: \"recordedAttributeNames\",\n get: function get() {\n return Array.from(this.stringMap.keys());\n }\n }]);\n\n return StringMapObserver;\n}();\n\nfunction _add(map, key, value) {\n fetch(map, key).add(value);\n}\n\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\n\nfunction 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}\n\nfunction prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nvar Multimap = /*#__PURE__*/function () {\n function Multimap() {\n _classCallCheck(this, Multimap);\n\n this.valuesByKey = new Map();\n }\n\n _createClass(Multimap, [{\n key: \"keys\",\n get: function get() {\n return Array.from(this.valuesByKey.keys());\n }\n }, {\n key: \"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 }, {\n key: \"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 }, {\n key: \"add\",\n value: function add(key, value) {\n _add(this.valuesByKey, key, value);\n }\n }, {\n key: \"delete\",\n value: function _delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n }, {\n key: \"has\",\n value: function has(key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n }, {\n key: \"hasKey\",\n value: function hasKey(key) {\n return this.valuesByKey.has(key);\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n }\n }, {\n key: \"getValuesForKey\",\n value: function getValuesForKey(key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n }, {\n key: \"getKeysForValue\",\n value: function getKeysForValue(value) {\n return Array.from(this.valuesByKey).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n values = _ref3[1];\n\n return values.has(value);\n }).map(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n key = _ref5[0],\n values = _ref5[1];\n\n return key;\n });\n }\n }]);\n\n return Multimap;\n}();\n\nvar IndexedMultimap = /*#__PURE__*/function (_Multimap) {\n _inherits(IndexedMultimap, _Multimap);\n\n var _super = _createSuper(IndexedMultimap);\n\n function IndexedMultimap() {\n var _this3;\n\n _classCallCheck(this, IndexedMultimap);\n\n _this3 = _super.call(this);\n _this3.keysByValue = new Map();\n return _this3;\n }\n\n _createClass(IndexedMultimap, [{\n key: \"values\",\n get: function get() {\n return Array.from(this.keysByValue.keys());\n }\n }, {\n key: \"add\",\n value: function add(key, value) {\n _get(_getPrototypeOf(IndexedMultimap.prototype), \"add\", this).call(this, key, value);\n\n _add(this.keysByValue, value, key);\n }\n }, {\n key: \"delete\",\n value: function _delete(key, value) {\n _get(_getPrototypeOf(IndexedMultimap.prototype), \"delete\", this).call(this, key, value);\n\n del(this.keysByValue, value, key);\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(value) {\n return this.keysByValue.has(value);\n }\n }, {\n key: \"getKeysForValue\",\n value: function getKeysForValue(value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n }]);\n\n return IndexedMultimap;\n}(Multimap);\n\nvar TokenListObserver = /*#__PURE__*/function () {\n function TokenListObserver(element, attributeName, delegate) {\n _classCallCheck(this, TokenListObserver);\n\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n _createClass(TokenListObserver, [{\n key: \"started\",\n get: function get() {\n return this.attributeObserver.started;\n }\n }, {\n key: \"start\",\n value: function start() {\n this.attributeObserver.start();\n }\n }, {\n key: \"pause\",\n value: function pause(callback) {\n this.attributeObserver.pause(callback);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.attributeObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.attributeObserver.refresh();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.attributeObserver.element;\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return this.attributeObserver.attributeName;\n }\n }, {\n key: \"elementMatchedAttribute\",\n value: function elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n }, {\n key: \"elementAttributeValueChanged\",\n value: function elementAttributeValueChanged(element) {\n var _this$refreshTokensFo = this.refreshTokensForElement(element),\n _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),\n unmatchedTokens = _this$refreshTokensFo2[0],\n matchedTokens = _this$refreshTokensFo2[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n }, {\n key: \"elementUnmatchedAttribute\",\n value: function elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n }, {\n key: \"tokensMatched\",\n value: function tokensMatched(tokens) {\n var _this4 = this;\n\n tokens.forEach(function (token) {\n return _this4.tokenMatched(token);\n });\n }\n }, {\n key: \"tokensUnmatched\",\n value: function tokensUnmatched(tokens) {\n var _this5 = this;\n\n tokens.forEach(function (token) {\n return _this5.tokenUnmatched(token);\n });\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n }, {\n key: \"refreshTokensForElement\",\n value: function refreshTokensForElement(element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n previousToken = _ref7[0],\n currentToken = _ref7[1];\n\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 key: \"readTokensForElement\",\n value: function readTokensForElement(element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n }]);\n\n return TokenListObserver;\n}();\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}\n\nvar ValueListObserver = /*#__PURE__*/function () {\n function ValueListObserver(element, attributeName, delegate) {\n _classCallCheck(this, ValueListObserver);\n\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 _createClass(ValueListObserver, [{\n key: \"started\",\n get: function get() {\n return this.tokenListObserver.started;\n }\n }, {\n key: \"start\",\n value: function start() {\n this.tokenListObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.tokenListObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.tokenListObserver.refresh();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.tokenListObserver.element;\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return this.tokenListObserver.attributeName;\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(token) {\n var element = token.element;\n\n var _this$fetchParseResul = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul.value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(token) {\n var element = token.element;\n\n var _this$fetchParseResul2 = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul2.value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n }, {\n key: \"fetchParseResultForToken\",\n value: function fetchParseResultForToken(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 key: \"fetchValuesByTokenForElement\",\n value: function fetchValuesByTokenForElement(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 key: \"parseToken\",\n value: function parseToken(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\n return ValueListObserver;\n}();\n\nvar BindingObserver = /*#__PURE__*/function () {\n function BindingObserver(context, delegate) {\n _classCallCheck(this, BindingObserver);\n\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n _createClass(BindingObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.context.identifier;\n }\n }, {\n key: \"actionAttribute\",\n get: function get() {\n return this.schema.actionAttribute;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.context.schema;\n }\n }, {\n key: \"bindings\",\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n }\n }, {\n key: \"connectAction\",\n value: function connectAction(action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n }, {\n key: \"disconnectAction\",\n value: function disconnectAction(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 key: \"disconnectAllActions\",\n value: function disconnectAllActions() {\n var _this6 = this;\n\n this.bindings.forEach(function (binding) {\n return _this6.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n }\n }, {\n key: \"parseValueForToken\",\n value: function parseValueForToken(token) {\n var action = Action.forToken(token);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n }, {\n key: \"elementMatchedValue\",\n value: function elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n }, {\n key: \"elementUnmatchedValue\",\n value: function elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n }]);\n\n return BindingObserver;\n}();\n\nvar ValueObserver = /*#__PURE__*/function () {\n function ValueObserver(context, receiver) {\n _classCallCheck(this, ValueObserver);\n\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 _createClass(ValueObserver, [{\n key: \"start\",\n value: function start() {\n this.stringMapObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.stringMapObserver.stop();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"controller\",\n get: function get() {\n return this.context.controller;\n }\n }, {\n key: \"getStringMapKeyForAttribute\",\n value: function getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n }, {\n key: \"stringMapKeyAdded\",\n value: function stringMapKeyAdded(key, attributeName) {\n var descriptor = this.valueDescriptorMap[attributeName];\n\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n }, {\n key: \"stringMapValueChanged\",\n value: function stringMapValueChanged(value, name, oldValue) {\n var descriptor = this.valueDescriptorNameMap[name];\n if (value === null) return;\n\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n\n this.invokeChangedCallback(name, value, oldValue);\n }\n }, {\n key: \"stringMapKeyRemoved\",\n value: function stringMapKeyRemoved(key, attributeName, oldValue) {\n var descriptor = this.valueDescriptorNameMap[key];\n\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n } else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n }, {\n key: \"invokeChangedCallbacksForDefaultValues\",\n value: function invokeChangedCallbacksForDefaultValues() {\n var _iterator6 = _createForOfIteratorHelper(this.valueDescriptors),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _ref9 = _step6.value;\n var key = _ref9.key;\n var name = _ref9.name;\n var defaultValue = _ref9.defaultValue;\n var writer = _ref9.writer;\n\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n }, {\n key: \"invokeChangedCallback\",\n value: function invokeChangedCallback(name, rawValue, rawOldValue) {\n var changedMethodName = \"\".concat(name, \"Changed\");\n var changedMethod = this.receiver[changedMethodName];\n\n if (typeof changedMethod == \"function\") {\n var descriptor = this.valueDescriptorNameMap[name];\n var value = descriptor.reader(rawValue);\n var oldValue = rawOldValue;\n\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n\n changedMethod.call(this.receiver, value, oldValue);\n }\n }\n }, {\n key: \"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 }, {\n key: \"valueDescriptorNameMap\",\n get: function get() {\n var _this7 = this;\n\n var descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(function (key) {\n var descriptor = _this7.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(attributeName) {\n var descriptor = this.valueDescriptorNameMap[attributeName];\n var hasMethodName = \"has\".concat(capitalize(descriptor.name));\n return this.receiver[hasMethodName];\n }\n }]);\n\n return ValueObserver;\n}();\n\nvar TargetObserver = /*#__PURE__*/function () {\n function TargetObserver(context, delegate) {\n _classCallCheck(this, TargetObserver);\n\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n\n _createClass(TargetObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(_ref10) {\n var element = _ref10.element,\n name = _ref10.content;\n\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(_ref11) {\n var element = _ref11.element,\n name = _ref11.content;\n this.disconnectTarget(element, name);\n }\n }, {\n key: \"connectTarget\",\n value: function connectTarget(element, name) {\n var _this8 = this;\n\n var _a;\n\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(function () {\n return _this8.delegate.targetConnected(element, name);\n });\n }\n }\n }, {\n key: \"disconnectTarget\",\n value: function disconnectTarget(element, name) {\n var _this9 = this;\n\n var _a;\n\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(function () {\n return _this9.delegate.targetDisconnected(element, name);\n });\n }\n }\n }, {\n key: \"disconnectAllTargets\",\n value: function disconnectAllTargets() {\n var _iterator7 = _createForOfIteratorHelper(this.targetsByName.keys),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var name = _step7.value;\n\n var _iterator8 = _createForOfIteratorHelper(this.targetsByName.getValuesForKey(name)),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var element = _step8.value;\n this.disconnectTarget(element, name);\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return \"data-\".concat(this.context.identifier, \"-target\");\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }]);\n\n return TargetObserver;\n}();\n\nvar Context = /*#__PURE__*/function () {\n function Context(module, scope) {\n var _this10 = this;\n\n _classCallCheck(this, Context);\n\n this.logDebugActivity = function (functionName) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var identifier = _this10.identifier,\n controller = _this10.controller,\n element = _this10.element;\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n\n _this10.application.logDebugActivity(_this10.identifier, functionName, detail);\n };\n\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 this.targetObserver = new TargetObserver(this, this);\n\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n _createClass(Context, [{\n key: \"connect\",\n value: function connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n }, {\n key: \"application\",\n get: function get() {\n return this.module.application;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.module.identifier;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.application.schema;\n }\n }, {\n key: \"dispatcher\",\n get: function get() {\n return this.application.dispatcher;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"parentElement\",\n get: function get() {\n return this.element.parentElement;\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \".concat(message), detail);\n }\n }, {\n key: \"targetConnected\",\n value: function targetConnected(element, name) {\n this.invokeControllerMethod(\"\".concat(name, \"TargetConnected\"), element);\n }\n }, {\n key: \"targetDisconnected\",\n value: function targetDisconnected(element, name) {\n this.invokeControllerMethod(\"\".concat(name, \"TargetDisconnected\"), element);\n }\n }, {\n key: \"invokeControllerMethod\",\n value: function invokeControllerMethod(methodName) {\n var controller = this.controller;\n\n if (typeof controller[methodName] == \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n controller[methodName].apply(controller, args);\n }\n }\n }]);\n\n return Context;\n}();\n\nfunction 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}\n\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce(function (pairs, constructor) {\n pairs.push.apply(pairs, _toConsumableArray(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}\n\nfunction 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 descriptor = getShadowedDescriptor(prototype, properties, key);\n\n if (descriptor) {\n Object.assign(shadowProperties, _defineProperty({}, key, descriptor));\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 [].concat(_toConsumableArray(Object.getOwnPropertyNames(object)), _toConsumableArray(Object.getOwnPropertySymbols(object)));\n };\n } else {\n return Object.getOwnPropertyNames;\n }\n}();\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, this instanceof extended ? this.constructor : void 0);\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 /*#__PURE__*/function (_constructor) {\n _inherits(extended, _constructor);\n\n var _super2 = _createSuper(extended);\n\n function extended() {\n _classCallCheck(this, extended);\n\n return _super2.apply(this, arguments);\n }\n\n return _createClass(extended);\n }(constructor);\n };\n }\n}();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\n\nvar Module = /*#__PURE__*/function () {\n function Module(application, definition) {\n _classCallCheck(this, Module);\n\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n _createClass(Module, [{\n key: \"identifier\",\n get: function get() {\n return this.definition.identifier;\n }\n }, {\n key: \"controllerConstructor\",\n get: function get() {\n return this.definition.controllerConstructor;\n }\n }, {\n key: \"contexts\",\n get: function get() {\n return Array.from(this.connectedContexts);\n }\n }, {\n key: \"connectContextForScope\",\n value: function connectContextForScope(scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n }, {\n key: \"disconnectContextForScope\",\n value: function disconnectContextForScope(scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n }, {\n key: \"fetchContextForScope\",\n value: function fetchContextForScope(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\n return Module;\n}();\n\nvar ClassMap = /*#__PURE__*/function () {\n function ClassMap(scope) {\n _classCallCheck(this, ClassMap);\n\n this.scope = scope;\n }\n\n _createClass(ClassMap, [{\n key: \"has\",\n value: function has(name) {\n return this.data.has(this.getDataKey(name));\n }\n }, {\n key: \"get\",\n value: function get(name) {\n return this.getAll(name)[0];\n }\n }, {\n key: \"getAll\",\n value: function getAll(name) {\n var tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n }, {\n key: \"getAttributeName\",\n value: function getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n }, {\n key: \"getDataKey\",\n value: function getDataKey(name) {\n return \"\".concat(name, \"-class\");\n }\n }, {\n key: \"data\",\n get: function get() {\n return this.scope.data;\n }\n }]);\n\n return ClassMap;\n}();\n\nvar DataMap = /*#__PURE__*/function () {\n function DataMap(scope) {\n _classCallCheck(this, DataMap);\n\n this.scope = scope;\n }\n\n _createClass(DataMap, [{\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n }, {\n key: \"set\",\n value: function set(key, value) {\n var name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n }, {\n key: \"has\",\n value: function has(key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n if (this.has(key)) {\n var name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n } else {\n return false;\n }\n }\n }, {\n key: \"getAttributeNameForKey\",\n value: function getAttributeNameForKey(key) {\n return \"data-\".concat(this.identifier, \"-\").concat(dasherize(key));\n }\n }]);\n\n return DataMap;\n}();\n\nvar Guide = /*#__PURE__*/function () {\n function Guide(logger) {\n _classCallCheck(this, Guide);\n\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n\n _createClass(Guide, [{\n key: \"warn\",\n value: function warn(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\n return Guide;\n}();\n\nfunction attributeValueContainsToken(attributeName, token) {\n return \"[\".concat(attributeName, \"~=\\\"\").concat(token, \"\\\"]\");\n}\n\nvar TargetSet = /*#__PURE__*/function () {\n function TargetSet(scope) {\n _classCallCheck(this, TargetSet);\n\n this.scope = scope;\n }\n\n _createClass(TargetSet, [{\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.scope.schema;\n }\n }, {\n key: \"has\",\n value: function has(targetName) {\n return this.find(targetName) != null;\n }\n }, {\n key: \"find\",\n value: function find() {\n var _this11 = this;\n\n for (var _len2 = arguments.length, targetNames = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n targetNames[_key2] = arguments[_key2];\n }\n\n return targetNames.reduce(function (target, targetName) {\n return target || _this11.findTarget(targetName) || _this11.findLegacyTarget(targetName);\n }, undefined);\n }\n }, {\n key: \"findAll\",\n value: function findAll() {\n var _this12 = this;\n\n for (var _len3 = arguments.length, targetNames = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n targetNames[_key3] = arguments[_key3];\n }\n\n return targetNames.reduce(function (targets, targetName) {\n return [].concat(_toConsumableArray(targets), _toConsumableArray(_this12.findAllTargets(targetName)), _toConsumableArray(_this12.findAllLegacyTargets(targetName)));\n }, []);\n }\n }, {\n key: \"findTarget\",\n value: function findTarget(targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n }, {\n key: \"findAllTargets\",\n value: function findAllTargets(targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n }, {\n key: \"getSelectorForTargetName\",\n value: function getSelectorForTargetName(targetName) {\n var attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n }, {\n key: \"findLegacyTarget\",\n value: function findLegacyTarget(targetName) {\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n }, {\n key: \"findAllLegacyTargets\",\n value: function findAllLegacyTargets(targetName) {\n var _this13 = this;\n\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(function (element) {\n return _this13.deprecate(element, targetName);\n });\n }\n }, {\n key: \"getLegacySelectorForTargetName\",\n value: function getLegacySelectorForTargetName(targetName) {\n var targetDescriptor = \"\".concat(this.identifier, \".\").concat(targetName);\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n }, {\n key: \"deprecate\",\n value: function deprecate(element, targetName) {\n if (element) {\n var identifier = this.identifier;\n var attributeName = this.schema.targetAttribute;\n var revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, \"target:\".concat(targetName), \"Please replace \".concat(attributeName, \"=\\\"\").concat(identifier, \".\").concat(targetName, \"\\\" with \").concat(revisedAttributeName, \"=\\\"\").concat(targetName, \"\\\". \") + \"The \".concat(attributeName, \" attribute is deprecated and will be removed in a future version of Stimulus.\"));\n }\n\n return element;\n }\n }, {\n key: \"guide\",\n get: function get() {\n return this.scope.guide;\n }\n }]);\n\n return TargetSet;\n}();\n\nvar Scope = /*#__PURE__*/function () {\n function Scope(schema, element, identifier, logger) {\n var _this14 = this;\n\n _classCallCheck(this, Scope);\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(_this14.controllerSelector) === _this14.element;\n };\n\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n }\n\n _createClass(Scope, [{\n key: \"findElement\",\n value: function findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n }, {\n key: \"findAllElements\",\n value: function findAllElements(selector) {\n return [].concat(_toConsumableArray(this.element.matches(selector) ? [this.element] : []), _toConsumableArray(this.queryElements(selector).filter(this.containsElement)));\n }\n }, {\n key: \"queryElements\",\n value: function queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n }, {\n key: \"controllerSelector\",\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n }]);\n\n return Scope;\n}();\n\nvar ScopeObserver = /*#__PURE__*/function () {\n function ScopeObserver(element, schema, delegate) {\n _classCallCheck(this, ScopeObserver);\n\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 _createClass(ScopeObserver, [{\n key: \"start\",\n value: function start() {\n this.valueListObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.valueListObserver.stop();\n }\n }, {\n key: \"controllerAttribute\",\n get: function get() {\n return this.schema.controllerAttribute;\n }\n }, {\n key: \"parseValueForToken\",\n value: function parseValueForToken(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 }, {\n key: \"elementMatchedValue\",\n value: function elementMatchedValue(element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n }, {\n key: \"elementUnmatchedValue\",\n value: function elementUnmatchedValue(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 key: \"fetchScopesByIdentifierForElement\",\n value: function fetchScopesByIdentifierForElement(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\n return ScopeObserver;\n}();\n\nvar Router = /*#__PURE__*/function () {\n function Router(application) {\n _classCallCheck(this, Router);\n\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 _createClass(Router, [{\n key: \"element\",\n get: function get() {\n return this.application.element;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.application.schema;\n }\n }, {\n key: \"logger\",\n get: function get() {\n return this.application.logger;\n }\n }, {\n key: \"controllerAttribute\",\n get: function get() {\n return this.schema.controllerAttribute;\n }\n }, {\n key: \"modules\",\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n }\n }, {\n key: \"contexts\",\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n }\n }, {\n key: \"start\",\n value: function start() {\n this.scopeObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.scopeObserver.stop();\n }\n }, {\n key: \"loadDefinition\",\n value: function loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n }\n }, {\n key: \"unloadIdentifier\",\n value: function unloadIdentifier(identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n }\n }, {\n key: \"getContextForElementAndIdentifier\",\n value: function getContextForElementAndIdentifier(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 }\n }, {\n key: \"handleError\",\n value: function handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n }, {\n key: \"createScopeForElementAndIdentifier\",\n value: function createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n }, {\n key: \"scopeConnected\",\n value: function scopeConnected(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 }, {\n key: \"scopeDisconnected\",\n value: function scopeDisconnected(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 }\n }, {\n key: \"connectModule\",\n value: function connectModule(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 key: \"disconnectModule\",\n value: function disconnectModule(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\n return Router;\n}();\n\nvar defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: function targetAttributeForScope(identifier) {\n return \"data-\".concat(identifier, \"-target\");\n }\n};\n\nvar Application = /*#__PURE__*/function () {\n function Application() {\n var _this15 = this;\n\n var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n var schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSchema;\n\n _classCallCheck(this, Application);\n\n this.logger = console;\n this.debug = false;\n\n this.logDebugActivity = function (identifier, functionName) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (_this15.debug) {\n _this15.logFormattedMessage(identifier, functionName, detail);\n }\n };\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n\n _createClass(Application, [{\n key: \"start\",\n value: function () {\n var _start = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return domReady();\n\n case 2:\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function start() {\n return _start.apply(this, arguments);\n }\n\n return start;\n }()\n }, {\n key: \"stop\",\n value: function stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n }, {\n key: \"register\",\n value: function register(identifier, controllerConstructor) {\n if (controllerConstructor.shouldLoad) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n }\n }\n }, {\n key: \"load\",\n value: function load(head) {\n var _this16 = this;\n\n for (var _len4 = arguments.length, rest = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n rest[_key4 - 1] = arguments[_key4];\n }\n\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n return _this16.router.loadDefinition(definition);\n });\n }\n }, {\n key: \"unload\",\n value: function unload(head) {\n var _this17 = this;\n\n for (var _len5 = arguments.length, rest = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n rest[_key5 - 1] = arguments[_key5];\n }\n\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this17.router.unloadIdentifier(identifier);\n });\n }\n }, {\n key: \"controllers\",\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n }\n }, {\n key: \"getControllerForElementAndIdentifier\",\n value: function getControllerForElementAndIdentifier(element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message, detail) {\n var _a;\n\n this.logger.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n }, {\n key: \"logFormattedMessage\",\n value: function logFormattedMessage(identifier, functionName) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n detail = Object.assign({\n application: this\n }, detail);\n this.logger.groupCollapsed(\"\".concat(identifier, \" #\").concat(functionName));\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n }], [{\n key: \"start\",\n value: function start(element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n }\n }]);\n\n return Application;\n}();\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", function () {\n return resolve();\n });\n } else {\n resolve();\n }\n });\n}\n\nfunction 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 _ref12;\n\n return _ref12 = {}, _defineProperty(_ref12, \"\".concat(key, \"Class\"), {\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 \\\"\".concat(attribute, \"\\\"\"));\n }\n }\n }), _defineProperty(_ref12, \"\".concat(key, \"Classes\"), {\n get: function get() {\n return this.classes.getAll(key);\n }\n }), _defineProperty(_ref12, \"has\".concat(capitalize(key), \"Class\"), {\n get: function get() {\n return this.classes.has(key);\n }\n }), _ref12;\n}\n\nfunction 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 _ref13;\n\n return _ref13 = {}, _defineProperty(_ref13, \"\".concat(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 \\\"\".concat(name, \"\\\" for \\\"\").concat(this.identifier, \"\\\" controller\"));\n }\n }\n }), _defineProperty(_ref13, \"\".concat(name, \"Targets\"), {\n get: function get() {\n return this.targets.findAll(name);\n }\n }), _defineProperty(_ref13, \"has\".concat(capitalize(name), \"Target\"), {\n get: function get() {\n return this.targets.has(name);\n }\n }), _ref13;\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n var valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n var propertyDescriptorMap = {\n valueDescriptorMap: {\n get: function get() {\n var _this18 = this;\n\n return valueDefinitionPairs.reduce(function (result, valueDefinitionPair) {\n var valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n\n var attributeName = _this18.data.getAttributeNameForKey(valueDescriptor.key);\n\n return Object.assign(result, _defineProperty({}, attributeName, valueDescriptor));\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce(function (properties, valueDefinitionPair) {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\n\nfunction propertiesForValueDefinitionPair(valueDefinitionPair) {\n var _ref14;\n\n var definition = parseValueDefinitionPair(valueDefinitionPair);\n var key = definition.key,\n name = definition.name,\n read = definition.reader,\n write = definition.writer;\n return _ref14 = {}, _defineProperty(_ref14, 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 }), _defineProperty(_ref14, \"has\".concat(capitalize(name)), {\n get: function get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }), _ref14;\n}\n\nfunction parseValueDefinitionPair(_ref15) {\n var _ref16 = _slicedToArray(_ref15, 2),\n token = _ref16[0],\n typeDefinition = _ref16[1];\n\n return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\n\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\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\nfunction parseValueTypeDefault(defaultValue) {\n switch (_typeof(defaultValue)) {\n case \"boolean\":\n return \"boolean\";\n\n case \"number\":\n return \"number\";\n\n case \"string\":\n return \"string\";\n }\n\n if (Array.isArray(defaultValue)) return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\") return \"object\";\n}\n\nfunction parseValueTypeObject(typeObject) {\n var typeFromObject = parseValueTypeConstant(typeObject.type);\n\n if (typeFromObject) {\n var defaultValueType = parseValueTypeDefault(typeObject.default);\n\n if (typeFromObject !== defaultValueType) {\n throw new Error(\"Type \\\"\".concat(typeFromObject, \"\\\" must match the type of the default value. Given default value: \\\"\").concat(typeObject.default, \"\\\" as \\\"\").concat(defaultValueType, \"\\\"\"));\n }\n\n return typeFromObject;\n }\n}\n\nfunction parseValueTypeDefinition(typeDefinition) {\n var typeFromObject = parseValueTypeObject(typeDefinition);\n var typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n var typeFromConstant = parseValueTypeConstant(typeDefinition);\n var type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type) return type;\n throw new Error(\"Unknown value type \\\"\".concat(typeDefinition, \"\\\"\"));\n}\n\nfunction defaultValueForDefinition(typeDefinition) {\n var constant = parseValueTypeConstant(typeDefinition);\n if (constant) return defaultValuesByType[constant];\n var defaultValue = typeDefinition.default;\n if (defaultValue !== undefined) return defaultValue;\n return typeDefinition;\n}\n\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n var key = \"\".concat(dasherize(token), \"-value\");\n var type = parseValueTypeDefinition(typeDefinition);\n return {\n type: type,\n key: key,\n name: camelize(key),\n\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n\n reader: readers[type],\n writer: writers[type] || writers.default\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 Number(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 \"\".concat(value);\n}\n\nvar Controller = /*#__PURE__*/function () {\n function Controller(context) {\n _classCallCheck(this, Controller);\n\n this.context = context;\n }\n\n _createClass(Controller, [{\n key: \"application\",\n get: function get() {\n return this.context.application;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"targets\",\n get: function get() {\n return this.scope.targets;\n }\n }, {\n key: \"classes\",\n get: function get() {\n return this.scope.classes;\n }\n }, {\n key: \"data\",\n get: function get() {\n return this.scope.data;\n }\n }, {\n key: \"initialize\",\n value: function initialize() {}\n }, {\n key: \"connect\",\n value: function connect() {}\n }, {\n key: \"disconnect\",\n value: function disconnect() {}\n }, {\n key: \"dispatch\",\n value: function dispatch(eventName) {\n var _ref17 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref17$target = _ref17.target,\n target = _ref17$target === void 0 ? this.element : _ref17$target,\n _ref17$detail = _ref17.detail,\n detail = _ref17$detail === void 0 ? {} : _ref17$detail,\n _ref17$prefix = _ref17.prefix,\n prefix = _ref17$prefix === void 0 ? this.identifier : _ref17$prefix,\n _ref17$bubbles = _ref17.bubbles,\n bubbles = _ref17$bubbles === void 0 ? true : _ref17$bubbles,\n _ref17$cancelable = _ref17.cancelable,\n cancelable = _ref17$cancelable === void 0 ? true : _ref17$cancelable;\n\n var type = prefix ? \"\".concat(prefix, \":\").concat(eventName) : eventName;\n var event = new CustomEvent(type, {\n detail: detail,\n bubbles: bubbles,\n cancelable: cancelable\n });\n target.dispatchEvent(event);\n return event;\n }\n }], [{\n key: \"shouldLoad\",\n get: function get() {\n return true;\n }\n }]);\n\n return Controller;\n}();\n\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, _add as add, defaultSchema, del, fetch, prune };","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction e(e) {\n return e.replace(/(?:[_-])([a-z0-9])/g, function (e, t) {\n return t.toUpperCase();\n });\n}\n\nfunction t(e) {\n return e.charAt(0).toUpperCase() + e.slice(1);\n}\n\nfunction r(e, t) {\n var r = s(e);\n return Array.from(r.reduce(function (e, r) {\n return function (e, t) {\n var r = e[t];\n return Array.isArray(r) ? r : [];\n }(r, t).forEach(function (t) {\n return e.add(t);\n }), e;\n }, new Set()));\n}\n\nfunction n(e, t) {\n return s(e).reduce(function (e, r) {\n return e.push.apply(e, _toConsumableArray(function (e, t) {\n var r = e[t];\n return r ? Object.keys(r).map(function (e) {\n return [e, r[e]];\n }) : [];\n }(r, t))), e;\n }, []);\n}\n\nfunction s(e) {\n var t = [];\n\n for (; e;) {\n t.push(e), e = Object.getPrototypeOf(e);\n }\n\n return t.reverse();\n}\n\nfunction c(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n t = _ref2[0],\n r = _ref2[1];\n\n return function (t, r) {\n var n = \"\".concat((c = t, c.replace(/([A-Z])/g, function (e, t) {\n return \"-\".concat(t.toLowerCase());\n })), \"-value\"),\n s = function (e) {\n var t = function (e) {\n var t = a(e.type);\n\n if (t) {\n var _r = i(e.default);\n\n if (t !== _r) throw new Error(\"Type \\\"\".concat(t, \"\\\" must match the type of the default value. Given default value: \\\"\").concat(e.default, \"\\\" as \\\"\").concat(_r, \"\\\"\"));\n return t;\n }\n }(e),\n r = i(e),\n n = a(e),\n s = t || r || n;\n\n if (s) return s;\n throw new Error(\"Unknown value type \\\"\".concat(e, \"\\\"\"));\n }(r);\n\n var c;\n return {\n type: s,\n key: n,\n name: e(n),\n\n get defaultValue() {\n return function (e) {\n var t = a(e);\n if (t) return o[t];\n var r = e.default;\n return void 0 !== r ? r : e;\n }(r);\n },\n\n get hasCustomDefaultValue() {\n return void 0 !== i(r);\n },\n\n reader: u[s],\n writer: h[s] || h.default\n };\n }(t, r);\n}\n\nfunction a(e) {\n switch (e) {\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\nfunction i(e) {\n switch (_typeof(e)) {\n case \"boolean\":\n return \"boolean\";\n\n case \"number\":\n return \"number\";\n\n case \"string\":\n return \"string\";\n }\n\n return Array.isArray(e) ? \"array\" : \"[object Object]\" === Object.prototype.toString.call(e) ? \"object\" : void 0;\n}\n\n(function () {\n function e(e) {\n function t() {\n return Reflect.construct(e, arguments, this instanceof t ? this.constructor : void 0);\n }\n\n return t.prototype = Object.create(e.prototype, {\n constructor: {\n value: t\n }\n }), Reflect.setPrototypeOf(t, e), t;\n }\n\n try {\n (function () {\n var t = e(function () {\n this.a.call(this);\n });\n t.prototype.a = function () {}, new t();\n })();\n } catch (t) {\n return function (e) {\n return /*#__PURE__*/function (_e2) {\n _inherits(_class, _e2);\n\n var _super = _createSuper(_class);\n\n function _class() {\n _classCallCheck(this, _class);\n\n return _super.apply(this, arguments);\n }\n\n return _createClass(_class);\n }(e);\n };\n }\n})();\n\nvar o = {\n get array() {\n return [];\n },\n\n boolean: !1,\n number: 0,\n\n get object() {\n return {};\n },\n\n string: \"\"\n},\n u = {\n array: function array(e) {\n var t = JSON.parse(e);\n if (!Array.isArray(t)) throw new TypeError(\"Expected array\");\n return t;\n },\n boolean: function boolean(e) {\n return !(\"0\" == e || \"false\" == e);\n },\n number: function number(e) {\n return Number(e);\n },\n object: function object(e) {\n var t = JSON.parse(e);\n if (null === t || \"object\" != _typeof(t) || Array.isArray(t)) throw new TypeError(\"Expected object\");\n return t;\n },\n string: function string(e) {\n return e;\n }\n},\n h = {\n default: function _default(e) {\n return \"\".concat(e);\n },\n array: l,\n object: l\n};\n\nfunction l(e) {\n return JSON.stringify(e);\n}\n\nvar g = /*#__PURE__*/function () {\n function g(e) {\n _classCallCheck(this, g);\n\n this.context = e;\n }\n\n _createClass(g, [{\n key: \"application\",\n get: function get() {\n return this.context.application;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"targets\",\n get: function get() {\n return this.scope.targets;\n }\n }, {\n key: \"classes\",\n get: function get() {\n return this.scope.classes;\n }\n }, {\n key: \"data\",\n get: function get() {\n return this.scope.data;\n }\n }, {\n key: \"initialize\",\n value: function initialize() {}\n }, {\n key: \"connect\",\n value: function connect() {}\n }, {\n key: \"disconnect\",\n value: function disconnect() {}\n }, {\n key: \"dispatch\",\n value: function dispatch(e) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$target = _ref3.target,\n t = _ref3$target === void 0 ? this.element : _ref3$target,\n _ref3$detail = _ref3.detail,\n r = _ref3$detail === void 0 ? {} : _ref3$detail,\n _ref3$prefix = _ref3.prefix,\n n = _ref3$prefix === void 0 ? this.identifier : _ref3$prefix,\n _ref3$bubbles = _ref3.bubbles,\n s = _ref3$bubbles === void 0 ? !0 : _ref3$bubbles,\n _ref3$cancelable = _ref3.cancelable,\n c = _ref3$cancelable === void 0 ? !0 : _ref3$cancelable;\n\n var a = new CustomEvent(n ? \"\".concat(n, \":\").concat(e) : e, {\n detail: r,\n bubbles: s,\n cancelable: c\n });\n return t.dispatchEvent(a), a;\n }\n }], [{\n key: \"shouldLoad\",\n get: function get() {\n return !0;\n }\n }]);\n\n return g;\n}();\n\ng.blessings = [function (e) {\n return r(e, \"classes\").reduce(function (e, r) {\n var _Object$assign;\n\n return Object.assign(e, (_Object$assign = {}, _defineProperty(_Object$assign, \"\".concat(n = r, \"Class\"), {\n get: function get() {\n var e = this.classes;\n if (e.has(n)) return e.get(n);\n {\n var _t = e.getAttributeName(n);\n\n throw new Error(\"Missing attribute \\\"\".concat(_t, \"\\\"\"));\n }\n }\n }), _defineProperty(_Object$assign, \"\".concat(n, \"Classes\"), {\n get: function get() {\n return this.classes.getAll(n);\n }\n }), _defineProperty(_Object$assign, \"has\".concat(t(n), \"Class\"), {\n get: function get() {\n return this.classes.has(n);\n }\n }), _Object$assign));\n var n;\n }, {});\n}, function (e) {\n return r(e, \"targets\").reduce(function (e, r) {\n var _Object$assign2;\n\n return Object.assign(e, (_Object$assign2 = {}, _defineProperty(_Object$assign2, \"\".concat(n = r, \"Target\"), {\n get: function get() {\n var e = this.targets.find(n);\n if (e) return e;\n throw new Error(\"Missing target element \\\"\".concat(n, \"\\\" for \\\"\").concat(this.identifier, \"\\\" controller\"));\n }\n }), _defineProperty(_Object$assign2, \"\".concat(n, \"Targets\"), {\n get: function get() {\n return this.targets.findAll(n);\n }\n }), _defineProperty(_Object$assign2, \"has\".concat(t(n), \"Target\"), {\n get: function get() {\n return this.targets.has(n);\n }\n }), _Object$assign2));\n var n;\n }, {});\n}, function (e) {\n var r = n(e, \"values\"),\n s = {\n valueDescriptorMap: {\n get: function get() {\n var _this = this;\n\n return r.reduce(function (e, t) {\n var r = c(t),\n n = _this.data.getAttributeNameForKey(r.key);\n\n return Object.assign(e, _defineProperty({}, n, r));\n }, {});\n }\n }\n };\n return r.reduce(function (e, r) {\n return Object.assign(e, function (e) {\n var _ref4;\n\n var r = c(e),\n n = r.key,\n s = r.name,\n a = r.reader,\n i = r.writer;\n return _ref4 = {}, _defineProperty(_ref4, s, {\n get: function get() {\n var e = this.data.get(n);\n return null !== e ? a(e) : r.defaultValue;\n },\n set: function set(e) {\n void 0 === e ? this.data.delete(n) : this.data.set(n, i(e));\n }\n }), _defineProperty(_ref4, \"has\".concat(t(s)), {\n get: function get() {\n return this.data.has(n) || r.hasCustomDefaultValue;\n }\n }), _ref4;\n }(r));\n }, s);\n}], g.targets = [], g.values = {};\n\nvar f = /*#__PURE__*/function (_g) {\n _inherits(f, _g);\n\n var _super2 = _createSuper(f);\n\n function f() {\n _classCallCheck(this, f);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(f, [{\n key: \"initialize\",\n value: function initialize() {\n this.toggle = this.toggle.bind(this), this.refresh = this.refresh.bind(this);\n }\n }, {\n key: \"connect\",\n value: function connect() {\n var _this2 = this;\n\n this.hasCheckboxAllTarget && (this.checkboxAllTarget.addEventListener(\"change\", this.toggle), this.checkboxTargets.forEach(function (e) {\n return e.addEventListener(\"change\", _this2.refresh);\n }), this.refresh());\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n var _this3 = this;\n\n this.hasCheckboxAllTarget && (this.checkboxAllTarget.removeEventListener(\"change\", this.toggle), this.checkboxTargets.forEach(function (e) {\n return e.removeEventListener(\"change\", _this3.refresh);\n }));\n }\n }, {\n key: \"toggle\",\n value: function toggle(e) {\n var _this4 = this;\n\n e.preventDefault(), this.checkboxTargets.forEach(function (t) {\n t.checked = e.target.checked, _this4.triggerInputEvent(t);\n });\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n var e = this.checkboxTargets.length,\n t = this.checked.length;\n this.checkboxAllTarget.checked = t > 0, this.checkboxAllTarget.indeterminate = t > 0 && t < e;\n }\n }, {\n key: \"triggerInputEvent\",\n value: function triggerInputEvent(e) {\n var t = new Event(\"input\", {\n bubbles: !1,\n cancelable: !0\n });\n e.dispatchEvent(t);\n }\n }, {\n key: \"checked\",\n get: function get() {\n return this.checkboxTargets.filter(function (e) {\n return e.checked;\n });\n }\n }, {\n key: \"unchecked\",\n get: function get() {\n return this.checkboxTargets.filter(function (e) {\n return !e.checked;\n });\n }\n }]);\n\n return f;\n}(g);\n\nf.targets = [\"checkboxAll\", \"checkbox\"];\nexport default f;","/**!\n * Sortable 1.14.0\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\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 _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) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.14.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, includeDragEl) {\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 && (includeDragEl || 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 = _objectSpread2({}, 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](_objectSpread2({\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](_objectSpread2({\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 = _objectSpread2(_objectSpread2({}, 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 _excluded = [\"evt\"];\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, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\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(_objectSpread2({\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 var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (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, _objectSpread2({\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 = parentEl !== rootEl) // 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 // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\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 (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\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 _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\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 = _objectSpread2(_objectSpread2({}, 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 forceAutoScrollFallback: false,\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 || this.options.forceAutoScrollFallback || 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 folding = false; // Do not \"unfold\" after around dragEl if reverted\n\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 /**\n * Selects the provided multi-drag item\n * @param {HTMLElement} el The element to be selected\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 /**\n * Deselects the provided multi-drag item\n * @param {HTMLElement} el The element to be deselected\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/**\n * Insert multi-drag clones\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\n * @param {HTMLElement} rootEl\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\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n};\nvar logger = {\n log: function log() {\n if (this.enabled) {\n var _adapters$logger;\n\n for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n\n messages.push(Date.now());\n\n (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [\"[ActionCable]\"].concat(messages));\n }\n }\n};\n\nvar now = function now() {\n return new Date().getTime();\n};\n\nvar secondsSince = function secondsSince(time) {\n return (now() - time) / 1e3;\n};\n\nvar ConnectionMonitor = /*#__PURE__*/function () {\n function ConnectionMonitor(connection) {\n _classCallCheck(this, ConnectionMonitor);\n\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n\n _createClass(ConnectionMonitor, [{\n key: \"start\",\n value: function start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor started. stale threshold = \".concat(this.constructor.staleThreshold, \" s\"));\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n }\n }, {\n key: \"isRunning\",\n value: function isRunning() {\n return this.startedAt && !this.stoppedAt;\n }\n }, {\n key: \"recordPing\",\n value: function recordPing() {\n this.pingedAt = now();\n }\n }, {\n key: \"recordConnect\",\n value: function recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n }\n }, {\n key: \"recordDisconnect\",\n value: function recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n }\n }, {\n key: \"startPolling\",\n value: function startPolling() {\n this.stopPolling();\n this.poll();\n }\n }, {\n key: \"stopPolling\",\n value: function stopPolling() {\n clearTimeout(this.pollTimeout);\n }\n }, {\n key: \"poll\",\n value: function poll() {\n var _this = this;\n\n this.pollTimeout = setTimeout(function () {\n _this.reconnectIfStale();\n\n _this.poll();\n }, this.getPollInterval());\n }\n }, {\n key: \"getPollInterval\",\n value: function getPollInterval() {\n var _this$constructor = this.constructor,\n staleThreshold = _this$constructor.staleThreshold,\n reconnectionBackoffRate = _this$constructor.reconnectionBackoffRate;\n var backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n var jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n var jitter = jitterMax * Math.random();\n return staleThreshold * 1e3 * backoff * (1 + jitter);\n }\n }, {\n key: \"reconnectIfStale\",\n value: function reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \".concat(this.reconnectAttempts, \", time stale = \").concat(secondsSince(this.refreshedAt), \" s, stale threshold = \").concat(this.constructor.staleThreshold, \" s\"));\n this.reconnectAttempts++;\n\n if (this.disconnectedRecently()) {\n logger.log(\"ConnectionMonitor skipping reopening recent disconnect. time disconnected = \".concat(secondsSince(this.disconnectedAt), \" s\"));\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n }\n }, {\n key: \"refreshedAt\",\n get: function get() {\n return this.pingedAt ? this.pingedAt : this.startedAt;\n }\n }, {\n key: \"connectionIsStale\",\n value: function connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n }\n }, {\n key: \"disconnectedRecently\",\n value: function disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n }\n }, {\n key: \"visibilityDidChange\",\n value: function visibilityDidChange() {\n var _this2 = this;\n\n if (document.visibilityState === \"visible\") {\n setTimeout(function () {\n if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = \".concat(document.visibilityState));\n\n _this2.connection.reopen();\n }\n }, 200);\n }\n }\n }]);\n\n return ConnectionMonitor;\n}();\n\nConnectionMonitor.staleThreshold = 6;\nConnectionMonitor.reconnectionBackoffRate = .15;\nvar INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [\"actioncable-v1-json\", \"actioncable-unsupported\"]\n};\nvar message_types = INTERNAL.message_types,\n protocols = INTERNAL.protocols;\nvar supportedProtocols = protocols.slice(0, protocols.length - 1);\nvar indexOf = [].indexOf;\n\nvar Connection = /*#__PURE__*/function () {\n function Connection(consumer) {\n _classCallCheck(this, Connection);\n\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n\n _createClass(Connection, [{\n key: \"send\",\n value: function send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n }\n }, {\n key: \"open\",\n value: function open() {\n if (this.isActive()) {\n logger.log(\"Attempted to open WebSocket, but existing socket is \".concat(this.getState()));\n return false;\n } else {\n logger.log(\"Opening WebSocket, current state is \".concat(this.getState(), \", subprotocols: \").concat(protocols));\n\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n }\n }, {\n key: \"close\",\n value: function close() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n allowReconnect: true\n },\n allowReconnect = _ref.allowReconnect;\n\n if (!allowReconnect) {\n this.monitor.stop();\n }\n\n if (this.isActive()) {\n return this.webSocket.close();\n }\n }\n }, {\n key: \"reopen\",\n value: function reopen() {\n logger.log(\"Reopening WebSocket, current state is \".concat(this.getState()));\n\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(\"Reopening WebSocket in \".concat(this.constructor.reopenDelay, \"ms\"));\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n }\n }, {\n key: \"getProtocol\",\n value: function getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n }\n }, {\n key: \"isOpen\",\n value: function isOpen() {\n return this.isState(\"open\");\n }\n }, {\n key: \"isActive\",\n value: function isActive() {\n return this.isState(\"open\", \"connecting\");\n }\n }, {\n key: \"isProtocolSupported\",\n value: function isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n }\n }, {\n key: \"isState\",\n value: function isState() {\n for (var _len2 = arguments.length, states = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n states[_key2] = arguments[_key2];\n }\n\n return indexOf.call(states, this.getState()) >= 0;\n }\n }, {\n key: \"getState\",\n value: function getState() {\n if (this.webSocket) {\n for (var state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n\n return null;\n }\n }, {\n key: \"installEventHandlers\",\n value: function installEventHandlers() {\n for (var eventName in this.events) {\n var handler = this.events[eventName].bind(this);\n this.webSocket[\"on\".concat(eventName)] = handler;\n }\n }\n }, {\n key: \"uninstallEventHandlers\",\n value: function uninstallEventHandlers() {\n for (var eventName in this.events) {\n this.webSocket[\"on\".concat(eventName)] = function () {};\n }\n }\n }]);\n\n return Connection;\n}();\n\nConnection.reopenDelay = 500;\nConnection.prototype.events = {\n message: function message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n\n var _JSON$parse = JSON.parse(event.data),\n identifier = _JSON$parse.identifier,\n message = _JSON$parse.message,\n reason = _JSON$parse.reason,\n reconnect = _JSON$parse.reconnect,\n type = _JSON$parse.type;\n\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(\"Disconnecting. Reason: \".concat(reason));\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier);\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function open() {\n logger.log(\"WebSocket onopen event, using '\".concat(this.getProtocol(), \"' subprotocol\"));\n this.disconnected = false;\n\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function close(event) {\n logger.log(\"WebSocket onclose event\");\n\n if (this.disconnected) {\n return;\n }\n\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function error() {\n logger.log(\"WebSocket onerror event\");\n }\n};\n\nvar extend = function extend(object, properties) {\n if (properties != null) {\n for (var key in properties) {\n var value = properties[key];\n object[key] = value;\n }\n }\n\n return object;\n};\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(consumer) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mixin = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, Subscription);\n\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n\n _createClass(Subscription, [{\n key: \"perform\",\n value: function perform(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n data.action = action;\n return this.send(data);\n }\n }, {\n key: \"send\",\n value: function send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n }\n }, {\n key: \"unsubscribe\",\n value: function unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionGuarantor = /*#__PURE__*/function () {\n function SubscriptionGuarantor(subscriptions) {\n _classCallCheck(this, SubscriptionGuarantor);\n\n this.subscriptions = subscriptions;\n this.pendingSubscriptions = [];\n }\n\n _createClass(SubscriptionGuarantor, [{\n key: \"guarantee\",\n value: function guarantee(subscription) {\n if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n logger.log(\"SubscriptionGuarantor guaranteeing \".concat(subscription.identifier));\n this.pendingSubscriptions.push(subscription);\n } else {\n logger.log(\"SubscriptionGuarantor already guaranteeing \".concat(subscription.identifier));\n }\n\n this.startGuaranteeing();\n }\n }, {\n key: \"forget\",\n value: function forget(subscription) {\n logger.log(\"SubscriptionGuarantor forgetting \".concat(subscription.identifier));\n this.pendingSubscriptions = this.pendingSubscriptions.filter(function (s) {\n return s !== subscription;\n });\n }\n }, {\n key: \"startGuaranteeing\",\n value: function startGuaranteeing() {\n this.stopGuaranteeing();\n this.retrySubscribing();\n }\n }, {\n key: \"stopGuaranteeing\",\n value: function stopGuaranteeing() {\n clearTimeout(this.retryTimeout);\n }\n }, {\n key: \"retrySubscribing\",\n value: function retrySubscribing() {\n var _this3 = this;\n\n this.retryTimeout = setTimeout(function () {\n if (_this3.subscriptions && typeof _this3.subscriptions.subscribe === \"function\") {\n _this3.pendingSubscriptions.map(function (subscription) {\n logger.log(\"SubscriptionGuarantor resubscribing \".concat(subscription.identifier));\n\n _this3.subscriptions.subscribe(subscription);\n });\n }\n }, 500);\n }\n }]);\n\n return SubscriptionGuarantor;\n}();\n\nvar Subscriptions = /*#__PURE__*/function () {\n function Subscriptions(consumer) {\n _classCallCheck(this, Subscriptions);\n\n this.consumer = consumer;\n this.guarantor = new SubscriptionGuarantor(this);\n this.subscriptions = [];\n }\n\n _createClass(Subscriptions, [{\n key: \"create\",\n value: function create(channelName, mixin) {\n var channel = channelName;\n var params = _typeof(channel) === \"object\" ? channel : {\n channel: channel\n };\n var subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n }\n }, {\n key: \"add\",\n value: function add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.subscribe(subscription);\n return subscription;\n }\n }, {\n key: \"remove\",\n value: function remove(subscription) {\n this.forget(subscription);\n\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n\n return subscription;\n }\n }, {\n key: \"reject\",\n value: function reject(identifier) {\n var _this4 = this;\n\n return this.findAll(identifier).map(function (subscription) {\n _this4.forget(subscription);\n\n _this4.notify(subscription, \"rejected\");\n\n return subscription;\n });\n }\n }, {\n key: \"forget\",\n value: function forget(subscription) {\n this.guarantor.forget(subscription);\n this.subscriptions = this.subscriptions.filter(function (s) {\n return s !== subscription;\n });\n return subscription;\n }\n }, {\n key: \"findAll\",\n value: function findAll(identifier) {\n return this.subscriptions.filter(function (s) {\n return s.identifier === identifier;\n });\n }\n }, {\n key: \"reload\",\n value: function reload() {\n var _this5 = this;\n\n return this.subscriptions.map(function (subscription) {\n return _this5.subscribe(subscription);\n });\n }\n }, {\n key: \"notifyAll\",\n value: function notifyAll(callbackName) {\n var _this6 = this;\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return this.subscriptions.map(function (subscription) {\n return _this6.notify.apply(_this6, [subscription, callbackName].concat(args));\n });\n }\n }, {\n key: \"notify\",\n value: function notify(subscription, callbackName) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n\n var subscriptions;\n\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [subscription];\n }\n\n return subscriptions.map(function (subscription) {\n return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n });\n }\n }, {\n key: \"subscribe\",\n value: function subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription);\n }\n }\n }, {\n key: \"confirmSubscription\",\n value: function confirmSubscription(identifier) {\n var _this7 = this;\n\n logger.log(\"Subscription confirmed \".concat(identifier));\n this.findAll(identifier).map(function (subscription) {\n return _this7.guarantor.forget(subscription);\n });\n }\n }, {\n key: \"sendCommand\",\n value: function sendCommand(subscription, command) {\n var identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n }\n }]);\n\n return Subscriptions;\n}();\n\nvar Consumer = /*#__PURE__*/function () {\n function Consumer(url) {\n _classCallCheck(this, Consumer);\n\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n\n _createClass(Consumer, [{\n key: \"url\",\n get: function get() {\n return createWebSocketURL(this._url);\n }\n }, {\n key: \"send\",\n value: function send(data) {\n return this.connection.send(data);\n }\n }, {\n key: \"connect\",\n value: function connect() {\n return this.connection.open();\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n }\n }, {\n key: \"ensureActiveConnection\",\n value: function ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n }\n }]);\n\n return Consumer;\n}();\n\nfunction createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n\n if (url && !/^wss?:/i.test(url)) {\n var a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n}\n\nfunction createConsumer() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n return new Consumer(url);\n}\n\nfunction getConfig(name) {\n var element = document.head.querySelector(\"meta[name='action-cable-\".concat(name, \"']\"));\n\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };","import _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nexport var FetchResponse = /*#__PURE__*/function () {\n function FetchResponse(response) {\n _classCallCheck(this, FetchResponse);\n\n this.response = response;\n }\n\n _createClass(FetchResponse, [{\n key: \"statusCode\",\n get: function get() {\n return this.response.status;\n }\n }, {\n key: \"redirected\",\n get: function get() {\n return this.response.redirected;\n }\n }, {\n key: \"ok\",\n get: function get() {\n return this.response.ok;\n }\n }, {\n key: \"unauthenticated\",\n get: function get() {\n return this.statusCode === 401;\n }\n }, {\n key: \"unprocessableEntity\",\n get: function get() {\n return this.statusCode === 422;\n }\n }, {\n key: \"authenticationURL\",\n get: function get() {\n return this.response.headers.get('WWW-Authenticate');\n }\n }, {\n key: \"contentType\",\n get: function get() {\n var contentType = this.response.headers.get('Content-Type') || '';\n return contentType.replace(/;.*$/, '');\n }\n }, {\n key: \"headers\",\n get: function get() {\n return this.response.headers;\n }\n }, {\n key: \"html\",\n get: function get() {\n if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n return this.text;\n }\n\n return Promise.reject(new Error(\"Expected an HTML response but got \\\"\".concat(this.contentType, \"\\\" instead\")));\n }\n }, {\n key: \"json\",\n get: function get() {\n if (this.contentType.match(/^application\\/.*json$/)) {\n return this.responseJson || (this.responseJson = this.response.json());\n }\n\n return Promise.reject(new Error(\"Expected a JSON response but got \\\"\".concat(this.contentType, \"\\\" instead\")));\n }\n }, {\n key: \"text\",\n get: function get() {\n return this.responseText || (this.responseText = this.response.text());\n }\n }, {\n key: \"isTurboStream\",\n get: function get() {\n return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/);\n }\n }, {\n key: \"renderTurboStream\",\n value: function () {\n var _renderTurboStream = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this.isTurboStream) {\n _context.next = 13;\n break;\n }\n\n if (!window.Turbo) {\n _context.next = 10;\n break;\n }\n\n _context.t0 = window.Turbo;\n _context.next = 5;\n return this.text;\n\n case 5:\n _context.t1 = _context.sent;\n _context.next = 8;\n return _context.t0.renderStreamMessage.call(_context.t0, _context.t1);\n\n case 8:\n _context.next = 11;\n break;\n\n case 10:\n console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js');\n\n case 11:\n _context.next = 14;\n break;\n\n case 13:\n return _context.abrupt(\"return\", Promise.reject(new Error(\"Expected a Turbo Stream response but got \\\"\".concat(this.contentType, \"\\\" instead\"))));\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function renderTurboStream() {\n return _renderTurboStream.apply(this, arguments);\n }\n\n return renderTurboStream;\n }()\n }]);\n\n return FetchResponse;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nexport var RequestInterceptor = /*#__PURE__*/function () {\n function RequestInterceptor() {\n _classCallCheck(this, RequestInterceptor);\n }\n\n _createClass(RequestInterceptor, null, [{\n key: \"register\",\n value: function register(interceptor) {\n this.interceptor = interceptor;\n }\n }, {\n key: \"get\",\n value: function get() {\n return this.interceptor;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.interceptor = undefined;\n }\n }]);\n\n return RequestInterceptor;\n}();","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nexport function getCookie(name) {\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var prefix = \"\".concat(encodeURIComponent(name), \"=\");\n var cookie = cookies.find(function (cookie) {\n return cookie.startsWith(prefix);\n });\n\n if (cookie) {\n var value = cookie.split('=').slice(1).join('=');\n\n if (value) {\n return decodeURIComponent(value);\n }\n }\n}\nexport function compact(object) {\n var result = {};\n\n for (var key in object) {\n var value = object[key];\n\n if (value !== undefined) {\n result[key] = value;\n }\n }\n\n return result;\n}\nexport function metaContent(name) {\n var element = document.head.querySelector(\"meta[name=\\\"\".concat(name, \"\\\"]\"));\n return element && element.content;\n}\nexport function stringEntriesFromFormData(formData) {\n return _toConsumableArray(formData).reduce(function (entries, _ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n name = _ref2[0],\n value = _ref2[1];\n\n return entries.concat(typeof value === 'string' ? [[name, value]] : []);\n }, []);\n}\nexport function mergeEntries(searchParams, entries) {\n var _iterator = _createForOfIteratorHelper(entries),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ref5 = _step.value;\n\n var _ref4 = _slicedToArray(_ref5, 2);\n\n var name = _ref4[0];\n var value = _ref4[1];\n if (value instanceof window.File) continue;\n\n if (searchParams.has(name)) {\n searchParams.delete(name);\n searchParams.set(name, value);\n } else {\n searchParams.append(name, value);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}","import _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { FetchResponse } from './fetch_response';\nimport { RequestInterceptor } from './request_interceptor';\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils';\nexport var FetchRequest = /*#__PURE__*/function () {\n function FetchRequest(method, url) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, FetchRequest);\n\n this.method = method;\n this.options = options;\n this.originalUrl = url.toString();\n }\n\n _createClass(FetchRequest, [{\n key: \"perform\",\n value: function () {\n var _perform = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var requestInterceptor, response;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n requestInterceptor = RequestInterceptor.get();\n\n if (!requestInterceptor) {\n _context.next = 5;\n break;\n }\n\n _context.next = 5;\n return requestInterceptor(this);\n\n case 5:\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context[\"catch\"](0);\n console.error(_context.t0);\n\n case 10:\n _context.t1 = FetchResponse;\n _context.next = 13;\n return window.fetch(this.url, this.fetchOptions);\n\n case 13:\n _context.t2 = _context.sent;\n response = new _context.t1(_context.t2);\n\n if (!(response.unauthenticated && response.authenticationURL)) {\n _context.next = 17;\n break;\n }\n\n return _context.abrupt(\"return\", Promise.reject(window.location.href = response.authenticationURL));\n\n case 17:\n if (!(response.ok && response.isTurboStream)) {\n _context.next = 20;\n break;\n }\n\n _context.next = 20;\n return response.renderTurboStream();\n\n case 20:\n return _context.abrupt(\"return\", response);\n\n case 21:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 7]]);\n }));\n\n function perform() {\n return _perform.apply(this, arguments);\n }\n\n return perform;\n }()\n }, {\n key: \"addHeader\",\n value: function addHeader(key, value) {\n var headers = this.additionalHeaders;\n headers[key] = value;\n this.options.headers = headers;\n }\n }, {\n key: \"fetchOptions\",\n get: function get() {\n return {\n method: this.method.toUpperCase(),\n headers: this.headers,\n body: this.formattedBody,\n signal: this.signal,\n credentials: 'same-origin',\n redirect: this.redirect\n };\n }\n }, {\n key: \"headers\",\n get: function get() {\n return compact(Object.assign({\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-CSRF-Token': this.csrfToken,\n 'Content-Type': this.contentType,\n Accept: this.accept\n }, this.additionalHeaders));\n }\n }, {\n key: \"csrfToken\",\n get: function get() {\n return getCookie(metaContent('csrf-param')) || metaContent('csrf-token');\n }\n }, {\n key: \"contentType\",\n get: function get() {\n if (this.options.contentType) {\n return this.options.contentType;\n } else if (this.body == null || this.body instanceof window.FormData) {\n return undefined;\n } else if (this.body instanceof window.File) {\n return this.body.type;\n }\n\n return 'application/json';\n }\n }, {\n key: \"accept\",\n get: function get() {\n switch (this.responseKind) {\n case 'html':\n return 'text/html, application/xhtml+xml';\n\n case 'turbo-stream':\n return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml';\n\n case 'json':\n return 'application/json, application/vnd.api+json';\n\n default:\n return '*/*';\n }\n }\n }, {\n key: \"body\",\n get: function get() {\n return this.options.body;\n }\n }, {\n key: \"query\",\n get: function get() {\n var originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0];\n var params = new URLSearchParams(originalQuery);\n var requestQuery = this.options.query;\n\n if (requestQuery instanceof window.FormData) {\n requestQuery = stringEntriesFromFormData(requestQuery);\n } else if (requestQuery instanceof window.URLSearchParams) {\n requestQuery = requestQuery.entries();\n } else {\n requestQuery = Object.entries(requestQuery || {});\n }\n\n mergeEntries(params, requestQuery);\n var query = params.toString();\n return query.length > 0 ? \"?\".concat(query) : '';\n }\n }, {\n key: \"url\",\n get: function get() {\n return this.originalUrl.split('?')[0].split('#')[0] + this.query;\n }\n }, {\n key: \"responseKind\",\n get: function get() {\n return this.options.responseKind || 'html';\n }\n }, {\n key: \"signal\",\n get: function get() {\n return this.options.signal;\n }\n }, {\n key: \"redirect\",\n get: function get() {\n return this.options.redirect || 'follow';\n }\n }, {\n key: \"additionalHeaders\",\n get: function get() {\n return this.options.headers || {};\n }\n }, {\n key: \"formattedBody\",\n get: function get() {\n var bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]';\n var contentTypeIsJson = this.headers['Content-Type'] === 'application/json';\n\n if (contentTypeIsJson && !bodyIsAString) {\n return JSON.stringify(this.body);\n }\n\n return this.body;\n }\n }]);\n\n return FetchRequest;\n}();","import _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nimport { FetchRequest } from './fetch_request';\n\nfunction get(_x, _x2) {\n return _get.apply(this, arguments);\n}\n\nfunction _get() {\n _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, options) {\n var request;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n request = new FetchRequest('get', url, options);\n return _context.abrupt(\"return\", request.perform());\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _get.apply(this, arguments);\n}\n\nfunction post(_x3, _x4) {\n return _post.apply(this, arguments);\n}\n\nfunction _post() {\n _post = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(url, options) {\n var request;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n request = new FetchRequest('post', url, options);\n return _context2.abrupt(\"return\", request.perform());\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _post.apply(this, arguments);\n}\n\nfunction put(_x5, _x6) {\n return _put.apply(this, arguments);\n}\n\nfunction _put() {\n _put = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(url, options) {\n var request;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n request = new FetchRequest('put', url, options);\n return _context3.abrupt(\"return\", request.perform());\n\n case 2:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return _put.apply(this, arguments);\n}\n\nfunction patch(_x7, _x8) {\n return _patch.apply(this, arguments);\n}\n\nfunction _patch() {\n _patch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(url, options) {\n var request;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n request = new FetchRequest('patch', url, options);\n return _context4.abrupt(\"return\", request.perform());\n\n case 2:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n return _patch.apply(this, arguments);\n}\n\nfunction destroy(_x9, _x10) {\n return _destroy.apply(this, arguments);\n}\n\nfunction _destroy() {\n _destroy = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(url, options) {\n var request;\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n request = new FetchRequest('delete', url, options);\n return _context5.abrupt(\"return\", request.perform());\n\n case 2:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n return _destroy.apply(this, arguments);\n}\n\nexport { get, post, put, patch, destroy };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function (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});","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export function isNodeEnv() {\n return Object.prototype.toString.call(typeof process !== \"undefined\" ? process : 0) === \"[object process]\";\n}\nexport function getGlobalObject() {\n return isNodeEnv() ? global : typeof window !== \"undefined\" ? window : typeof self !== \"undefined\" ? self : {};\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\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;","export default function (e, n) {\n return n = n || {}, new Promise(function (t, r) {\n var s = new XMLHttpRequest(),\n o = [],\n u = [],\n i = {},\n a = function a() {\n return {\n ok: 2 == (s.status / 100 | 0),\n statusText: s.statusText,\n status: s.status,\n url: s.responseURL,\n text: function text() {\n return Promise.resolve(s.responseText);\n },\n json: function json() {\n return Promise.resolve(s.responseText).then(JSON.parse);\n },\n blob: function blob() {\n return Promise.resolve(new Blob([s.response]));\n },\n clone: a,\n headers: {\n keys: function keys() {\n return o;\n },\n entries: function entries() {\n return u;\n },\n get: function get(e) {\n return i[e.toLowerCase()];\n },\n has: function has(e) {\n return e.toLowerCase() in i;\n }\n }\n };\n };\n\n for (var l in s.open(n.method || \"get\", e, !0), s.onload = function () {\n s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, function (e, n, t) {\n o.push(n = n.toLowerCase()), u.push([n, t]), i[n] = i[n] ? i[n] + \",\" + t : t;\n }), t(a());\n }, s.onerror = r, s.withCredentials = \"include\" == n.credentials, n.headers) {\n s.setRequestHeader(l, n.headers[l]);\n }\n\n s.send(n.body || null);\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */\n;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n\n return element[expando][key] = value;\n };\n\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function CustomEvent(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function get() {\n return true;\n }\n });\n }\n\n return result;\n };\n }\n\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function prepareOptions(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n\n options.accept = AcceptHeaders[options.dataType];\n\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n\n return options;\n };\n\n createXHR = function createXHR(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n\n xhr.withCredentials = !!options.withCredentials;\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n\n return xhr;\n };\n\n processResponse = function processResponse(response, type) {\n var parser, script;\n\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n\n return response;\n };\n\n Rails.href = function (element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n\n toArray = function toArray(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n\n if (additionalParam) {\n params.push(additionalParam);\n }\n\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n\n allowAction = function allowAction(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n\n if (!message) {\n return true;\n }\n\n answer = false;\n\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n\n callback = fire(element, 'confirm:complete', [answer]);\n }\n\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function (e) {\n var element;\n\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n\n element = e.target;\n } else {\n element = e;\n }\n\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function disableLinkElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function enableLinkElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function disableFormElements(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function disableFormElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function enableFormElements(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function enableFormElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n\n setData(element, 'ujs:enable-with', null);\n }\n\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function isXhrRedirect(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n\n if (!method) {\n return;\n }\n\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n }\n\n formContent += '<input type=\"submit\" />';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function isRemote(element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n\n if (!isRemote(element)) {\n return true;\n }\n\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function beforeSend(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function success() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function error() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function complete() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n\n if (!form) {\n return;\n }\n\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));","export function installErrorHandler(appsignal, application) {\n var prevHandler = application.handleError;\n\n application.handleError = function (error, message) {\n var span = appsignal.createSpan(function (span) {\n return span.setTags({\n framework: \"Stimulus\",\n message: message\n }).setError(error);\n });\n appsignal.send(span);\n\n if (prevHandler && typeof prevHandler === \"function\") {\n prevHandler.apply(this, arguments);\n }\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\nvar _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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\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\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if ((typeof Reflect === \"undefined\" ? \"undefined\" : _typeof(Reflect)) === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if ((typeof Reflect === \"undefined\" ? \"undefined\" : _typeof(Reflect)) === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(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}\nexport function __generator(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 (g && (g = 0, op[0] && (_ = 0)), _) {\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}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n };\n }\n\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n }\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spreadArrays() {\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}\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n;\n\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || _typeof(receiver) !== \"object\" && typeof receiver !== \"function\") throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}","import { __read, __spreadArray } from \"tslib\";\nexport function compose() {\n var funcs = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n funcs[_i] = arguments[_i];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return a(b.apply(void 0, __spreadArray([], __read(args), false)));\n };\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nexport function toHashMapString(obj) {\n if (!obj) return;\n Object.keys(obj).forEach(function (k) {\n if (_typeof(obj[k]) === \"object\") {\n obj[k] = JSON.stringify(obj[k]);\n }\n\n obj[k] = String(obj[k]);\n });\n return obj;\n}\nexport function toHashMap(obj) {\n if (!obj) return;\n Object.keys(obj).forEach(function (k) {\n if (typeof obj[k] === \"string\" || typeof obj[k] === \"boolean\" || typeof obj[k] === \"number\") {\n return;\n }\n\n obj[k] = JSON.stringify(obj[k]);\n });\n return obj;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nexport function isError(error) {\n return _typeof(error) === \"object\" && typeof error.message !== \"undefined\" && (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\" || typeof error.stack !== \"undefined\");\n}\nexport function getStacktrace(error) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\") {\n var _a = error.stacktrace,\n stacktrace = _a === void 0 ? \"\" : _a;\n return stacktrace.split(\"\\n\").filter(function (line) {\n return line !== \"\";\n });\n } else if (error.stack) {\n var _b = error.stack,\n stack = _b === void 0 ? \"\" : _b;\n return stack.split(\"\\n\").filter(function (line) {\n return line !== \"\";\n });\n } else {\n return [\"No stacktrace available\"];\n }\n}","export var isAsync = function isAsync(fn) {\n return fn.constructor.name === \"AsyncFunction\";\n};","var Serializable = function () {\n function Serializable(data) {\n this._data = data;\n }\n\n Serializable.prototype.toJSON = function () {\n return JSON.stringify(this._data);\n };\n\n Serializable.prototype.serialize = function () {\n return this._data;\n };\n\n return Serializable;\n}();\n\nexport { Serializable };","import { getGlobalObject, isNodeEnv } from \"@appsignal/core\";\n\nvar Environment = function () {\n function Environment() {}\n\n Environment.serialize = function () {\n return {\n transport: this.transport(),\n origin: this.origin()\n };\n };\n\n Environment.origin = function () {\n var globals = getGlobalObject();\n\n if (!globals.navigator || globals.navigator.product === \"ReactNative\" && !globals.location) {\n return \"\";\n }\n\n return globals.location.origin || \"\".concat(globals.location.protocol, \"//\").concat(globals.location.hostname);\n };\n\n Environment.transport = function () {\n var globals = getGlobalObject();\n\n if (isNodeEnv() && typeof jest === \"undefined\") {\n return \"NodeHTTP\";\n } else if (globals.XDomainRequest) {\n return \"XDomainRequest\";\n } else if (globals.XMLHttpRequest && !globals.fetch) {\n return \"XMLHttpRequest\";\n } else {\n return \"fetch\";\n }\n };\n\n Environment.supportsPromises = function () {\n var globals = getGlobalObject();\n return \"Promise\" in globals && \"resolve\" in globals.Promise && \"reject\" in globals.Promise && \"all\" in globals.Promise && \"race\" in globals.Promise && function () {\n var resolve;\n new globals.Promise(function (r) {\n resolve = r;\n });\n return typeof resolve === \"function\";\n }();\n };\n\n return Environment;\n}();\n\nexport { Environment };","var XDomainTransport = function () {\n function XDomainTransport(url) {\n this.url = url;\n }\n\n XDomainTransport.prototype.send = function (data) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n var _a;\n\n var req = new XDomainRequest();\n var rx = new RegExp(\"^https?:\");\n\n req.onload = function () {\n return resolve({});\n };\n\n req.open(\"POST\", _this.url.replace(rx, (_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.protocol));\n setTimeout(function () {\n try {\n req.send(data);\n } catch (e) {\n reject(e);\n }\n }, 0);\n });\n };\n\n return XDomainTransport;\n}();\n\nexport { XDomainTransport };","var XHRTransport = function () {\n function XHRTransport(url) {\n this.url = url;\n }\n\n XHRTransport.prototype.send = function (data) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n try {\n var req_1 = new XMLHttpRequest();\n\n req_1.onreadystatechange = function () {\n if (req_1.readyState === XMLHttpRequest.DONE) {\n resolve({});\n }\n };\n\n req_1.open(\"POST\", _this.url);\n req_1.send(data);\n } catch (e) {\n reject(e);\n }\n });\n };\n\n return XHRTransport;\n}();\n\nexport { XHRTransport };","import { __awaiter, __generator } from \"tslib\";\n\nvar FetchTransport = function () {\n function FetchTransport(url, headers) {\n this.url = url;\n }\n\n FetchTransport.prototype.send = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var res, statusText, ok;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, fetch(this.url, {\n method: \"POST\",\n body: data\n })];\n\n case 1:\n res = _a.sent();\n statusText = res.statusText, ok = res.ok;\n return [2, ok ? Promise.resolve({}) : Promise.reject({\n statusText: statusText\n })];\n }\n });\n });\n };\n\n return FetchTransport;\n}();\n\nexport { FetchTransport };","import https from \"https\";\n\nvar NodeTransport = function () {\n function NodeTransport(url) {\n this.url = url;\n }\n\n NodeTransport.prototype.send = function (data) {\n var _this = this;\n\n var options = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Content-Length\": data.length\n }\n };\n return new Promise(function (resolve, reject) {\n var req = https.request(_this.url, options, function () {}).on(\"error\", function (error) {\n return reject(error);\n });\n req.write(data);\n req.end();\n resolve({});\n });\n };\n\n return NodeTransport;\n}();\n\nexport { NodeTransport };","import { __awaiter, __generator } from \"tslib\";\nimport { urlEncode } from \"@appsignal/core\";\nimport { Environment } from \"./environment\";\nimport { XDomainTransport } from \"./transports/xdomain\";\nimport { XHRTransport } from \"./transports/xhr\";\nimport { FetchTransport } from \"./transports/fetch\";\nimport { NodeTransport } from \"./transports/node\";\n\nvar PushApi = function () {\n function PushApi(options) {\n this._uri = options.uri || \"https://appsignal-endpoint.net/collect\";\n this._apiKey = options.key;\n this._clientVersion = options.version;\n this._transport = this._createTransport(this._url());\n }\n\n PushApi.prototype.push = function (span) {\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, this._transport.send(span.toJSON())];\n\n case 1:\n _a.sent();\n\n return [2, span];\n }\n });\n });\n };\n\n PushApi.prototype._createTransport = function (url) {\n switch (Environment.transport()) {\n case \"XDomainRequest\":\n return new XDomainTransport(url);\n\n case \"XMLHttpRequest\":\n return new XHRTransport(url);\n\n case \"NodeHTTP\":\n return new NodeTransport(url);\n\n default:\n return new FetchTransport(url);\n }\n };\n\n PushApi.prototype._url = function () {\n var auth = this._authorization();\n\n return \"\".concat(this._uri, \"?\").concat(urlEncode(auth));\n };\n\n PushApi.prototype._authorization = function () {\n return {\n api_key: this._apiKey,\n version: this._clientVersion\n };\n };\n\n return PushApi;\n}();\n\nexport { PushApi };","export function urlEncode(object) {\n return Object.keys(object).map(function (key) {\n return \"\".concat(encodeURIComponent(key), \"=\").concat(encodeURIComponent(object[key]));\n }).join(\"&\");\n}","import { __assign, __extends } from \"tslib\";\nimport { Serializable, getStacktrace, toHashMapString, isError } from \"@appsignal/core\";\n\nvar Span = function (_super) {\n __extends(Span, _super);\n\n function Span(span) {\n return _super.call(this, __assign({\n timestamp: Math.round(new Date().getTime() / 1000),\n namespace: \"frontend\",\n error: {\n name: \"NullError\",\n message: \"No error has been set\",\n backtrace: []\n }\n }, span)) || this;\n }\n\n Span.prototype.setAction = function (name) {\n if (!name || typeof name !== \"string\") {\n return this;\n }\n\n this._data.action = name;\n return this;\n };\n\n Span.prototype.setNamespace = function (name) {\n if (!name || typeof name !== \"string\") {\n return this;\n }\n\n this._data.namespace = name;\n return this;\n };\n\n Span.prototype.setError = function (error) {\n if (!error || !isError(error)) return this;\n this._data.error = {\n name: error.name || \"[unknown]\",\n message: error.message,\n backtrace: getStacktrace(error)\n };\n return this;\n };\n\n Span.prototype.setTags = function (tags) {\n this._data.tags = __assign(__assign({}, this._data.tags), toHashMapString(tags));\n return this;\n };\n\n Span.prototype.setParams = function (params) {\n this._data.params = __assign(__assign({}, this._data.params), params);\n return this;\n };\n\n Span.prototype.setBreadcrumbs = function (breadcrumbs) {\n this._data.breadcrumbs = breadcrumbs;\n return this;\n };\n\n return Span;\n}(Serializable);\n\nexport { Span };","import { __generator, __read, __spreadArray } from \"tslib\";\n\nvar Queue = function () {\n function Queue(data) {\n this._data = data || [];\n }\n\n Queue.prototype.clear = function () {\n this._data = [];\n };\n\n Queue.prototype.values = function () {\n return this._data;\n };\n\n Queue.prototype.push = function (item) {\n var _a;\n\n return Array.isArray(item) ? (_a = this._data).push.apply(_a, __spreadArray([], __read(item), false)) : this._data.push(item);\n };\n\n Queue.prototype.drain = function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this._data.length > 0)) return [3, 2];\n return [4, this._data.shift()];\n\n case 1:\n _a.sent();\n\n return [3, 0];\n\n case 2:\n return [2];\n }\n });\n };\n\n return Queue;\n}();\n\nexport { Queue };","import { __assign, __awaiter, __generator, __values } from \"tslib\";\nimport { getGlobalObject } from \"@appsignal/core\";\n\nvar Dispatcher = function () {\n function Dispatcher(queue, api, options) {\n this._retries = 0;\n this._timerID = 0;\n this._duration = 0;\n this._api = api;\n this._queue = queue;\n this.options = __assign({\n limit: 5,\n initialDuration: 1000\n }, options);\n this.reset();\n }\n\n Dispatcher.prototype.schedule = function (time) {\n var _this = this;\n\n if (time === void 0) {\n time = this._duration;\n }\n\n var globals = getGlobalObject();\n var BACKOFF_FACTOR = 1.3;\n\n var cb = function cb() {\n return __awaiter(_this, void 0, void 0, function () {\n var _a, _b, span, e_1, expDuration, e_2_1;\n\n var e_2, _c;\n\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _d.trys.push([0, 7, 8, 9]);\n\n _a = __values(this._queue.drain()), _b = _a.next();\n _d.label = 1;\n\n case 1:\n if (!!_b.done) return [3, 6];\n span = _b.value;\n if (!span) return [2];\n _d.label = 2;\n\n case 2:\n _d.trys.push([2, 4,, 5]);\n\n return [4, this._api.push(span)];\n\n case 3:\n _d.sent();\n\n return [3, 5];\n\n case 4:\n e_1 = _d.sent();\n expDuration = Math.floor(Math.pow(time, BACKOFF_FACTOR));\n this._retries = this._retries - 1;\n\n if (this._retries === 0) {\n this.reset();\n } else {\n this._queue.push(span);\n\n this._timerID = this.schedule(expDuration);\n }\n\n return [2];\n\n case 5:\n _b = _a.next();\n return [3, 1];\n\n case 6:\n return [3, 9];\n\n case 7:\n e_2_1 = _d.sent();\n e_2 = {\n error: e_2_1\n };\n return [3, 9];\n\n case 8:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n } finally {\n if (e_2) throw e_2.error;\n }\n\n return [7];\n\n case 9:\n this.reset();\n return [2];\n }\n });\n });\n };\n\n return globals.setTimeout(cb, time);\n };\n\n Dispatcher.prototype.reset = function () {\n var _a = this.options,\n limit = _a.limit,\n initialDuration = _a.initialDuration;\n this._retries = limit;\n this._duration = initialDuration;\n };\n\n return Dispatcher;\n}();\n\nexport { Dispatcher };","import { __assign, __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { compose, toHashMap } from \"@appsignal/core\";\nimport { VERSION } from \"./version\";\nimport { PushApi } from \"./api\";\nimport { Environment } from \"./environment\";\nimport { Span } from \"./span\";\nimport { Queue } from \"./queue\";\nimport { Dispatcher } from \"./dispatcher\";\n\nvar Appsignal = function () {\n function Appsignal(options) {\n this.VERSION = VERSION;\n this.ignored = [];\n this._breadcrumbs = [];\n this._hooks = {\n decorators: Array(),\n overrides: Array()\n };\n this._env = Environment.serialize();\n this._queue = new Queue([]);\n var _a = options.key,\n key = _a === void 0 ? \"\" : _a,\n uri = options.uri,\n revision = options.revision,\n ignoreErrors = options.ignoreErrors;\n\n if (revision && typeof revision !== \"string\") {\n options.revision = String(revision);\n }\n\n if (key === \"\") {\n console.info(\"[APPSIGNAL]: Started in development mode.\");\n }\n\n this._api = new PushApi({\n key: key,\n uri: uri,\n version: this.VERSION\n });\n\n if (ignoreErrors && Array.isArray(ignoreErrors)) {\n this.ignored = ignoreErrors;\n }\n\n this._dispatcher = new Dispatcher(this._queue, this._api);\n this._options = options;\n }\n\n Appsignal.prototype.send = function (data, tagsOrFn, namespace) {\n var _this = this;\n\n if (!(data instanceof Error) && !(data instanceof Span)) {\n console.error(\"[APPSIGNAL]: Can't send error, given error is not a valid type\");\n return;\n }\n\n if (this.ignored.length !== 0) {\n if (data instanceof Error && this.ignored.some(function (el) {\n return el.test(data.message);\n })) {\n console.warn(\"[APPSIGNAL]: Ignored an error: \".concat(data.message));\n return;\n }\n\n if (data instanceof Span) {\n var error_1 = data.serialize().error;\n\n if (error_1.message && this.ignored.some(function (el) {\n return el.test(error_1.message);\n })) {\n console.warn(\"[APPSIGNAL]: Ignored a span: \".concat(error_1.message));\n return;\n }\n }\n }\n\n var span = data instanceof Span ? data : this._createSpanFromError(data);\n\n if (this._hooks.decorators.length > 0) {\n compose.apply(void 0, __spreadArray([], __read(this._hooks.decorators), false))(span);\n }\n\n if (tagsOrFn) {\n if (typeof tagsOrFn === \"function\") {\n var callback = tagsOrFn;\n callback(span);\n } else {\n console.warn(\"[APPSIGNAL]: DEPRECATED: Calling the `send`/`sendError` function with a tags object is deprecated. Use the callback argument instead.\");\n var tags = toHashMap(tagsOrFn) || {};\n span.setTags(tags);\n }\n }\n\n if (namespace) {\n console.warn(\"[APPSIGNAL]: DEPRECATED: Calling the `send`/`sendError` function with a namespace is deprecated. Use the callback argument instead.\");\n span.setNamespace(namespace);\n }\n\n if (this._breadcrumbs.length > 0) span.setBreadcrumbs(this._breadcrumbs);\n\n if (this._hooks.overrides.length > 0) {\n compose.apply(void 0, __spreadArray([], __read(this._hooks.overrides), false))(span);\n }\n\n if (Environment.supportsPromises()) {\n this._breadcrumbs = [];\n\n if (!this._options.key) {\n console.warn(\"[APPSIGNAL]: Span not sent because we're in development mode:\", span);\n\n if (data instanceof Error) {\n throw data;\n }\n } else {\n return this._api.push(span).catch(function () {\n _this._queue.push(span);\n\n setTimeout(function () {\n return _this._dispatcher.schedule();\n }, 0);\n });\n }\n } else {\n console.error(\"[APPSIGNAL]: Error not sent. A Promise polyfill is required.\");\n return;\n }\n };\n\n Appsignal.prototype.sendError = function (error, tagsOrFn, namespace) {\n return this.send(error, tagsOrFn, namespace);\n };\n\n Appsignal.prototype.use = function (plugin) {\n plugin.call(this);\n };\n\n Appsignal.prototype.createSpan = function (fn) {\n var _a = this._options,\n _b = _a.revision,\n revision = _b === void 0 ? \"\" : _b,\n namespace = _a.namespace;\n var span = new Span({\n environment: this._env,\n revision: revision\n });\n if (namespace) span.setNamespace(namespace);\n if (fn && typeof fn === \"function\") fn(span);\n return span;\n };\n\n Appsignal.prototype.wrap = function (fn, tagsOrFn, namespace) {\n return __awaiter(this, void 0, void 0, function () {\n var e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2,, 4]);\n\n return [4, fn()];\n\n case 1:\n return [2, _a.sent()];\n\n case 2:\n e_1 = _a.sent();\n return [4, this.sendError(e_1, tagsOrFn, namespace)];\n\n case 3:\n _a.sent();\n\n return [2, Promise.reject(e_1)];\n\n case 4:\n return [2];\n }\n });\n });\n };\n\n Appsignal.prototype.addDecorator = function (decorator) {\n this._hooks.decorators.push(decorator);\n };\n\n Appsignal.prototype.addOverride = function (override) {\n this._hooks.overrides.push(override);\n };\n\n Appsignal.prototype.demo = function () {\n var span = this._createSpanFromError(new Error(\"Hello world! This is an error used for demonstration purposes.\"));\n\n span.setAction(\"TestAction\").setParams({\n path: \"/hello\",\n method: \"GET\"\n }).setTags({\n demo_sample: \"true\"\n });\n this.send(span);\n };\n\n Appsignal.prototype.addBreadcrumb = function (breadcrumb) {\n var crumb = __assign(__assign({\n timestamp: Math.round(new Date().getTime() / 1000)\n }, breadcrumb), {\n metadata: toHashMap(breadcrumb.metadata)\n });\n\n if (!crumb.category) {\n console.warn(\"[APPSIGNAL]: Breadcrumb not added. `category` is missing.\");\n return;\n }\n\n if (!crumb.action) {\n console.warn(\"[APPSIGNAL]: Breadcrumb not added. `action` is missing.\");\n return;\n }\n\n if (this._breadcrumbs.length === 20) {\n this._breadcrumbs.pop();\n }\n\n this._breadcrumbs.unshift(crumb);\n };\n\n Appsignal.prototype._createSpanFromError = function (error) {\n var event = this.createSpan();\n event.setError(error);\n return event;\n };\n\n return Appsignal;\n}();\n\nexport default Appsignal;","export var VERSION = \"1.3.23\";","/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction 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\nfunction identifierForContextKey(key) {\n var logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };","// All bubbling events\n// SEE: https://developer.mozilla.org/en-US/docs/Web/Events\nvar wait = 200; // the number of milliseconds to wait\n\nexport default {\n DOMContentLoaded: {\n wait: wait\n },\n abort: {\n wait: wait\n },\n animationcancel: {\n wait: wait\n },\n animationend: {\n wait: wait\n },\n animationiteration: {\n wait: wait\n },\n animationstart: {\n wait: wait\n },\n auxclick: {\n wait: wait\n },\n change: {\n wait: wait\n },\n click: {\n wait: wait\n },\n compositionend: {\n wait: wait\n },\n compositionstart: {\n wait: wait\n },\n compositionupdate: {\n wait: wait\n },\n contextmenu: {\n wait: wait\n },\n copy: {\n wait: wait\n },\n cut: {\n wait: wait\n },\n dblclick: {\n wait: wait\n },\n drag: {\n wait: wait\n },\n dragend: {\n wait: wait\n },\n dragenter: {\n wait: wait\n },\n dragleave: {\n wait: wait\n },\n dragover: {\n wait: wait\n },\n dragstart: {\n wait: wait\n },\n drop: {\n wait: wait\n },\n error: {\n wait: wait\n },\n focusin: {\n wait: wait\n },\n focusout: {\n wait: wait\n },\n fullscreenchange: {\n wait: wait\n },\n fullscreenerror: {\n wait: wait\n },\n hashchange: {\n wait: wait\n },\n input: {\n wait: wait\n },\n keydown: {\n wait: wait\n },\n keyup: {\n wait: wait\n },\n mousedown: {\n wait: wait\n },\n mousemove: {\n wait: wait\n },\n mouseout: {\n wait: wait\n },\n mouseover: {\n wait: wait\n },\n mouseup: {\n wait: wait\n },\n paste: {\n wait: wait\n },\n pointercancel: {\n wait: wait\n },\n pointerdown: {\n wait: wait\n },\n pointerlockchange: {\n wait: wait\n },\n pointerlockerror: {\n wait: wait\n },\n pointermove: {\n wait: wait\n },\n pointerout: {\n wait: wait\n },\n pointerover: {\n wait: wait\n },\n pointerup: {\n wait: wait\n },\n popstate: {\n wait: wait\n },\n reset: {\n wait: wait\n },\n scroll: {\n wait: wait\n },\n select: {\n wait: wait\n },\n submit: {\n wait: wait\n },\n touchcancel: {\n wait: wait\n },\n touchend: {\n wait: wait\n },\n touchmove: {\n wait: wait\n },\n touchstart: {\n wait: wait\n },\n transitioncancel: {\n wait: wait\n },\n transitionend: {\n wait: wait\n },\n transitionrun: {\n wait: wait\n },\n transitionstart: {\n wait: wait\n },\n visibilitychange: {\n wait: wait\n },\n wheel: {\n wait: wait\n }\n};","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport events from './events';\nvar prefix = 'debounced';\nvar initializedEvents = {};\nexport var debounce = function debounce(fn) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var wait = options.wait;\n var timeoutId;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n clearTimeout(timeoutId);\n timeoutId = setTimeout(function () {\n timeoutId = null;\n fn.apply(void 0, args);\n }, wait);\n };\n};\n\nvar dispatch = function dispatch(event) {\n var bubbles = event.bubbles,\n cancelable = event.cancelable,\n composed = event.composed;\n var debouncedEvent = new CustomEvent(\"\".concat(prefix, \":\").concat(event.type), {\n bubbles: bubbles,\n cancelable: cancelable,\n composed: composed,\n detail: {\n originalEvent: event\n }\n });\n setTimeout(event.target.dispatchEvent(debouncedEvent));\n};\n\nexport var initializeEvent = function initializeEvent(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (initializedEvents[name]) return;\n initializedEvents[name] = options || {};\n var debouncedDispatch = debounce(dispatch, options);\n document.addEventListener(name, function (event) {\n return debouncedDispatch(event);\n });\n};\n\nvar initialize = function initialize() {\n var evts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : events;\n prefix = evts.prefix || prefix;\n delete evts.prefix;\n\n for (var _i2 = 0, _Object$entries = Object.entries(evts); _i2 < _Object$entries.length; _i2++) {\n var _ref3 = _Object$entries[_i2];\n\n var _ref2 = _slicedToArray(_ref3, 2);\n\n var name = _ref2[0];\n var options = _ref2[1];\n initializeEvent(name, options);\n }\n};\n\nexport default {\n debounce: debounce,\n events: events,\n initialize: initialize,\n initializeEvent: initializeEvent,\n initializedEvents: initializedEvents\n};","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","import Rails from \"@rails/ujs\"\nimport * as ActiveStorage from \"@rails/activestorage\"\nRails.start()\nActiveStorage.start()","// 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\"\nimport StimulusReflex from 'stimulus_reflex'\nimport consumer from '../channels/consumer'\nimport controller from './application_controller'\nimport debounced from 'debounced'\n\nimport Appsignal from \"@appsignal/javascript\";\nimport { installErrorHandler } from \"@appsignal/stimulus\";\n\nconst application = Application.start()\n\nconst appsignal = new Appsignal({\n key: process.env.APPSIGNAL_JAVASCRIPT_API_KEY,\n});\nconsole.log('Starting AppSignal');\ninstallErrorHandler(appsignal, application);\n\nconst context = require.context(\"controllers\", true, /_controller\\.(js|ts)$/)\napplication.load(definitionsFromContext(context))\n// application.consumer = consumer\nStimulusReflex.initialize(application, { consumer, controller, isolate: true })\nStimulusReflex.debug = process.env.RAILS_ENV === 'development'\n\nvar debounced_wait_time = (process.env.RAILS_ENV === \"test\") ? 25 : 300\ndebounced.initialize({ input: { wait: debounced_wait_time } })\n","var map = {\n\t\"./agenda_controller.js\": 27,\n\t\"./app_opdrachten_controller.js\": 28,\n\t\"./app_requisition_controller.js\": 29,\n\t\"./application_controller.js\": 1,\n\t\"./beschikbaarheid_controller.js\": 30,\n\t\"./boekhouding_factuur_controller.js\": 31,\n\t\"./boekhouding_factuurregel_controller.js\": 32,\n\t\"./bulk_invoice_controller.js\": 33,\n\t\"./bulk_timesheet_controller.js\": 34,\n\t\"./company_controller.js\": 35,\n\t\"./contributie_facturen_controller.js\": 36,\n\t\"./conversation_controller.js\": 37,\n\t\"./date_check_controller.js\": 38,\n\t\"./document_controller.js\": 39,\n\t\"./example_controller.js\": 40,\n\t\"./field_order_controller.js\": 41,\n\t\"./group_member_controller.js\": 42,\n\t\"./hello_controller.js\": 43,\n\t\"./hours_controller.js\": 44,\n\t\"./invoice_controller.js\": 45,\n\t\"./landing_block_controller.js\": 46,\n\t\"./landing_navigation_controller.js\": 47,\n\t\"./landing_navigation_item_controller.js\": 48,\n\t\"./my_availability_controller.js\": 49,\n\t\"./newconversation_controller.js\": 50,\n\t\"./note_controller.js\": 51,\n\t\"./ordering_controller.js\": 52,\n\t\"./project_controller.js\": 53,\n\t\"./reloader_controller.js\": 54,\n\t\"./requisition_controller.js\": 55,\n\t\"./requisition_hour_controller.js\": 56,\n\t\"./requisition_invite_controller.js\": 57,\n\t\"./reset_form_controller.js\": 58,\n\t\"./selection_list_controller.js\": 59,\n\t\"./tekst_controller.js\": 60,\n\t\"./timesheets_controller.js\": 61,\n\t\"./unreads_controller.js\": 62,\n\t\"./user_controller.js\": 63,\n\t\"./video_controller.js\": 64\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 = 26;","import ApplicationController from './application_controller'\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n // console.log('Agenda conroller: connect');\n initSelect2();\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n console.log('Agenda conroller: afterReflex');\n initForReflex();\n initSelect2();\n element.focus()\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n connect () {\n super.connect()\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n console.log('AppOpdrachtenController#afterReflex initForReflex()' );\n initForReflex();\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n console.log('AppRequisitionController#afterReflex initForReflex()' );\n initForReflex();\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n}\n","import ApplicationController from './application_controller'\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n afterReflex (element, reflex, noop, reflexId) {\n console.log('BulkInvoiceController#afterReflex initForReflex()' );\n initForReflex();\n }\n}\n","import CheckboxSelectAll from \"stimulus-checkbox-select-all\"\nimport StimulusReflex from \"stimulus_reflex\";\nexport default class extends CheckboxSelectAll {\n connect () {\n super.connect()\n console.log('bulk_timesheet conected')\n StimulusReflex.register(this);\n }\n afterReflex (element, reflex, noop, reflexId) {\n // super.afterReflex (element, reflex, noop, reflexId)\n // console.log('afterReflex bulk')\n countCheckboxes();\n // initForReflex();\n }\n}\n","import ApplicationController from \"./application_controller\"\nimport StimulusReflex from \"stimulus_reflex\"\n\nexport default class extends ApplicationController {\n static targets = [\"vat\", \"agb\", \"kvk\", \"company\"]\n\n connect () {\n super.connect()\n StimulusReflex.register(this);\n console.log(\"Company conroller: connect\");\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n console.log(\"Company conroller: afterReflex\");\n initForReflex(false);\n }\n\n vat_check(event) {\n event.preventDefault();\n var vat_value = this.vatTarget.value;\n this.stimulate(\"Company#vat_check\", vat_value);\n }\n\n agb_check(event) {\n console.log(\"Company conroller: click\");\n event.preventDefault();\n var agb_value = this.agbTarget.value;\n this.stimulate(\"Company#agb_check\", agb_value);\n }\n\n kvk_search(e) {\n e.preventDefault();\n var kvk_value = this.kvkTarget.value;\n var company_value = this.companyTarget.value;\n this.stimulate(\"Company#kvk_search\", kvk_value, company_value);\n }\n\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n\n afterReflex(element, reflex, noop, reflexId) {\n console.log('contributie_facturen#afterReflex');\n initForReflex();\n }\n}\n","import ApplicationController from './application_controller'\nimport consumer from 'channels/consumer'\nexport default class extends ApplicationController {\n static targets = ['messages', 'conversation_container']\n\n connect() {\n this.subscription = consumer.subscriptions.create({ channel: 'ChatMessageChannel', id: this.data.get('id')}, {\n connected: this._connected.bind(this),\n disconnected: this._disconnected.bind(this),\n received: this._received.bind(this),\n })\n }\n\n disconnect() {\n consumer.subscriptions.remove(this.subscription);\n }\n\n _connected() {\n\n }\n _disconnected() {\n\n }\n _received(data) {\n if (data.message) {\n this.messagesTarget.insertAdjacentHTML('beforeend', data.message)\n this.scrollToBottom()\n if (!document.hidden) {\n this.subscription.perform('touch')\n }\n } else if(data.destroyed) {\n $('#'+data.destroyed.id).replaceWith(data.destroyed.message)\n }\n }\n scrollToBottom() {\n this.conversation_containerTarget.scrollTop = this.conversation_containerTarget.scrollHeight;\n }\n}","import ApplicationController from './application_controller'\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n console.log('date check conroller: connect');\n }\n afterReflex (element, reflex, noop, reflexId) {\n console.log('DateCheck#afterReflex initForReflex()' );\n initForReflex();\n }\n accept () {\n console.log('date check conroller: accept');\n }\n}\n","import ApplicationController from './application_controller'\n\n/* This is the custom StimulusReflex controller for the Document Reflex.\n * Learn more at: https://docs.stimulusreflex.com\n */\nexport default class extends ApplicationController {\n /*\n * Regular Stimulus lifecycle methods\n * Learn more at: https://stimulusjs.org/reference/lifecycle-callbacks\n *\n * If you intend to use this controller as a regular stimulus controller as well,\n * make sure any Stimulus lifecycle methods overridden in ApplicationController call super.\n *\n * Important:\n * By default, StimulusReflex overrides the -connect- method so make sure you\n * call super if you intend to do anything else when this controller connects.\n */\n\n connect () {\n console.log('DocumentController#connect' );\n super.connect()\n // add your code here, if applicable\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n console.log('DocumentController#afterReflex initForReflex()' );\n initDefaultDatatable();\n }\n\n /* Reflex specific lifecycle methods.\n *\n * For every method defined in your Reflex class, a matching set of lifecycle methods become available\n * in this javascript controller. These are optional, so feel free to delete these stubs if you don't\n * need them.\n *\n * Important:\n * Make sure to add data-controller=\"document\" to your markup alongside\n * data-reflex=\"Document#dance\" for the lifecycle methods to fire properly.\n *\n * Example:\n *\n * <a href=\"#\" data-reflex=\"click->Document#dance\" data-controller=\"document\">Dance!</a>\n *\n * Arguments:\n *\n * element - the element that triggered the reflex\n * may be different than the Stimulus controller's this.element\n *\n * reflex - the name of the reflex e.g. \"Document#dance\"\n *\n * error/noop - the error message (for reflexError), otherwise null\n *\n * reflexId - a UUID4 or developer-provided unique identifier for each Reflex\n */\n\n // Assuming you create a \"Document#dance\" action in your Reflex class\n // you'll be able to use the following lifecycle methods:\n\n // beforeDance(element, reflex, noop, reflexId) {\n // element.innerText = 'Putting dance shoes on...'\n // }\n\n // danceSuccess(element, reflex, noop, reflexId) {\n // element.innerText = '\\nDanced like no one was watching! Was someone watching?'\n // }\n\n // danceError(element, reflex, error, reflexId) {\n // console.error('danceError', error);\n // element.innerText = \"\\nCouldn\\'t dance!\"\n // }\n\n // afterDance(element, reflex, noop, reflexId) {\n // element.innerText = '\\nWhatever that was, it\\'s over now.'\n // }\n\n // finalizeDance(element, reflex, noop, reflexId) {\n // element.innerText = '\\nNow, the cleanup can begin!'\n // }\n}\n","import ApplicationController from './application_controller'\n\n/* This is the custom StimulusReflex controller for the Example Reflex.\n * Learn more at: https://docs.stimulusreflex.com\n */\nexport default class extends ApplicationController {\n /*\n * Regular Stimulus lifecycle methods\n * Learn more at: https://stimulusjs.org/reference/lifecycle-callbacks\n *\n * If you intend to use this controller as a regular stimulus controller as well,\n * make sure any Stimulus lifecycle methods overridden in ApplicationController call super.\n *\n * Important:\n * By default, StimulusReflex overrides the -connect- method so make sure you\n * call super if you intend to do anything else when this controller connects.\n */\n\n connect () {\n super.connect()\n // add your code here, if applicable\n }\n\n /* Reflex specific lifecycle methods.\n *\n * For every method defined in your Reflex class, a matching set of lifecycle methods become available\n * in this javascript controller. These are optional, so feel free to delete these stubs if you don't\n * need them.\n *\n * Important:\n * Make sure to add data-controller=\"example\" to your markup alongside\n * data-reflex=\"Example#dance\" for the lifecycle methods to fire properly.\n *\n * Example:\n *\n * <a href=\"#\" data-reflex=\"click->Example#dance\" data-controller=\"example\">Dance!</a>\n *\n * Arguments:\n *\n * element - the element that triggered the reflex\n * may be different than the Stimulus controller's this.element\n *\n * reflex - the name of the reflex e.g. \"Example#dance\"\n *\n * error/noop - the error message (for reflexError), otherwise null\n *\n * reflexId - a UUID4 or developer-provided unique identifier for each Reflex\n */\n\n // Assuming you create a \"Example#dance\" action in your Reflex class\n // you'll be able to use the following lifecycle methods:\n\n // beforeDance(element, reflex, noop, reflexId) {\n // element.innerText = 'Putting dance shoes on...'\n // }\n\n // danceSuccess(element, reflex, noop, reflexId) {\n // element.innerText = 'Danced like no one was watching! Was someone watching?'\n // }\n\n // danceError(element, reflex, error, reflexId) {\n // console.error('danceError', error);\n // element.innerText = \"Couldn't dance!\"\n // }\n}\n","import ApplicationController from './application_controller'\nimport Sortable from \"sortablejs\"\nimport { put, get, post, patch, destroy } from \"@rails/request.js\"\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n this.sortable = Sortable.create(this.element, {\n handle: '.sort-handle',\n animation: 150,\n onEnd: this.updatePosition.bind(this)\n })\n }\n\n async updatePosition(event) {\n const response = await put(this.data.get('url'), {\n body: JSON.stringify({\n sgid: event.item.dataset.sgid,\n field_order: event.newIndex\n })\n })\n // if (response.ok) {\n // console.log(event.item.dataset.sgid)\n // }\n }\n\n}","import ApplicationController from './application_controller'\n\n/* This is the custom StimulusReflex controller for the GroupMember Reflex.\n * Learn more at: https://docs.stimulusreflex.com\n */\nexport default class extends ApplicationController {\n /*\n * Regular Stimulus lifecycle methods\n * Learn more at: https://stimulusjs.org/reference/lifecycle-callbacks\n *\n * If you intend to use this controller as a regular stimulus controller as well,\n * make sure any Stimulus lifecycle methods overridden in ApplicationController call super.\n *\n * Important:\n * By default, StimulusReflex overrides the -connect- method so make sure you\n * call super if you intend to do anything else when this controller connects.\n */\n\n connect () {\n super.connect()\n // add your code here, if applicable\n }\n\n /* Reflex specific lifecycle methods.\n *\n * For every method defined in your Reflex class, a matching set of lifecycle methods become available\n * in this javascript controller. These are optional, so feel free to delete these stubs if you don't\n * need them.\n *\n * Important:\n * Make sure to add data-controller=\"group-member\" to your markup alongside\n * data-reflex=\"GroupMember#dance\" for the lifecycle methods to fire properly.\n *\n * Example:\n *\n * <a href=\"#\" data-reflex=\"click->GroupMember#dance\" data-controller=\"group-member\">Dance!</a>\n *\n * Arguments:\n *\n * element - the element that triggered the reflex\n * may be different than the Stimulus controller's this.element\n *\n * reflex - the name of the reflex e.g. \"GroupMember#dance\"\n *\n * error/noop - the error message (for reflexError), otherwise null\n *\n * reflexId - a UUID4 or developer-provided unique identifier for each Reflex\n */\n\n // Assuming you create a \"GroupMember#dance\" action in your Reflex class\n // you'll be able to use the following lifecycle methods:\n\n // beforeDance(element, reflex, noop, reflexId) {\n // element.innerText = 'Putting dance shoes on...'\n // }\n\n // danceSuccess(element, reflex, noop, reflexId) {\n // element.innerText = '\\nDanced like no one was watching! Was someone watching?'\n // }\n\n // danceError(element, reflex, error, reflexId) {\n // console.error('danceError', error);\n // element.innerText = \"\\nCouldn\\'t dance!\"\n // }\n\n // afterDance(element, reflex, noop, reflexId) {\n // element.innerText = '\\nWhatever that was, it\\'s over now.'\n // }\n\n // finalizeDance(element, reflex, noop, reflexId) {\n // element.innerText = '\\nNow, the cleanup can begin!'\n // }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.element.textContent = \"Hello World!\"\n }\n}\n","import ApplicationController from './application_controller'\nimport StimulusReflex from 'stimulus_reflex'\nexport default class extends ApplicationController {\n static targets = ['hourId', 'hourRejection']\n\n connect () {\n super.connect();\n StimulusReflex.register(this);\n }\n\n keydown (event) {\n if(event.keyCode == 13){\n event.preventDefault();\n var hourId = this.hourIdTarget.value;\n var hourRejection = this.hourRejectionTarget.value;\n this.stimulate('HourReflex#reject_hour_js', hourId, hourRejection);\n }\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n console.log('HoursController#afterReflex initForReflex()' );\n initForReflex();\n }\n}","import CheckboxSelectAll from \"stimulus-checkbox-select-all\"\nimport StimulusReflex from \"stimulus_reflex\";\nexport default class extends CheckboxSelectAll {\n connect () {\n super.connect()\n StimulusReflex.register(this);\n }\n afterReflex (element, reflex, noop, reflexId) {\n initForReflex();\n }\n}","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n\n afterReflex(element, reflex, noop, reflexId) {\n console.log('my_availability#afterReflex');\n initForReflex();\n }\n}","import ApplicationController from './application_controller'\nimport consumer from 'channels/consumer'\nexport default class extends ApplicationController {\n static targets = [\"conversationlist\"]\n\n connect() {\n this.subscription = consumer.subscriptions.create({ channel: 'NewconversationChannel', id: this.data.get('id')}, {\n connected: this._connected.bind(this),\n disconnected: this._disconnected.bind(this),\n received: this._received.bind(this),\n })\n }\n\n disconnect() {\n consumer.subscriptions.remove(this.subscription);\n }\n\n _connected() {}\n\n _disconnected() {}\n\n _received(data) {\n // console.log('data received');\n if (data.message) {\n this.conversationlistTarget.insertAdjacentHTML('afterbegin', data.message)\n }\n\n this.notify(data.body)\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect();\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n console.log('NoteController#afterReflex initForReflex()' );\n initForReflex();\n }\n}\n","import ApplicationController from './application_controller'\nimport Sortable from \"sortablejs\"\nimport { put, get, post, patch, destroy } from \"@rails/request.js\"\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n console.log(this.element)\n const columnLeft = document.querySelector(\".column-left\");\n this.sortable = Sortable.create(columnLeft, {\n group: 'shared',\n animation: 150,\n onEnd: this.updatePosition.bind(this),\n onAdd: this.updatePosition.bind(this)\n\n })\n\n const columnRight = document.querySelector(\".column-right\");\n this.sortable = Sortable.create(columnRight, {\n group: {\n name: 'shared',\n pull: 'clone',\n put: false // Do not allow items to be put into this list\n },\n animation: 150,\n sort: false\n })\n\n }\n\n async updatePosition(event) {\n const response = await put(this.data.get('url'), {\n body: JSON.stringify({\n sgid: event.item.dataset.sgid,\n landing_block_type: event.item.dataset.landingblocktype,\n position: event.newIndex\n })\n })\n if (response.ok) {\n console.log(event.item.dataset.sgid)\n }\n window.location.reload();\n }\n}\n\n\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n console.log('Projects#connect()' );\n super.connect()\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n console.log('Projects#afterReflex' );\n initForReflex();\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n static values = { interval: Number };\n\n connect() {\n setInterval(() => {\n this.element.reload();\n }, this.intervalValue);\n }\n}\n","import CheckboxSelectAll from \"stimulus-checkbox-select-all\"\nimport StimulusReflex from 'stimulus_reflex'\n\nexport default class extends CheckboxSelectAll {\n connect () {\n console.log(\"reflex connected.\");\n StimulusReflex.register(this);\n super.connect()\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n afterReflex (element, reflex, noop, reflexId) {\n console.log('RequisitionHourController#afterReflex initForReflex()' );\n initForReflex();\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n console.log('RequisitionInvite#connect()' );\n super.connect()\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n console.log('RequisitionInvite#afterReflex' );\n initForReflex();\n }\n\n preventSubmit(event) {\n console.log(\"preventing the form submission\")\n if (event.key == 'Enter') {\n event.preventDefault();\n }\n }\n}\n","import { Controller } from 'stimulus'\n\nexport default class extends Controller {\n connect () {\n initSubmitFormsWithCtrlEnter();\n $('#chat_message_content').trigger('focus');\n super.connect()\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect();\n }\n\n checkbox_clicked(event) {\n this.element.closest(\"form\").requestSubmit();\n }\n\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect();\n }\n}\n","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n connect () {\n super.connect()\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n console.log('TimesheetsController#afterReflex initForReflex()' );\n initForReflex();\n }\n}","import ApplicationController from './application_controller'\nimport consumer from 'channels/consumer'\nexport default class extends ApplicationController {\n static targets = [\"new_count\", 'last_message']\n\n connect() {\n this.subscription = consumer.subscriptions.create({ channel: 'UnreadsChannel', id: this.data.get('id')}, {\n connected: this._connected.bind(this),\n disconnected: this._disconnected.bind(this),\n received: this._received.bind(this),\n })\n }\n\n disconnect() {\n consumer.subscriptions.remove(this.subscription);\n }\n\n _connected() {\n\n }\n _disconnected() {\n\n }\n _received(data) {\n if (data.message) {\n if(data.creator_id != this.data.get('user_id')) {\n if(this.data.get('current_conversation_id') != this.data.get('id')) {\n this.element.classList.add('unread')\n let count = parseInt(this.new_countTarget.textContent)\n this.new_countTarget.textContent = count + 1\n this.new_countTarget.removeAttribute(\"hidden\")\n }\n this.last_messageTarget.textContent = data.message\n\n this.notify('Nieuwe chat: ' + data.message)\n }\n }\n }\n}","import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n\n connect () {\n super.connect()\n }\n\n afterReflex (element, reflex, noop, reflexId) {\n console.log('UserController#afterReflex initForReflex()' );\n initForReflex();\n }\n}\n","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/)\nchannels.keys().forEach(channels)\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 66;","/* 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)\n\n// console.log('Hello World from Webpacker')\n\nimport 'libraries'\nimport 'controllers'\nimport 'channels'\n\nrequire(\"trix\")\nrequire(\"@rails/actiontext\")","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*\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(\"<!--block-->\", \"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 '<div class=\"trix-button-row\">\\n <span class=\"trix-button-group trix-button-group--text-tools\" data-trix-button-group=\"text-tools\">\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bold\" data-trix-attribute=\"bold\" data-trix-key=\"b\" title=\"' + t.bold + '\" tabindex=\"-1\">' + t.bold + '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-italic\" data-trix-attribute=\"italic\" data-trix-key=\"i\" title=\"' + t.italic + '\" tabindex=\"-1\">' + t.italic + '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"' + t.strike + '\" tabindex=\"-1\">' + t.strike + '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-link\" data-trix-attribute=\"href\" data-trix-action=\"link\" data-trix-key=\"k\" title=\"' + t.link + '\" tabindex=\"-1\">' + t.link + '</button>\\n </span>\\n\\n <span class=\"trix-button-group trix-button-group--block-tools\" data-trix-button-group=\"block-tools\">\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-attribute=\"heading1\" title=\"' + t.heading1 + '\" tabindex=\"-1\">' + t.heading1 + '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"' + t.quote + '\" tabindex=\"-1\">' + t.quote + '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"' + t.code + '\" tabindex=\"-1\">' + t.code + '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"' + t.bullets + '\" tabindex=\"-1\">' + t.bullets + '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"' + t.numbers + '\" tabindex=\"-1\">' + t.numbers + '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"' + t.outdent + '\" tabindex=\"-1\">' + t.outdent + '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"' + t.indent + '\" tabindex=\"-1\">' + t.indent + '</button>\\n </span>\\n\\n <span class=\"trix-button-group trix-button-group--file-tools\" data-trix-button-group=\"file-tools\">\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-attach\" data-trix-action=\"attachFiles\" title=\"' + t.attachFiles + '\" tabindex=\"-1\">' + t.attachFiles + '</button>\\n </span>\\n\\n <span class=\"trix-button-group-spacer\"></span>\\n\\n <span class=\"trix-button-group trix-button-group--history-tools\" data-trix-button-group=\"history-tools\">\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-undo\" data-trix-action=\"undo\" data-trix-key=\"z\" title=\"' + t.undo + '\" tabindex=\"-1\">' + t.undo + '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-redo\" data-trix-action=\"redo\" data-trix-key=\"shift+z\" title=\"' + t.redo + '\" tabindex=\"-1\">' + t.redo + '</button>\\n </span>\\n</div>\\n\\n<div class=\"trix-dialogs\" data-trix-dialogs>\\n <div class=\"trix-dialog trix-dialog--link\" data-trix-dialog=\"href\" data-trix-dialog-attribute=\"href\">\\n <div class=\"trix-dialog__link-fields\">\\n <input type=\"url\" name=\"href\" class=\"trix-input trix-input--dialog\" placeholder=\"' + t.urlPlaceholder + '\" aria-label=\"' + t.url + '\" required data-trix-input>\\n <div class=\"trix-button-group\">\\n <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"' + t.link + '\" data-trix-method=\"setAttribute\">\\n <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"' + t.unlink + '\" data-trix-method=\"removeAttribute\">\\n </div>\\n </div>\\n </div>\\n</div>';\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, \"</html>\"), 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);","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 <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function registerImmediate(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n } // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n\n\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global; // Don't get fooled by e.g. browserify environments.\n\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n})(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self);","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { DirectUpload } from \"@rails/activestorage\";\nexport var AttachmentUpload = /*#__PURE__*/function () {\n function AttachmentUpload(attachment, element) {\n _classCallCheck(this, AttachmentUpload);\n\n this.attachment = attachment;\n this.element = element;\n this.directUpload = new DirectUpload(attachment.file, this.directUploadUrl, this);\n }\n\n _createClass(AttachmentUpload, [{\n key: \"start\",\n value: function start() {\n this.directUpload.create(this.directUploadDidComplete.bind(this));\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this = this;\n\n xhr.upload.addEventListener(\"progress\", function (event) {\n var progress = event.loaded / event.total * 100;\n\n _this.attachment.setUploadProgress(progress);\n });\n }\n }, {\n key: \"directUploadDidComplete\",\n value: function directUploadDidComplete(error, attributes) {\n if (error) {\n throw new Error(\"Direct upload failed: \".concat(error));\n }\n\n this.attachment.setAttributes({\n sgid: attributes.attachable_sgid,\n url: this.createBlobUrl(attributes.signed_id, attributes.filename)\n });\n }\n }, {\n key: \"createBlobUrl\",\n value: function createBlobUrl(signedId, filename) {\n return this.blobUrlTemplate.replace(\":signed_id\", signedId).replace(\":filename\", encodeURIComponent(filename));\n }\n }, {\n key: \"directUploadUrl\",\n get: function get() {\n return this.element.dataset.directUploadUrl;\n }\n }, {\n key: \"blobUrlTemplate\",\n get: function get() {\n return this.element.dataset.blobUrlTemplate;\n }\n }]);\n\n return AttachmentUpload;\n}();","import { AttachmentUpload } from \"./attachment_upload\";\naddEventListener(\"trix-attachment-add\", function (event) {\n var attachment = event.attachment,\n target = event.target;\n\n if (attachment.file) {\n var upload = new AttachmentUpload(attachment, target);\n upload.start();\n }\n});"],"sourceRoot":""}