{"version":3,"sources":["webpack:///./app/javascript/custom-elements/helpers/registerCustomElement.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./app/javascript/packs/front_pages.js","webpack:///./node_modules/stimulus-scroll-reveal/dist/stimulus-scroll-reveal.es.js","webpack:///./app/javascript/helpers/metal/isEmpty.ts","webpack:///./app/javascript/controllers/focus_controller.js","webpack:///./app/javascript/controllers/pop_card_controller.js","webpack:///./app/javascript/controllers/toast_controller.js","webpack:///./app/javascript/controllers/tray_card_controller.js","webpack:///./app/javascript/controllers/tray_nav_controller.js","webpack:///./app/javascript/lib/logger.js","webpack:///./app/javascript/channels/room_visitor_channel.js","webpack:///./app/javascript/helpers/credentials-disciplines.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./app/javascript/controllers/carousel_controller.js","webpack:///./app/javascript/controllers/landing_page_nav_controller.js","webpack:///./app/javascript/controllers/pricing_page_controller.js","webpack:///./app/javascript/controllers/side_nav_controller.js","webpack:///./app/javascript/controllers/toggle_section_controller.js","webpack:///./app/javascript/controllers/section_anchor_controller.js","webpack:///./app/javascript/channels/visual_schedule_channel.js","webpack:///./app/javascript/lib/datepickers.js","webpack:///./app/javascript/lib/async-localstorage.js","webpack:///./app/javascript/visual-schedules/lib/channel_creator.js","webpack:///./app/javascript/helpers/dom-helper.js","webpack:///./app/javascript/helpers/nested-fields/diagnosisCodes.js","webpack:///./app/javascript/channels/reactions_channel.js","webpack:///./app/javascript/channels/room_chat_channel.js","webpack:///./app/javascript/helpers/goals-editor.js","webpack:///./app/javascript/helpers/nested-fields/addFields.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/trix/dist/trix.esm.min.js","webpack:///./app/javascript/lib/autocomplete.js","webpack:///./app/javascript/custom-elements/command-palette-element.js","webpack:///./app/javascript/custom-elements/command-palette/command-palette-group-element.js","webpack:///./app/javascript/custom-elements/command-palette/command-palette-header-element.js","webpack:///./app/javascript/custom-elements/command-palette/command-palette-item-element.js","webpack:///./app/javascript/custom-elements/details-dialog-element.js","webpack:///./app/javascript/helpers/timing.js","webpack:///./app/javascript/custom-elements/command-palette/command-palette-stack-element.js","webpack:///./app/javascript/helpers/observers.js","webpack:///./app/javascript/helpers/strongPassword.js","webpack:///./app/javascript/rooms/event-bus.js","webpack:///./app/javascript/channels/room_channel.js","webpack:///./app/javascript/channels/room_session_channel.js","webpack:///./app/javascript/helpers/selectize_helpers.js","webpack:///./app/javascript/controllers/front_pages_index.js","webpack:///./app/javascript/channels/notification_channel.js","webpack:///./node_modules/selectize/dist/js/selectize.js","webpack:///./node_modules/sifter/sifter.js","webpack:///./node_modules/microplugin/src/microplugin.js","webpack:///./app/javascript/lib/mobile-search.js","webpack:///./app/javascript/lib/turbolinks-reloader.js","webpack:///./app/javascript/custom-elements sync details-dialog-element\\.js$","webpack:///./app/javascript/channels/consumer.js","webpack:///./app/javascript/visual-schedules/event-bus.js","webpack:///./app/javascript/helpers/url.ts","webpack:///./app/javascript/channels/calendar_event_channel.js","webpack:///./app/javascript/channels/calendar_events_channel.js","webpack:///./app/javascript/channels/calendar_resources_channel.js","webpack:///./app/javascript/lib/helpers.js","webpack:///./app/javascript/rooms/components/seamless-swap/constants.js","webpack:///./app/javascript/controllers/application_controller.js","webpack:///./app/javascript/lib/tooltip.js","webpack:///./app/javascript/fonts sync \\.(eot|ttf|woff|woff2|otf)$/","webpack:///./app/javascript/fonts/FiraSans-Bold.ttf","webpack:///./app/javascript/fonts/FiraSans-Medium.ttf","webpack:///./app/javascript/fonts/FiraSans-Regular.ttf","webpack:///./app/javascript/fonts/FiraSans-SemiBold.ttf","webpack:///./app/javascript/fonts/KumbhSans-Bold.ttf","webpack:///./app/javascript/fonts/KumbhSans-Light.ttf","webpack:///./app/javascript/fonts/KumbhSans-Regular.ttf","webpack:///./app/javascript/fonts/NotoEmoji.ttf","webpack:///./app/javascript/fonts/NotoSerif-Regular.ttf","webpack:///./app/javascript/fonts/Quicksand-Bold.ttf","webpack:///./app/javascript/fonts/Quicksand-Light.ttf","webpack:///./app/javascript/fonts/Quicksand-Medium.ttf","webpack:///./app/javascript/fonts/Quicksand-Regular.ttf","webpack:///./app/javascript/fonts/Quicksand-SemiBold.ttf","webpack:///./app/javascript/fonts/Roboto-Black.ttf","webpack:///./app/javascript/fonts/Roboto-BlackItalic.ttf","webpack:///./app/javascript/fonts/Roboto-Bold.ttf","webpack:///./app/javascript/fonts/Roboto-BoldItalic.ttf","webpack:///./app/javascript/fonts/Roboto-Italic.ttf","webpack:///./app/javascript/fonts/Roboto-Light.ttf","webpack:///./app/javascript/helpers/metal/isHexCode.ts","webpack:///./app/javascript/fonts/Roboto-LightItalic.ttf","webpack:///./app/javascript/fonts/Roboto-Medium.ttf","webpack:///./app/javascript/fonts/Roboto-MediumItalic.ttf","webpack:///./app/javascript/fonts/Roboto-Regular.ttf","webpack:///./app/javascript/fonts/Roboto-Thin.ttf","webpack:///./app/javascript/fonts/Roboto-ThinItalic.ttf","webpack:///./app/javascript/fonts/SeptemberMornings.ttf","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./app/javascript/helpers/nested-fields/removeFields.js","webpack:///./app/javascript/custom-elements sync command-palette-.*element\\.js$","webpack:///./app/javascript/helpers/trix-editor-configs/goal-editor.js","webpack:///./app/javascript/helpers/trix-editors.js","webpack:///./node_modules/@rails/actiontext/app/javascript/actiontext/attachment_upload.js","webpack:///./node_modules/@rails/actiontext/app/javascript/actiontext/index.js","webpack:///./app/javascript/helpers/random-id.js"],"names":["registerCustomElement","r","keys","forEach","key","identifier","logicalName","match","array","split","length","identifierForContextKey","module","definition","name","window","customElements","get","define","defineCustomElement","factory","_typeof","Symbol","iterator","obj","constructor","prototype","exports","sparkMd5","fn","createCommonjsModule","undefined","hex_chr","md5cycle","x","k","a","b","c","d","md5blk","s","i","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","n","state","substring","toString","parseInt","md51_array","subarray","Uint8Array","rhex","j","hex","join","toUtf8","str","test","unescape","encodeURIComponent","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arr","arrayBuffer2Utf8Str","String","fromCharCode","apply","concatenateArrayBuffers","first","second","result","byteLength","set","buffer","hexToBinaryString","bytes","push","substr","SparkMD5","this","reset","slice","clamp","val","Math","max","min","from","to","num","target","targetArray","sourceArray","begin","end","append","appendBinary","contents","_buff","_length","_hash","raw","ret","_finish","getState","hash","setState","destroy","hashBinary","content","call","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","Object","defineProperty","protoProps","staticProps","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","ceil","size","chunkIndex","value","callback","create","_this","md5Buffer","fileReader","FileReader","addEventListener","event","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","start","readAsArrayBuffer","findElement","root","selector","document","querySelector","dispatchEvent","element","type","eventInit","arguments","disabled","bubbles","cancelable","detail","createEvent","initEvent","toArray$1","Array","isArray","BlobRecord","checksum","url","attributes","filename","content_type","byte_size","xhr","XMLHttpRequest","open","responseType","setRequestHeader","csrfToken","head","getAttribute","getMetaValue","requestDidLoad","requestDidError","send","JSON","stringify","blob","status","response","direct_upload","directUploadData","toJSON","_xhr","parse","BlobUpload","_blob$directUploadDat","headers","id","DirectUpload","delegate","error","notify","upload","object","methodName","_len","messages","_key","DirectUploadController","input","directUpload","dispatch","hiddenInput","createElement","insertAdjacentElement","parentNode","removeChild","dispatchError","signed_id","progress","loaded","total","defaultPrevented","alert","_this2","uploadRequestDidProgress","DirectUploadsController","form","inputs","querySelectorAll","filter","files","controllers","createDirectUploadControllers","startNextController","controller","shift","processingAttribute","submitButtonsByForm","WeakMap","started","didClick","didSubmitForm","didSubmitRemoteElement","tagName","handleFormSubmissionEvent","hasAttribute","preventDefault","setAttribute","disable","removeAttribute","enable","button","focus","click","style","display","appendChild","delete","submitForm","setTimeout","ActiveStorage","require","Turbolinks","selectize","axios","defaults","common","$","each","history","scrollRestoration","SCROLL_POSITION","PAGE_INVALIDATED","BrowserAdapter","reload","sessionStorage","setItem","location","scrollX","scrollY","href","scrollPosition","getItem","shouldScroll","scrollTo","removeItem","sortField","on","e","Event","toggleElement","classList","remove","contains","required","add","plugins","searchField","delimiter","positionDropdownOriginal","positionDropdown","settings","dropdownDirection","$control","offset","dropdownParent","position","$dropdown","css","width","outerWidth","top","outerHeight","left","addClass","$wrapper","getElementById","pageJSLoading","then","taxonomy","passwordInput","passConfirmInput","termsAndPrivacyAgreement","sp","StrongPassword","container","debouncedQuery","debounce","validate","valid","confirmInput","matches","dataset","passwordValid","signUpButton","agreeToTermsAndPrivacy","buttonEnable","checked","expandableImage","lightBoxes","reg","sideNavCard","submit","attr","_classCallCheck","_defineProperties","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","self","ReferenceError","_assertThisInitialized","getPrototypeOf","src_default","_Controller","subClass","superClass","_inherits","_super","intersectionObserverCallback","class","classValue","defaultOptions","threshold","thresholdValue","rootMargin","rootMarginValue","observer","IntersectionObserver","intersectionObserverOptions","itemTargets","item","observe","unobserve","entries","_this3","entry","intersectionRatio","delay","transitionDelay","targets","values","Number","isEmpty","hasOwnProperty","nextFrame","hasFocusableTarget","focusableTarget","ApplicationController","hideEl","show","triggerTarget","popElTarget","overlay","showEl","CustomEvent","toggleElShow","closeOnEsc","tooltip","hide","toast","off","setToastId","hasTypeValue","toastId","typeValue","targetIdValue","targetId","body","overflow","zIndexBottomEls","el","zIndex","trayElTarget","returnMainMenu","hasDangerLinkTarget","dangerLinkTargets","link","subLevelTrayMenuTarget","topLevelTrayNavTarget","showSubLevel","subTrigger","menu","subMenuContentsTarget","innerHTML","childNodes","copy","cloneNode","topLevel","subMenuTitleTarget","title","getElementsByClassName","subTriggerTargets","hasReturnMainMenuTarget","returnMainMenuTarget","hasCloseBtnTarget","closeBtnTarget","hasSubLevelTrayMenuTarget","COMPACT_ATTR_NAME","isTurbolinksPreview","renderFromCache","toggle","toggleClass","sidebarCache","toggleAttribute","isExpanded","classes","logLevel","localStorage","log","info","msg","args","includes","console","warn","debug","likeEmoji","fromCodePoint","RoomVisitorChannel","options","init","Promise","resolve","isResolved","createSubscription","line","roomId","store","channel","consumer","subscriptions","room","connected","disconnected","received","data","publishedTo","commit","message","sentBy","sent_by","requestedHelp","ownerId","visitor","post","start_time","recurrenceId","constructURL","recurrence_id","t","eventId","patientId","eventStartTime","params","eventPatient","AsyncLocalStorage","speech","occupational","physical","feeding","STUDENT","CF_SLP","CCC_SLP","SLPA","OTA","COTA","OTR_L","PTA","CPTA","PT","disciplines","revealDisciplinesList","hideDisciplinesList","resetAllDisciplines","closest","currentlyChecked","showCheckbox","checkCheckbox","computeDisciplines","credentialIds","emptyObject","freeze","isUndef","v","isDef","isTrue","isPrimitive","isObject","_toString","isPlainObject","isRegExp","isValidArrayIndex","parseFloat","floor","isFinite","isPromise","catch","toNumber","isNaN","makeMap","expectsLowerCase","map","list","toLowerCase","isReservedAttribute","index","indexOf","splice","hasOwn","cached","cache","camelizeRE","camelize","replace","_","toUpperCase","capitalize","charAt","hyphenateRE","hyphenate","Function","ctx","boundFn","l","toArray","extend","_from","toObject","res","noop","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","Date","getTime","keysA","keysB","looseIndexOf","once","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","def","bailRE","RegExp","source","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","navigator","userAgent","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","opts","isServerRendering","global","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","ownKeys","Set","has","clear","uid","Dep","subs","addSub","sub","removeSub","depend","addDep","update","targetStack","pushTarget","popTarget","pop","VNode","tag","children","text","elm","context","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","parent","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","method","original","len","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","src","protoAugment","copyAugment","walk","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","property","getOwnPropertyDescriptor","getter","setter","childOb","dependArray","newVal","del","items","strats","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","concat","hooks","dedupeHooks","mergeAssets","hook","key$1","methods","inject","computed","provide","defaultStrat","mergeOptions","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","stringIndex","default","$options","_props","getType","getPropDefaultValue","prevShouldObserve","functionTypeCheckRE","isSameType","expectedTypes","handleError","err","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","counter","textNode","createTextNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","old","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","altKey","preserve","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","lastIndex","last","_isVList","resolveInject","provideKey","_provided","provideDefault","resolveSlots","slots","attrs","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","render","next","done","renderSlot","fallbackRender","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","listeners","injections","scopedSlots","_scopeId","_c","cloneAndMarkFunctionalResult","renderContext","clone","mergeProps","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","insert","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","cid","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","clearTimeout","ensureCtor","reject","reason","component","timeout","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","pre","applyNS","registerDeepBindings","_createElement","force","comp","base","__esModule","toStringTag","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","isInInactiveTree","direct","_directInactive","$children","handlers","_hasHookEvent","$emit","queue","waiting","flushing","currentFlushTimestamp","getNow","now","timeStamp","flushSchedulerQueue","watcher","sort","before","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","path","segments","parsePath","cleanupDeps","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","_data","getData","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","components","Vue","_init","initExtend","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps$1","initComputed$1","mixin","use","getComponentName","pattern","pruneCache","keepAliveInstance","pruneCacheEntry","current","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","KeepAlive","include","exclude","cacheVNode","vnodeToCache","keyToCache","created","destroyed","mounted","updated","builtInComponents","configDef","util","defineReactive","observable","plugin","installedPlugins","_installedPlugins","unshift","install","initUse","initMixin$1","initAssetRegisters","initGlobalAPI","ssrContext","version","acceptValue","isEnumeratedAttr","isValidContentEditableValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","genClassForVnode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","multiple","createElementNS","namespace","createComment","insertBefore","newNode","referenceNode","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","arg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","isInPre","baseSetAttr","convertEnumeratedValue","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","ownerDocument","updateDOMListeners","change","normalizeEvents","svgContainer","events","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","firstChild","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","number","trim","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","removeClass","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","nodeType","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","modules","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","oldElm","patchable","i$2","createPatchFunction","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","hasNoMatchingOption","actuallySetSelected","isMultiple","selected","option","selectedIndex","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","unbind","platformDirectives","transitionProps","mode","getRealChild","compOptions","extractTransitionData","placeholder","h","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","dy","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","hasMove","_reflow","offsetHeight","propertyName","_hasMove","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","query","startCarousel","stopCarousel","noAutoTargets","showNextDiv","interval","setInterval","clearInterval","infoTargets","paths","stroke","updateVisibleDiv","toggleRunning","floatingMenu","navBtnClosed","navBtnOpen","closeMenu","stopPropagation","toggleAddOn","iconToggle","flexible","therapy_tools","teletherapy","controlledIconTargets","elem","controlledIcon","processButtons","processValues","controlledButtonsTargets","controlledButtons","controlledValuesTargets","controlledValues","icon","showCurrentSlide","hasRunFirst","indexValue","uncontrolledIndex","uncontrolledTargets","uncontrolledActive","controlledTargets","hidden","controlledIndex","targetSection","targetSectionId","highlightTargetSection","scrollIntoView","scrollProperty","unregisterHighlightRemovalEvent","highlightValue","targetHighlightClass","registerHighlightRemovalEvent","boundRemoveHighlight","removeHighlight","newObject","hasObjectValue","objectValue","behavior","block","inline","hasHighlightClass","highlightClass","highlight","VisualScheduleChannel","sessionId","visual_schedule","unsubscribe","visualSchedule","staticRevealer","EventBus","initializeDatepickers","datepickers","dropdown","sharedOptions","buttonClass","format","datepicker","maxDate","combinedOptions","Datepicker","createPromise","VisualScheduleChannelCreator","createChannel","dataChannel","safeRegion","height","positions","leftOffset","topOffset","y","isPositionBottom","bottom","isPositionRight","right","cancel","getElementOffset","doc","box","offsetAttributes","borderLeftWidth","borderTopWidth","paddingLeft","paddingTop","getElementStyle","docElem","documentElement","scrollLeftTop","docElement","scrollLeft","scrollTop","host","getScrollLeftTop","clientLeft","clientTop","defaultView","currentStyle","insertAfter","existingNode","visible","HTMLInputElement","offsetWidth","enabled","focusable","tabIndex","reflow","Delegate","Element","elements","ElementObserver","attributeFilter","metaValue","DiagnosisCodes","preservePlaceholder","placeholderSelectize","$input","$control_input","diagnosisCodeAlertMap","registerExistingSelectComponents","registerDeleteItem","injectDisciplineAddFieldEvent","toggleDisciplineEvent","toggleDiscipline","formSubmitCleanUp","submitButton","emptyFields","selectElements","selectComplete","select","deleteElement","autoComplete","disciplineId","diagComponents","diagElement","fieldset","parentElement","formInput","offsetParent","selectedComponent","selectedAlertId","alertIds","deleteClicked","classThis","hasClass","addNewDiagnosisSelectComponent","awc","controlLoop","handleRemove","checkCodeCombinations","hardDelete","diagnosisCodesValidation","put","hide_autism_validation","selectizeDiagnosisCode","parentScope","valueField","labelField","onDropdownClose","load","ajax","dataType","q","success","onChange","onChangeHandler","diagnosisCodeText","selectHtmlElement","domControl","regexTest","alertControl","selectComponent","diagnosisCode","domChild","childId","regex","code","domId","toggleClassListDisplay","setAlertId","generateUuid","random","alertType","isSelectize","selectedText","itemInMemory","findIndex","domTarget","domIds","medicalAlert","noMedicalCodeRCodeAlert","medicalCode","containsMedicalCode","fCodeWithMedical","fCodeWithTreatment","rCodeWithTreatment","hasAutismAlert","hasNoSpecificAlert","focusedComponent","selectItems","domIDs","selectItem","controlObjects","treatmentCode","rCode","fCode","htmlElement","newIndex","isMedical","objectIndex","mapTemplate","extra","getHours","getMinutes","getSeconds","round","ReactionsChannel","roomsSessionId","reaction","meta","publicReaction","directLine","lines","find","admin","testing","RoomChat","username","sentAt","sent_at","publicChat","chat","correction","goalPositionTracker","previousString","defaultValueData","setDefaultDataValue","resetGoalFormPositions","getElementsByName","getAllIndexes","indexes","addObjectPronounGoalFormElement","dfElement","containerElement","containerElementInner","newElementLabel","containerElementSpan","newElementPosition","newElementName","newElementVal","intVal","pronoun","option2","addPossessivePronounGoalFormElement","defaultValue","addPositionInWordGoalFormElement","position_in_words","addTargetLevelGoalFormElement","target_levels","addBlendGoalFormElement","blends","addBlendGroupGoalFormElement","blendGroups","addPhonemeCategoryGoalFormElement","phonemeCategories","addPhonemeGroupGoalFormElement","phonemeGroups","addPhonemeGoalFormElement","phonemes","optionGroup","inner_array","addStringGoalFormElement","addIntegerGoalFormElement","addPercentageGoalFormElement","containerElementInputGroup","newElementGroup","newElementSpan","addPatientNameGoalFormElement","selectAll","range","createRange","selectNode","getSelection","removeAllRanges","addRange","setUpCustomTagListeners","customTags","rebuildDynamicElements","editor","getDocument","goalsTrixInitialize","toolbar","toolbarElement","ttools","btools","ftools","insertAdjacentHTML","getElementsByTagName","tfElement","newElement","newContent","actionName","insertString","els","trixString","patientNameCount","percentageCount","integerCount","stringCount","possessivePronounCount","objectPronounCount","phonemeCategoryCount","phonemeGroupCount","blendCount","blendGroupCount","phonemeCount","targetLevelCount","positionInWordCount","array1","array2","patientNameCounter","percentageCounter","integerCounter","stringCounter","possessivePronounCounter","objectPronounCounter","phonemeCategoryCounter","phonemeGroupCounter","blendCounter","blendGroupCounter","phonemeCounter","targetLevelCounter","positionInWordCounter","AddFields","diagnosisCodeManager","diagnosisCodesManager","links","parsedHTML","iterateLinks","relatedField","addLinksListener","handleClick","newFieldsHtml","time","linkId","regexp","newFields","fields","parseHTMLResponse","selectizeTreatability","selectizeText","selectizeNPI","selectizeGoal","selectizeWord","selectizeWordGroup","selectizeActivityList","selectizeActivityItem","selectizeResource","selectizeCredentials","selectizeMinimalPairs","selectizeSchool","selectizeDistrict","selectizeReferenceLink","patientForm","billingSequence","newSequence","uniqueIdentifier","targetContainer","appendFieldsWithoutUniqueId","dataElement","removeLinks","patientFormValidationAlert","tabToDisplay","escape","description","maxItems","preload","addressAttributeDelineation","delineationElement","delineation","first_name","last_name","middle_name","organization_name","suffix","primary_taxonomy_name","primary_taxonomy_number","states","AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY","DC","PR","AS","GU","VI","FM","MH","MP","PW","addressTypes","LOCATION","MAILING","phoneNumberTypes","mapFields","address_1","address_2","address_purpose","address_type","city","country_code","country_name","fax_number","postal_code","telephone_number","addresses","address","workPhoneElement","workPhoneTypeElement","workFaxElement","workFaxTypeElement","idx","field","mappedField","fieldValue","fieldElement","onInitialize","addOption","selectedItems","addItem","dataAttr","author","credentialFields","credentialFieldsValues","fieldAdded","HTML","newFromFieldsIndex","getNewIndexFromTimeString","responseDocument","DOMParser","parseFromString","firstElementChild","Popper","_interopDefaultLegacy","$__default","Popper__default","_createClass","_extends","assign","TRANSITION_END","transitionEndEmulator","one","Util","triggerTransitionEnd","getUID","prefix","getSelectorFromElement","hrefAttr","getTransitionDurationFromElement","floatTransitionDuration","floatTransitionDelay","supportsTransitionEnd","isElement","typeCheckConfig","componentName","configTypes","valueType","Error","findShadowRoot","attachShadow","getRootNode","ShadowRoot","jQueryDetection","jquery","emulateTransitionEnd","special","bindType","delegateType","handle","handleObj","DATA_KEY$a","JQUERY_NO_CONFLICT$a","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","closeEvent","_destroyElement","detach","_jQueryInterface","$element","_handleDismiss","alertInstance","noConflict","DATA_KEY$9","JQUERY_NO_CONFLICT$9","CLASS_NAME_ACTIVE$3","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_INPUT","SELECTOR_BUTTON","Button","shouldAvoidTriggerChange","triggerChangeEvent","addAriaPressed","avoidTriggerChange","initialButton","inputBtn","buttons","_button","NAME$8","DATA_KEY$8","EVENT_KEY$8","JQUERY_NO_CONFLICT$8","CLASS_NAME_ACTIVE$2","DIRECTION_NEXT","DIRECTION_PREV","EVENT_SLID","SELECTOR_ACTIVE_ITEM","Default$7","keyboard","slide","pause","wrap","touch","DefaultType$7","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","prev","cycle","_updateInterval","visibilityState","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","originalEvent","pointerType","clientX","touches","move","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$7","DATA_KEY$7","JQUERY_NO_CONFLICT$7","CLASS_NAME_SHOW$6","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","not","startEvent","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$trigger","selectors","$target","NAME$6","DATA_KEY$6","EVENT_KEY$6","JQUERY_NO_CONFLICT$6","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLASS_NAME_DISABLED$1","CLASS_NAME_SHOW$5","CLASS_NAME_MENURIGHT","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_CLICK_DATA_API$2","EVENT_KEYDOWN_DATA_API","SELECTOR_DATA_TOGGLE$2","SELECTOR_MENU","Default$5","flip","boundary","reference","popperConfig","DefaultType$5","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","scheduleUpdate","Default","DefaultType","_getPlacement","$parentDropdown","placement","_getOffset","offsets","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","NAME$5","DATA_KEY$5","EVENT_KEY$5","JQUERY_NO_CONFLICT$5","CLASS_NAME_OPEN","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS$1","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEDOWN_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Default$4","backdrop","DefaultType$4","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","modalBody","Node","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","className","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingRight","rect","innerWidth","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","clientWidth","_this11","uriAttrs","DefaultWhitelist","area","br","col","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","small","span","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","_loop","elName","nodeName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","NAME$4","DATA_KEY$4","EVENT_KEY$4","JQUERY_NO_CONFLICT$4","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$3","HOVER_STATE_SHOW","HOVER_STATE_OUT","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","template","html","fallbackPlacement","customClass","sanitize","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","_isWithActiveTrigger","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","NAME","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX$1","setElementContent","empty","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","popperData","popper","initConfigAnimation","NAME$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","BSCLS_PREFIX_REGEX","Default$2","DefaultType$2","Popover","_Tooltip","_getContent","CLASS_PREFIX","CLASS_NAME_FADE$2","NAME$2","DATA_KEY$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","CLASS_NAME_ACTIVE$1","METHOD_POSITION","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_NAV_LINKS","Default$1","DefaultType$1","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","pageYOffset","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","parents","scrollSpys","$spy","DATA_KEY$1","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","JQUERY_NO_CONFLICT","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","EVENT_CLICK_DISMISS","autohide","Toast","_clearTimeout","_close","Scrollspy","_wrapNativeSuper","Class","_cache","Map","_isNativeFunction","Wrapper","_construct","_get","receiver","_superPropBase","desc","Parent","_createForOfIteratorHelper","allowArrayLike","it","_unsupportedIterableToArray","F","_e59","f","normalCompletion","didErr","step","_e60","return","_slicedToArray","_arrayWithHoles","_arr","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","minLen","iter","arr2","w","G","Y","et","preview","presentation","caption","quote","nestable","heading1","terminal","breakOnReturn","group","htmlAttributes","plaintext","bulletList","bullet","listAttribute","numberList","attachmentGallery","exclusive","composesExistingText","recentAndroid","samsungAndroid","forcesObjectResizing","supportsInputEvents","InputEvent","ADD_ATTR","SAFE_FOR_XML","RETURN_DOM","attachFiles","bold","bullets","byte","captionPlaceholder","indent","italic","numbers","outdent","redo","strike","undo","unlink","urlPlaceholder","GB","KB","MB","PB","TB","precision","formatter","_e2","_i2","_n2","pow","toFixed","g","m","_e3","_i3","_ref","onElement","matchingSelector","withCallback","inPhase","times","_ref2","A","_ref3","untilNode","C","E","previousSibling","S","R","_ref4","onlyNodesOfType","usingFilter","expandEntityReferences","NodeFilter","SHOW_ELEMENT","SHOW_TEXT","SHOW_COMMENT","SHOW_ALL","createTreeWalker","T","editable","contenteditable","L","_t2","_e4","D","I","N","_ref5","strict","O","COMMENT_NODE","_ref6","B","trixCursorTarget","P","M","TEXT_NODE","level2Enabled","getLevel","pickFiles","fileInputId","removeBlankTableCells","tableCellSeparator","tableRowSeparator","W","inheritable","parser","fontWeight","fontStyle","groupTagName","frozen","backgroundColor","U","getDefaultHTML","V","z","attachments","blockAttributes","browser","attachmentCaption","attachmentCaptionEditor","attachmentMetadata","attachmentMetadataContainer","attachmentName","attachmentProgress","attachmentSize","attachmentToolbar","dompurify","fileSize","keyNames","lang","textAttributes","_H","H","toMethod","toProperty","optional","J","K","X","ucs2String","codepoints","ucs2Length","_this$codepoints","fromCodepoints","fromUCS2String","Z","Q","codePointAt","tt","_r2","_e5","nt","rt","_q2","_super2","contentsForInspection","_i4","_n3","fromJSON","ot","_i5","st","at","lt","dirName","FormData","ct","ut","ht","dt","gt","bt","pt","mt","ft","vt","At","yt","xt","_e6","nonce","_i6","Ct","Et","_t3","St","metaKey","ctrlKey","Rt","kt","_i7","_n4","Tt","_i8","wt","Nt","Lt","_wt2","It","Dt","_wt4","_wt6","Ot","_q3","_super3","selectionManagers","stop","selectionDidChange","notifySelectionManagersOfSelectionChange","Ft","Pt","rangeCount","Mt","getRangeAt","Bt","jt","startContainer","endContainer","Wt","Ut","Vt","zt","isEqualTo","qt","utf16String","_s2","Ht","_rt","_super4","Gt","merge","Jt","Kt","$t","Yt","getKeys","_t4","_e7","_i9","getKeysCommonToHash","_t5","_n5","Xt","_ref7","depth","asTree","objects","groupObjects","getObjects","getCacheKey","_ref8","canBeGrouped","canBeGroupedWith","Zt","_q4","_super5","Qt","te","trixStoreKey","ee","_q5","_super6","performing","performed","succeeded","promise","perform","proxyMethod","ie","_q6","_super7","childViews","rootView","createNodes","parentView","invalidate","findViewForObject","getCachedViewForObject","recordChildView","createChildView","cacheViewForObject","viewClass","ne","getAllChildViews","findElementForObject","_step","_iterator","_e8","getViewCache","isViewCachingEnabled","viewCache","shouldCacheViews","_e9","_i10","_ie","_super8","_this12","objectGroup","_this13","findOrCreateCachedChildView","createContainerElement","getChildViews","getNodes","getDepth","re","oe","se","ae","le","ce","ue","seal","he","_ref9","de","ge","ke","me","Te","pe","fe","be","ve","Ae","ye","xe","Ce","Ee","Se","Re","we","_r3","_t6","Le","_e10","De","_step2","_iterator2","_ref11","_i11","_n6","Ne","_i12","Ie","Oe","Fe","Pe","Me","Be","je","We","Ue","Ve","ze","qe","He","Je","Ke","Ge","Ye","$e","Xe","Ze","Qe","ARIA_ATTR","ATTR_WHITESPACE","CUSTOM_ELEMENT","DATA_ATTR","DOCTYPE_NAME","ERB_EXPR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","MUSTACHE_EXPR","TMPLIT_EXPR","oi","si","isSupported","currentScript","DocumentFragment","HTMLTemplateElement","_e$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","trustedTypes","_t7","_n7","implementation","createNodeIterator","createDocumentFragment","importNode","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createHTMLDocument","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","PARSER_MEDIA_TYPE","ALLOWED_TAGS","ALLOWED_ATTR","ALLOWED_NAMESPACES","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","FORBID_CONTENTS","FORBID_TAGS","FORBID_ATTR","USE_PROFILES","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","FORCE_BODY","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","ALLOWED_URI_REGEXP","NAMESPACE","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","CUSTOM_ELEMENT_HANDLING","svgFilters","mathMl","ADD_TAGS","table","tbody","TRUSTED_TYPES_POLICY","createHTML","createScriptURL","createPolicy","attribute","getAttributeNode","_e11","createDocument","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","namespaceURI","allowedTags","_e12","_i13","_n8","_r4","__removalCount","attrValue","keepAttr","allowedAttributes","forceKeepAttr","getAttributeType","nextNode","_e13","shadowroot","shadowrootmode","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","removeHook","removeHooks","removeAllHooks","ai","ci","ui","_q7","_super9","_this14","_ref13","forbiddenProtocols","forbiddenElements","sanitizeElements","normalizeListElementNesting","_i14","currentNode","elementIsRemovable","sanitizeElement","_this15","protocol","previousElementSibling","elementIsForbidden","elementIsntSerializable","getHTML","di","gi","_ie2","_super10","_this16","uploadProgressDelegate","attachmentPiece","piece","getClassName","getHref","tabindex","hasContent","setHTML","getContent","createContentNodes","createCaptionElement","isPending","progressElement","getUploadProgress","trixMutable","mi","getCaption","_e14","_i15","_n9","getCaptionConfig","getFilename","getFormattedFilesize","_i16","_n10","getExtension","trixAttachment","trixContentType","getContentType","trixId","trixAttributes","trixSerialize","pi","findProgressElement","fi","_gi","_super11","_this17","previewDelegate","image","updateAttributesForImage","getURL","getPreviewURL","_i17","getWidth","getHeight","bi","_ie3","_super12","_this18","getAttributes","textConfig","string","createAttachmentNodes","createStringNodes","_i18","isPreviewable","_t8","_e15","_i19","_n11","_e16","_e17","preserveSpaces","_o2","_e18","styleProperty","_t9","_e19","_i20","_n12","isLast","isFirst","followsWhitespace","vi","_ie4","_super13","_this19","getPieces","_r5","_o3","_s3","Ai","_a","yi","xi","_ie5","_super14","_this20","_i21","getLastAttribute","_n13","shouldAddExtraNewlineElement","_e20","_i22","isRTL","_r6","_mt","_mt$htmlAttributes","_t10","getBlockBreakPosition","_t11","Ci","_ie6","_super15","_this21","elementStore","setDocument","_this22","shadowElement","_t12","getBlocks","Si","createDocumentFragmentForSync","lastChild","didSync","_this23","Ei","garbageCollectCachedViews","_this24","replaceChild","Ri","ki","Ti","_invoke","wi","toPrimitive","Li","Di","Oi","Ii","Ni","Fi","Pi","Mi","Bi","asyncIterator","throw","_rt2","_super16","_this25","copyWithAttributes","hasSameConstructorAs","hasSameStringValueAsPiece","hasSameAttributesAsPiece","inspect","types","ji","_ee","_super17","_this26","_this27","Image","onload","naturalWidth","naturalHeight","onerror","Wi","_rt3","_super18","_this28","releaseFile","didChangeAttributes","attachmentDidChangeAttributes","preloadURL","previewablePattern","preloadFile","releasePreloadedFile","uploadProgress","attachmentDidChangeUploadProgress","previewURL","preloadingURL","attachmentDidChangePreviewURL","fileObjectURL","URL","createObjectURL","revokeObjectURL","_this29","setAttributes","setPreviewURL","attributesForFile","setFile","filesize","contentType","Ui","_i23","_super19","_this30","ensureAttachmentExclusivelyHasAttribute","removeProhibitedAttributes","permittedAttributes","registerType","Vi","_i24","_super20","_this31","zi","_rt4","_super21","_this32","_this$splitObjectAtPo2","splitObjectAtPosition","insertSplittableListAtIndex","replaceObjectAtIndex","_this$splitObjectsAtR2","splitObjectsAtRange","_this$splitObjectsAtR4","_this$splitObjectsAtR6","_this$constructor$spl2","_this$splitObjectAtPo4","Hi","Ji","findIndexAndOffsetAtPosition","_this$findIndexAndOff2","_t13$splitAtOffset2","getObjectAtIndex","splitAtOffset","_s4","_a2","getLength","canBeConsolidatedWith","consolidateWith","consolidate","_n14","_n15","_r7","_this33","endPosition","qi","_n16","_r8","Ki","_rt5","_super22","_this34","pieceList","copyWithPieceList","insertTextAtPosition","insertSplittableListAtPosition","removeObjectsInRange","removeTextAtRange","getTextAtRange","addAttributesAtRange","transformObjectsInRange","copyWithAdditionalAttributes","copyWithoutAttribute","getObjectAtPosition","fromCommonAttributesOfObjects","getCommonAttributes","getCommonAttributesAtRange","getSplittableListInRange","getStringAtRange","getAttachmentPieces","_step3","_iterator3","_n17","getAttachmentAndPositionById","getRangeOfAttachment","getEndPosition","isBlockBreak","eachObject","selectSplittableList","isSerializable","toConsole","getDirection","Gi","_rt6","_super23","_this35","Yi","copyWithText","copyUsingObjectMap","en","rn","nn","getAttributeLevel","getNestableAttributes","getLastNestableAttribute","_e21","lastIndexOf","_i25","hasAttributes","textForStringWithAttributes","getTextWithoutBlockBreak","appendText","Qi","_t14","_e22","$i","Zi","tn","Xi","blockBreak","_rt7","_super24","_this36","blockList","getBlockAtIndex","consolidateBlocks","_this$locationFromPos","locationFromPosition","getBlockAtPosition","removeObjectAtIndex","getBaseBlockAttributes","_e27","copyWithBaseBlockAttributes","getBlockCount","_t15","insertTextAtRange","_e28","insertDocumentAtRange","_this$locationFromPos2","editObjectAtIndex","_t17","_Array$from2","locationRangeFromRange","getStringAtPosition","_t18","_i26","_n18","_r9","_o4","_t20","getDocumentAtRange","_o$getBlocks","_o$getBlocks2","eachBlockAtRange","addAttribute","addAttributeAtRange","eachBlock","removeAttributeAtRange","getTextAtIndex","updateAttributesForAttachment","addHTMLAttribute","replaceBlock","expandRangeToLineBreaksAndSplitBlocks","_e31","removeLastListAttributeAtRange","exceptAttributeName","convertLineBreaksToBlockBreaksInRange","removeBlockAttributesAtRange","removeLastTerminalAttributeAtRange","consolidateBlocksAtRange","copyWithoutAttributes","_t24","findLineBreakInDirectionFromPosition","positionFromLocation","insertBlockBreakAtRange","_t25","_t29","consolidateFromIndexToIndex","_this$locationFromPos7","getPieceAtPosition","_this$locationFromPos8","editCount","_t31","_t32","getCommonAttributesAtPosition","_e32","_i27","sn","_this$locationFromPos9","getAttributesAtPosition","_this$locationFromPos10","_Array$from6","getExpandedRangeForAttributeAtOffset","_this37","_loop2","_e33","_r10","_step4","_iterator4","getAttachments","_e34","_n19","_r11","_o5","_step5","_iterator5","_e35","_ref14","withValue","_t35","findPositionAtIndexAndOffset","_Array$from8","getTexts","toSerializableText","an","ln","cn","_q8","_super25","_this38","_ref15","blocks","blockElements","processedElements","createHiddenContainer","_t36","gn","processNode","translateBlockElementMarginsToNewlines","removeHiddenContainer","isInsignificantTextNode","appendBlockForTextNode","processTextNode","appendBlockForElement","processElement","currentBlockElement","isBlockElement","appendStringWithAttributes","_t37","getBlockAttributes","_n20","getBlockHTMLAttributes","currentBlock","appendBlockForAttributesWithElement","_e36","_n21","_e37","findParentBlockElement","appendEmptyBlock","un","mn","getTextAttributes","_i28","appendAttachmentWithAttributes","isExtraBR","_i29","_t38","_n22","needsTableSeparator","appendPiece","_n23","_r12","_step6","_o6","_iterator6","findBlockElementAncestors","_i30","_n24","_t39","_r13","_o7","reverse","_i31","pn","hn","_i32","getMarginOfDefaultBlockElement","_e38","_i33","getMarginOfBlockElementAtIndex","prependStringToTextAtIndex","appendStringToTextAtIndex","dn","whiteSpace","marginTop","marginBottom","FILTER_REJECT","FILTER_ACCEPT","bn","vn","An","yn","xn","toSerializableDocument","toJSONString","_e39","_i34","_n25","Cn","En","_q9","_super26","_this39","attachmentManager","requestRemovalOfAttachment","Sn","_q10","_super27","_this40","managedAttachments","manageAttachment","_e40","_i35","attachmentIsManaged","attachmentManagerDidRequestRemovalOfAttachment","Rn","composition","getSelectedRange","startPosition","startLocation","endLocation","breaksOnReturn","previousCharacter","nextCharacter","isListItem","kn","_q11","_super28","_this41","currentAttributes","revision","refreshAttachments","compositionDidChangeDocument","selectedRange","compositionWillLoadSnapshot","setSelection","compositionDidLoadSnapshot","_ref16","updatePosition","notifyDelegateOfInsertionAtRange","insertDocument","getCurrentTextAttributes","insertText","shouldDecreaseListLevel","decreaseListLevel","shouldPrependListItem","_e41","copyWithoutText","shouldInsertBlockBreak","insertBlockBreak","shouldRemoveLastBlockAttribute","removeLastBlockAttribute","shouldBreakFormattedBlock","breakFormattedBlock","mergeDocumentAtRange","copyUsingObjectsFromDocument","getLocationRange","rangeFromLocationRange","insertFiles","_this42","compositionShouldAcceptFile","_i36","attachmentForFile","insertAttachments","_this43","textForAttachmentWithAttributes","shouldManageMovingCursorInDirection","_ref17","canDecreaseBlockAttributeLevel","_t40","getBlock","decreaseBlockAttributeLevel","getExpandedRangeInDirection","getAttachmentAtRange","editAttachment","moveTextFromRangeToPosition","stopEditingAttachment","_Array$from12","removeCurrentAttribute","placeholderPosition","getPosition","setSelectedRange","setCurrentAttribute","canSetCurrentBlockAttribute","canSetCurrentTextAttribute","getSelectedDocument","_i37","_Array$from13","isTerminalBlock","setBlockAttribute","setTextAttribute","notifyDelegateOfCurrentAttributesChange","_n26","setHTMLAttributeAtPosition","_Array$from15","_t42","canSetCurrentAttribute","applyBlockAttributeAtRange","removeBlockAttribute","updateCurrentAttributes","removeTextAttribute","getNestingLevel","_t43","getPreviousBlock","getListItemAttributes","decreaseNestingLevel","increaseNestingLevel","_this44","ignoreLock","_e42","_e43","_i38","hasCurrentAttribute","compositionDidRequestChangingSelectionToLocationRange","getSelectionManager","setLocationRange","targetLocationRange","withTargetLocationRange","createLocationRangeFromDOMRange","_ref18","_Array$from18","_Array$from19","translateUTF16PositionFromOffset","editingAttachment","_n27","_t44","_ref19","expandSelectionAroundCommonAttribute","getRangeOfCommonAttributeAtPosition","getSelectedAttachments","positionIsCursorTarget","locationIsCursorTarget","_this45","_ref20","added","compositionDidRemoveAttachment","compositionDidAddAttachment","compositionDidEditAttachment","compositionDidChangeAttachmentPreviewURL","compositionDidStartEditingAttachment","compositionDidStopEditingAttachment","removeAttributeForAttachment","removeLastAttribute","_e44","compositionDidChangeCurrentAttributes","compositionDidPerformInsertionAtRange","toUTF16String","offsetFromUCS2Offset","offsetToUCS2Offset","Tn","_q12","_super29","_this46","undoEntries","redoEntries","_ref21","consolidatable","wn","_i39","createEntry","_e45","loadSnapshot","snapshot","_e46","_ref22","getSnapshot","Ln","Dn","applyBlockAttribute","_this47","findRangesOfBlocks","_this48","findRangesOfPieces","getCharacterAtPosition","moveSelectedRangeForward","findRangesForBlockAttribute","findRangesForTextAttribute","Nn","In","On","selectionManager","undoManager","filters","loadDocument","deleteInDirection","insertAttachment","insertFile","insertHTML","insertLineBreak","getClientRectAtLocationRange","expandSelectionInDirection","moveCursorInDirection","setHTMLAtributeAtPosition","canDecreaseNestingLevel","canIncreaseNestingLevel","canRedo","canUndo","_ref23","recordUndoEntry","Fn","_ref24","findAttachmentElementParentForNode","_s5","Pn","_this$findNodeAndOffs2","findNodeAndOffsetFromLocation","_step7","_iterator7","getSignificantNodesForIndex","_r14","_o8","Mn","_o9","Bn","jn","caretPositionFromPoint","_document$caretPositi","_t45","offsetNode","_r15","setStart","caretRangeFromPoint","createTextRange","_t46","_t47","moveToPoint","getClientRects","Wn","_q13","_super30","_this49","didMouseDown","locationMapper","pointMapper","lockCount","currentLocationRange","lockedLocationRange","createDOMRangeFromLocationRange","updateCurrentLocationRange","getLocationAtPoint","getClientRectsForDOMRange","_t48","collapsed","selectionIsCollapsed","domRangeWithinElement","findLocationFromContainerAndOffset","startOffset","endOffset","pauseTemporarily","_this50","paused","locationRangeDidChange","findContainerAndOffsetFromLocation","_t49","setEnd","createDOMRangeFromPoint","ar","Un","Attachment","AttachmentManager","AttachmentPiece","Block","Composition","Document","Editor","HTMLParser","HTMLSanitizer","LineBreakInsertion","LocationMapper","ManagedAttachment","Piece","PointMapper","SelectionManager","SplittableList","StringPiece","Text","UndoManager","Vn","ObjectView","AttachmentView","BlockView","DocumentView","PieceView","PreviewableAttachmentView","TextView","zn","qn","Hn","Jn","do","undos","Kn","_q14","_super31","_this51","trixAction","didClickToolbar","didClickActionButton","didInputCaption","didKeyDownCaption","didChangeCaption","didBlurCaption","editCaption","makeElementMutable","addToolbar","installCaptionEditor","savePendingCaption","didUninstallAttachmentEditor","pendingCaption","_r16","attachmentEditorDidRequestUpdatingAttributesForAttachment","attachmentEditorDidRequestRemovingAttributeForAttachment","attachmentEditorDidRequestRemovalOfAttachment","keyCode","attachmentEditorDidRequestDeselectingAttachment","Gn","_q15","_super32","_this52","didFocus","didBlur","didClickAttachment","documentView","_this53","focused","compositionControllerDidFocus","blurPromise","_this54","compositionControllerDidBlur","findAttachmentForElement","compositionControllerDidSelectAttachment","isEditingAttachment","canSyncDocumentView","isSynced","compositionControllerWillSyncDocumentView","compositionControllerDidSyncDocumentView","compositionControllerDidRender","invalidateViewForObject","enableViewCaching","disableViewCaching","attachmentEditor","uninstallAttachmentEditor","getAttachmentPieceForAttachment","uninstall","compositionControllerWillUpdateAttachment","compositionControllerDidRequestRemovalOfAttachment","compositionControllerDidRequestDeselectingAttachment","getAttachmentById","Yn","_q16","_super33","$n","Xn","Zn","childList","characterDataOldValue","subtree","Qn","_q17","_super34","_this55","didMutate","disconnect","_this$mutations","mutations","findSignificantMutations","elementDidMutate","getMutationSummary","_this56","mutationIsSignificant","nodeIsMutable","_i40","_Array$from20","nodesModifiedByMutation","_e47","nodeIsSignificant","attributeName","addedNodes","removedNodes","getTextMutationSummary","_this$getTextChangesF","getTextChangesFromCharacterData","additions","deletions","getTextChangesFromChildList","textAdded","textDeleted","getMutationsByType","tr","_n28","_r17","_o10","_zt","_zt2","_zt3","_zt4","_i41","_Array$from21","_i42","er","_ee2","_super35","_this57","_this58","abort","ir","previousEvent","checkSamsungKeyboardBuggyModeStart","checkSamsungKeyboardBuggyModeEnd","buggyMode","insertingLongTextAfterUnidentifiedChar","nr","innerText","inputType","isBeforeInputInsertText","previousEventWasUnidentifiedKeydown","or","rr","sr","_q18","_super36","_this59","_t50","mutationObserver","flakyKeyboardDetector","handlerFor","inputControllerDidRequestRender","inputControllerDidRequestReparse","requestRender","_this60","all","handleInput","inputControllerWillAttachFiles","responder","_this61","shouldIgnore","eventName","inputControllerWillHandleInput","inputControllerDidHandleInput","lr","cr","ur","_sr","_super37","_this62","resetInputSummary","_e48","inputSummary","_i43","isComposing","inputControllerDidAllowUnhandledInput","mutationIsExpected","requestReparse","preferDocument","didDelete","_t51","_i44","positionIsBlockBreak","compositionInput","getEndData","fr","isEnded","setInputSummary","setData","_e49","_i45","Files","_this63","pageXOffset","opacity","keydown","didInput","_n29","keyName","_e50","_i46","inputControllerDidReceiveKeyboardCommand","keypress","mr","inputControllerWillPerformTyping","selectionIsExpanded","textInput","_t52","dragenter","dragstart","serializeSelectionToDataTransfer","dataTransfer","draggedRange","inputControllerDidStartDrag","dragover","canAcceptDataTransfer","_n30","clientY","draggingPoint","inputControllerDidReceiveDragOverPoint","dragend","inputControllerDidCancelDrag","drop","setLocationRangeFromPointRange","inputControllerWillMoveText","moveTextFromRange","_t53","fromJSONString","cut","clipboardData","inputControllerWillCutText","paste","_this64","testClipboardData","clipboard","pr","_t54","createLinkHTML","inputControllerWillPaste","inputControllerDidPaste","_t55","getAsFile","_e51","dr","getPastedHTMLUsingHiddenElement","compositionstart","getCompositionInput","compositionupdate","compositionend","beforeinput","backspace","tab","selectionIsInCursorTarget","control","alt","gr","_e52","charCode","_step8","_iterator8","_t56","_i47","_n31","_t57","_i48","_q19","_super38","_this65","inputController","isSignificant","insertPlaceholder","_t58","selectPlaceholder","forgetPlaceholder","canApplyToDocument","_sr2","_super39","_this66","scheduledRender","reparse","cancelAnimationFrame","afterRender","withTargetDOMRange","inputControllerWillPerformFormatting","toggleCurrentAttribute","_this67","_ref25","getTargetDOMRange","minLength","_ref26","getTargetRanges","_t59","vr","_i49","Er","_e53","shiftKey","_i50","withEvent","xr","Cr","inputTypes","scheduleRender","selectionContainsAttachments","dragging","point","Sr","Ar","_i51","_e54","ArrowLeft","ArrowRight","Backspace","shouldManageDeletingInDirection","deleteByComposition","deleteByCut","deleteByDrag","deleteByDragRange","deleteCompositionText","deleteContent","deleteContentBackward","deleteContentForward","deleteEntireSoftLine","deleteHardLineBackward","deleteHardLineForward","deleteSoftLineBackward","deleteSoftLineForward","deleteWordBackward","deleteWordForward","formatBackColor","activateAttributeIfSupported","formatBold","toggleAttributeIfSupported","formatFontColor","formatFontName","formatIndent","formatItalic","formatJustifyCenter","formatJustifyFull","formatJustifyLeft","formatJustifyRight","formatOutdent","formatRemove","_i52","getCurrentAttributes","formatSetBlockTextDirection","formatSetInlineTextDirection","formatStrikeThrough","formatSubscript","formatSuperscript","formatUnderline","historyRedo","inputControllerWillPerformRedo","historyUndo","inputControllerWillPerformUndo","insertCompositionText","insertFromComposition","insertFromDrop","insertFromPaste","_this68","_n32","_o11","yr","insertFromYank","insertLink","insertOrderedList","insertParagraph","insertReplacementText","_this69","insertTranspose","insertUnorderedList","Rr","kr","Tr","wr","Lr","Dr","Nr","Ir","Fr","Or","Pr","_q20","_super40","_this70","didClickAttributeButton","didClickDialogButton","didKeyDownDialogInput","actions","resetDialogInputs","toolbarDidClickButton","getDialog","toggleDialog","toolbarDidInvokeAction","toolbarDidToggleAttribute","refreshAttributeButtons","_i53","_n33","hideDialog","refreshActionButtons","_this71","eachActionButton","_this72","eachAttributeButton","dialogIsVisible","_i54","_Array$from22","_t60","_i55","showDialog","toolbarWillShowDialog","_e55","toolbarDidShowDialog","willValidate","setCustomValidity","checkValidity","isSafeAttribute","toolbarDidUpdateAttribute","toolbarDidRemoveAttribute","toolbarDidHideDialog","Mr","_Yn","_super41","_this73","editorElement","compositionController","toolbarController","loadHTML","registerSelectionManager","unregisterSelectionManager","replaceHTML","notifyEditorElement","handlingInput","updateAttributes","updateCurrentActions","pasting","pastedRange","rerenderViewForObject","unmanageAttachment","attachmentLocationRange","getLocationRangeOfAttachment","installAttachmentEditorForAttachment","loadingSnapshot","isFocused","requestedLocationRange","compositionRevisionWhenLocationRangeRequested","refreshViewCache","removeAttachment","editorWillSyncDocumentView","lock","clearSelection","editorDidSyncDocumentView","unlock","renderedCompositionRevision","runEditorFilters","isFocusedInvisibly","requestedRender","recordTypingUndoEntry","recordFormattingUndoEntry","applyKeyboardCommand","locationRangeBeforeDrag","invokeAction","selectionFrozen","expandSelectionForEditing","freezeSelection","dialogName","thawSelection","actionIsExternal","invokingElement","_e56","canInvokeAction","getCurrentActions","currentActions","updateActions","_this74","_t61","getSerializableElement","setFormValue","documentChangedSinceLastRender","updateInputElement","getUndoContext","getLocationContext","getTimeContext","canActivateAttribute","Br","AttachmentEditorController","CompositionController","Controller","EditorController","InputController","Level0InputController","Level2InputController","ToolbarController","_r","SelectionChangeObserver","jr","FileVerificationOperation","ImagePreloadOperation","Wr","_HTMLElement","_super42","Ur","zr","qr","Hr","queryCommandSupported","execCommand","_t62","Jr","Kr","Gr","WeakSet","Yr","attachInternals","$r","labels","inputElement","validity","validationMessage","reportValidity","_this$element","setValidity","valueMissing","customError","Xr","Zr","Qr","_this75","eo","io","_HTMLElement2","_super43","_this76","formAssociated","localName","_t63","_e57","_t64","_e58","nextElementSibling","editorController","_this77","Vr","connectedCallback","disconnectedCallback","VERSION","core","models","views","observers","operations","TrixEditorElement","TrixToolbarElement","Filter","attachmentGalleryFilter","Trix","disableAutoSelect","preventSubmit","emptyMsg","fetch","labelAttr","suggestions","label","performSearch","onSelect","onSelectPath","visit","debounceWaitMs","autocomplete","CommandPaletteElement","keyMappings","registerKeyMappings","combobox","Combobox","onKeydown","onInput","startLoading","stopLoading","initializePalette","details","onToggle","destroyPalette","newValue","parsedNewValue","groups","filterGroup","setActive","activableItems","removeScope","header","palette","anchor","updateScope","targetGroupId","updateScopeFromItem","activeGroup","parsedActiveGroup","mapping","triggerKeys","parsedTriggerKeys","autofocus","activable","groupId","groupTitle","stack","stringifiedObject","CommandPaletteGroupElement","brandedId","titleId","fetchResults","isGroupActive","initializeFetch","groupItems","filterItems","matching","accept","allItems","addScope","CommandPaletteItemElement","DetailsDialogElement","onClick","registerActivationHotkey","summary","hotkey","tinykeys","dialog","checkFormSubmission","interceptTabbing","autofocusableElement","focusFirstElement","focusableElements","movement","currentFocus","currentIndex","nextEventLoop","waitForTransition","transitionElement","CommandPaletteStack","activateNamedGroup","activateDefaultGroup","isConnected","observeMutations","toggleDataEmpty","allHidden","password","results","resultContainer","existingResults","resultsHtml","confirmation","existingMsg","sufficientStrength","strengthResponse","score","sufficientLength","explanation","strength","color","styled","RoomChannel","viewerId","user_id","sendReply","visitorId","visitor_left","roomVisitorChannels","base64Audio","audio","enteredName","userId","RoomSessionChannel","for_viewer","room_started","meeting_mode","participant_connected_to_session","roomSessionChannel","syncState","syncSupervisorState","participant_entered_session","sendCurrentSessionState","therapist_entered_session","activeVisitors","sync_state","therapist_left_session","sync_whiteboard_for","syncWhiteBoardCanvasObjects","sync_resources_for","syncResourceCanvasObjects","toast_errors","whiteboard_status","canvas_object","canvas_object_update","artistId","canvas_clear","canvasId","canvas_clear_object","resource_canvas_lock_active","selectableState","screenshare_status","resource_status","resource_selection","canvas_position","click_beacon_active","click_beacon_coordinates","participant","getters","resource_interact_mode","patient","patients","organization","streamerId","timePassed","showTimer","startTimer","playSound","payload","mutation","visitor_id","supervisor_is_visible","targetUserId","activeSessionId","layout","sharingMedia","demoMode","whiteBoardMode","resourceMode","resource","sharingResourceId","canvas","canvasPositions","interactMode","clickBeaconActive","locked","resourceDrawingLocked","isVisualScheduleSharing","visualScheduleSharing","roomTimer","visibleToParticipants","running","demoingParticipant","supervisors","supervisorIsVisible","supervisorIds","wbCanvas","canvases","_objects","jsonObj","sourcePath","toDatalessObject","resourceCanvas","application","Application","Stimulus","register","FocusController","PopCardController","PricingPageController","LandingPageNavController","ScrollReveal","SideNavController","ToastController","ToggleSectionController","TrayCardController","TrayNavController","CarouselController","SectionAnchorController","count","unread_count","unreadCount","Sifter","MicroPlugin","skip","search","spannode","middlebit","splitText","middleclone","MicroEvent","fct","destObject","IS_MAC","KEY_A","KEY_RETURN","KEY_ESC","KEY_LEFT","KEY_UP","KEY_P","KEY_RIGHT","KEY_DOWN","KEY_N","KEY_BACKSPACE","KEY_DELETE","KEY_SHIFT","KEY_CMD","KEY_CTRL","KEY_TAB","TAG_SELECT","TAG_INPUT","SUPPORTS_VALIDITY_API","isset","hash_key","escape_html","debounce_events","event_args","watchChildEvent","selectionStart","selectionEnd","selection","sel","selLen","moveStart","transferStyles","$from","$to","properties","measureString","Selectize","$testInput","autoGrow","currentWidth","printable","character","triggerHandler","domToString","groupEnd","computedStyle","getPropertyValue","order","tagType","rtl","eventNS","highlightedValue","isBlurring","isDisabled","isRequired","isInvalid","isLocked","isInputHidden","isSetup","isShiftDown","isCmdDown","isCtrlDown","ignoreFocus","ignoreBlur","ignoreHover","hasOptions","currentResults","lastValue","caretPos","loadedSearches","$activeOption","$activeItems","optgroups","userOptions","renderCache","onSearchChange","loadThrottle","sifter","diacritics","registerOption","registerOptionGroup","hideSelected","initializePlugins","setupCallbacks","setupTemplates","setup","$dropdown_content","$dropdown_parent","inputMode","classes_plugins","inputId","$window","$document","wrapperClass","inputClass","dropdownClass","dropdownContentClass","copyClassesToDropdown","names","splitOn","delimiterEscaped","onOptionHover","onOptionSelect","onItemSelect","mousedown","onMouseDown","onKeyDown","keyup","onKeyUp","onKeyPress","resize","blur","onBlur","onFocus","onPaste","revertSettings","after","setValue","refreshState","updateOriginalInput","refreshItems","updatePlaceholder","field_label","field_optgroup","optgroupLabelField","templates","setActiveItem","isFull","pastedText","splitInput","createItem","$next","getAdjacentOption","setActiveOption","$prev","advanceSelection","selectOnTab","deleteSelection","refreshOptions","wasFocused","showInput","openOnFocus","dest","deactivate","setTextboxValue","setCaret","createOnBlur","closeAfterSelect","lastQuery","getOption","loadingClass","addItems","$item","swap","$last","hideInput","$option","scroll","height_menu","height_item","scroll_top","scroll_bottom","scrollDuration","getScoreFunction","getSearchOptions","conjunction","searchConjunction","nesting","calculateScore","triggerDropdown","groups_order","option_html","optgroup","html_children","has_create_option","$active","$active_before","$create","active_before","maxOptions","optgroupField","lockOptgroupOrder","$order","dom","tokens","canCreate","prepend","addPrecedence","optgroupValueField","addOptionGroup","removeOptionGroup","clearOptionGroups","updateOption","$item_new","value_new","index_item","cache_items","cache_options","order_old","replaceWith","removeOption","clearOptions","getElementWithValue","eq","$els","value_next","wasFull","insertAtCaret","persist","caret","output","refreshValidityState","refreshClasses","invalid","isEmptyObject","removeAttr","visibility","option_select","$option_select","$tail","onDelete","valueLength","advanceCaret","$adj","$child","templateName","disabledField","clearCache","createFilter","allowEmptyOption","settings_user","attr_data","field_value","field_disabled","field_optgroup_label","field_optgroup_value","init_textbox","settings_element","data_raw","init_select","optionsMap","readData","addGroup","$optgroup","tag_name","support","sortable","forcePlaceholderSize","helper","headerClass","titleRowClass","labelClass","closeClass","$dropdown_header","equalizeWidth","equalizeHeight","getScrollbarWidth","equalizeSizes","height_max","width_last","width_parent","$optgroups","singleClose","thisRef","html_container","html_element","render_item","multiClose","tokenize","letter","words","escape_regex","DIACRITICS","is_array","token_count","prepareSearch","field_count","scoreValue","token","scoreObject","getattr","sum","getSortFunction","fields_count","multiplier","multipliers","get_field","implicit_score","sort_empty","cmp","option_fields","option_sort","option_sort_empty","fn_sort","fn_score","limit","asciifold","chunk","foreignletters","lookup","foreignletter","Interface","requested","utils","loadPlugin","vArg","mobileSearchActivationBtn","mobileSearchBackBtn","nav","reloadTurbolinks","webpackContext","req","webpackContextResolve","__webpack_require__","createConsumer","getURLDetails","searchParams","qs","sorted","reduce","acc","arrayFormat","skipNulls","baseURL","URLSearchParams","CalendarEventChannel","currentOrgId","organization_id","eventCreateDelegate","addEvent","updateEvent","destroyEvent","eventModifyDelegate","metadata","update_type","updateCurrent","updateThisAndFollowing","updateAll","eventDestroyDelegate","removal_type","destroyCurrent","destroyThisAndFollowing","destroyAll","calendar","CalendarEventsChannel","orgid","acknowledge","messageId","message_id","icons","dis_cal","batchRendering","existingEvent","getEventById","iconsContainer","CalendarResourcesChannel","calendarSettings","mainCalendar","isAdmin","resources","getResourceById","addResource","replaceCamelKeyWithSnake","snake","mungeAllowedParams","allowed","nextUntil","endId","siblings","truncateString","ordinal","brandColors","ambikiBlue","ambikiSalmon","ambikiPink","ambikiTurquoise","ambikiYellow","IDLE","CREATING_SESSION","SYNCING_PATIENTS","READY","ERROR","LOCAL_STORAGE_KEY","Intl","DateTimeFormat","resolvedOptions","timeZone","isFunction","isHexCode","channels","RemoveFields","firstDelete","fieldParent","selectComponents","removeButtons","visibleElements","requiredElements","deleteField","GoalEditorSetup","trix","AttachmentUpload","directUploadUrl","directUploadDidComplete","setUploadProgress","sgid","attachable_sgid","createBlobUrl","signedId","blobUrlTemplate"],"mappings":"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","file":"js/front_pages-ae4bc9909b2ac3ddec05.chunk.js","sourcesContent":["function defineCustomElement(module, identifier) {\n const definition = module.default;\n const { name } = definition;\n if (typeof definition !== 'function') return;\n\n if (!window.customElements.get(identifier)) {\n window[name] = definition;\n window.customElements.define(identifier, definition);\n }\n}\n\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[-]element\\..+?)$/) || [])[1];\n if (logicalName) {\n const array = logicalName.split('/');\n return array[array.length - 1];\n }\n\n return false;\n}\n\nexport default function registerCustomElement(r) {\n r.keys().forEach((key) => {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n defineCustomElement(r(key), identifier);\n }\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(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});","// 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.\nimport axios from 'axios';\nimport debounce from 'lodash.debounce';\nimport StrongPassword from '../helpers/strongPassword';\nimport '../controllers/front_pages_index';\nimport 'lib/tooltip';\n\nimport registerCustomElement from '../custom-elements/helpers/registerCustomElement';\nimport 'bootstrap-icons/font/bootstrap-icons.css';\nimport '../stylesheets/front_pages.scss';\n\nrequire.context('../fonts/', true, /\\.(eot|ttf|woff|woff2|otf)$/i);\n\nrequire('@rails/ujs').start();\nconst Turbolinks = require('turbolinks');\nrequire('../helpers/nested-fields/addFields');\nrequire('../helpers/nested-fields/removeFields');\nconst selectize = require('selectize');\nrequire('@rails/activestorage').start();\nrequire('channels');\nrequire('bootstrap');\nrequire('../lib/autocomplete');\nrequire('helpers/trix-editors');\nrequire('@rails/actiontext');\nrequire('../lib/mobile-search');\n\nTurbolinks.start();\nrequire('../lib/turbolinks-reloader');\n\n// Issue: Turbolinks does not reset scroll position when a new link is clicked\n// Try clicking a link the footer to reproduce.\n// Using window.scrollTo(0, 0) causes the page to jump to top of the current page before loading\n// the new page which is jarring.\n// https://github.com/turbolinks/turbolinks/issues/181\n\nif (document.querySelector('meta[name=\"csrf-token\"]')) {\n axios.defaults.headers.common['X-CSRF-Token'] = document\n .querySelector('meta[name=\"csrf-token\"]')\n .getAttribute('content');\n}\n\n// If using a third party plugin like selectize.js that manipulates the DOM,\n// unhook it from the elements it's attached to before turbolinks caches it.\ndocument.addEventListener('turbolinks:before-cache', () => {\n $('.selectized').each(function () {\n if (this.selectize) {\n this.selectize.destroy();\n }\n });\n});\n\n(function () {\n // Tell the browser not to handle scrolling when restoring via the history or when reloading\n if ('scrollRestoration' in history) history.scrollRestoration = 'manual';\n\n const SCROLL_POSITION = 'scroll-position';\n const PAGE_INVALIDATED = 'page-invalidated';\n\n // Patch the reload method to flag that the following page load originated from the page being invalidated\n Turbolinks.BrowserAdapter.prototype.reload = function () {\n sessionStorage.setItem(PAGE_INVALIDATED, 'true');\n location.reload();\n };\n\n // Persist the scroll position when leaving a page\n addEventListener('beforeunload', () => {\n sessionStorage.setItem(\n SCROLL_POSITION,\n JSON.stringify({\n scrollX,\n scrollY,\n location: location.href,\n })\n );\n });\n\n // When a page is fully loaded:\n // 1. Get the persisted scroll position\n // 2. If the locations match and the load did not originate from a page invalidation, scroll to the persisted position\n // 3. Remove the persisted information\n addEventListener('DOMContentLoaded', (event) => {\n const scrollPosition = JSON.parse(sessionStorage.getItem(SCROLL_POSITION));\n\n if (shouldScroll(scrollPosition)) {\n scrollTo(scrollPosition.scrollX, scrollPosition.scrollY);\n }\n\n sessionStorage.removeItem(SCROLL_POSITION);\n sessionStorage.removeItem(PAGE_INVALIDATED);\n });\n\n function shouldScroll(scrollPosition) {\n return (\n scrollPosition &&\n scrollPosition.location === location.href &&\n !JSON.parse(sessionStorage.getItem(PAGE_INVALIDATED))\n );\n }\n})();\n\ndocument.addEventListener('turbolinks:load', () => {\n registerCustomElement(require.context('../custom-elements', true, /details-dialog-element\\.js$/));\n registerCustomElement(require.context('../custom-elements', true, /command-palette-.*element\\.js$/));\n\n // messages form relies on this to reupdate form when changes are made\n $('.m-select.filterable')\n .selectize({\n create: false,\n sortField: 'id',\n })\n .on('change', (e) => {\n e.target.dispatchEvent(new Event('selectize-change'));\n });\n\n // set up selectize filterables\n $('.select.filterable')\n .selectize({\n create: false,\n sortField: 'id',\n })\n .on('change', (e) => {\n // The below will check for an element that we would like to toggle based on an item selected.\n // The toggable element must have the below class and should have it's id set to the value\n // of the dropdown select item.\n const toggleElement = document.querySelector('.select-toggle-element');\n if (!toggleElement) return;\n\n const valueToMatch = toggleElement.id;\n\n if (valueToMatch === e.target.value) {\n toggleElement.classList.remove('d-none');\n\n if (toggleElement.classList.contains('add-required')) {\n toggleElement.required = true;\n }\n } else {\n toggleElement.classList.add('d-none');\n\n if (toggleElement.classList.contains('add-required')) {\n toggleElement.required = false;\n }\n }\n });\n\n // Setup multi select with selectize().\n $('.multi-select').selectize({\n create: false,\n plugins: ['remove_button'],\n searchField: ['text', 'optgroup'],\n delimiter: ',',\n });\n\n // mount selectize\n $('.select.filterable-text')\n .selectize({\n create: false,\n sortField: 'text',\n })\n .on('change', (e) => {\n // The below will check for an element that we would like to toggle based on an item selected.\n // The toggable element must have the below class and should have it's id set to the value\n // of the dropdown select item.\n const toggleElement = document.querySelector('.select-toggle-element');\n if (!toggleElement) return;\n\n const valueToMatch = toggleElement.id;\n\n if (valueToMatch === e.target.value) {\n toggleElement.classList.remove('d-none');\n\n if (toggleElement.classList.contains('add-required')) {\n toggleElement.required = true;\n }\n } else {\n toggleElement.classList.add('d-none');\n\n if (toggleElement.classList.contains('add-required')) {\n toggleElement.required = false;\n }\n }\n });\n\n if (!selectize.prototype.positionDropdownOriginal) {\n selectize.prototype.positionDropdownOriginal = selectize.prototype.positionDropdown;\n selectize.prototype.positionDropdown = function () {\n if (this.settings.dropdownDirection === 'up') {\n const { $control } = this;\n const offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();\n\n this.$dropdown.css({\n width: $control.outerWidth(),\n top: offset.top - this.$dropdown.outerHeight(),\n left: offset.left,\n });\n this.$dropdown.addClass(`direction-${this.settings.dropdownDirection}`);\n this.$control.addClass(`direction-${this.settings.dropdownDirection}`);\n this.$wrapper.addClass(`direction-${this.settings.dropdownDirection}`);\n } else {\n selectize.prototype.positionDropdownOriginal.apply(this, arguments);\n }\n };\n }\n\n $('.select.filterable-text-up').selectize({\n create: false,\n sortField: 'text',\n dropdownDirection: 'up',\n });\n\n if (document.getElementById('taxonomy-container')) {\n // https://stackoverflow.com/a/59495659/1276696\n window.pageJSLoading = true;\n import('../pages/taxonomy').then((module) => {\n const taxonomy = module.default;\n if (taxonomy !== undefined) taxonomy();\n window.pageJSLoading = false;\n }); // webpack will load this JS async\n }\n\n // Strong Password\n const passwordInput = document.getElementById('password_validator');\n const passConfirmInput = document.getElementById('user_password_confirmation');\n const termsAndPrivacyAgreement = document.getElementById('terms_and_privacy_agreement');\n if (passwordInput && !termsAndPrivacyAgreement) {\n // Non-sign up page (password reset, etc.)\n const sp = new StrongPassword({ container: passwordInput });\n const debouncedQuery = debounce(() => {\n sp.validate(passwordInput.value).then((valid) => {\n passwordInput.form.querySelector('input[type=\"submit\"]').disabled = !valid;\n });\n }, 200);\n passwordInput.addEventListener('keyup', debouncedQuery);\n passwordInput.addEventListener('change', debouncedQuery);\n if (passConfirmInput) {\n const confirmInput = () => {\n const valid = sp.matches(passConfirmInput.value);\n passwordInput.form.querySelector('input[type=\"submit\"]').disabled = !valid;\n };\n passConfirmInput.addEventListener('keyup', confirmInput);\n passConfirmInput.addEventListener('change', confirmInput);\n }\n } else if (passwordInput && termsAndPrivacyAgreement) {\n // Sign-up page only. Check Terms and Privacy checkbox too.\n\n const sp = new StrongPassword({ container: passwordInput });\n const debouncedQuery = debounce(() => {\n sp.validate(passwordInput.value).then((valid) => {\n document.getElementById('sign_up_submit').dataset.passwordValid = valid;\n const signUpButton = document.getElementById('sign_up_submit');\n document.getElementById('sign_up_submit').disabled = !(\n signUpButton.dataset.agreeToTermsAndPrivacy === 'true' &&\n signUpButton.dataset.passwordValid === 'true' &&\n signUpButton.dataset.buttonEnable === 'true'\n );\n });\n }, 200);\n passwordInput.addEventListener('keyup', debouncedQuery);\n passwordInput.addEventListener('change', debouncedQuery);\n if (passConfirmInput) {\n const confirmInput = () => {\n const valid = sp.matches(passConfirmInput.value);\n document.getElementById('sign_up_submit').dataset.passwordValid = valid;\n const signUpButton = document.getElementById('sign_up_submit');\n document.getElementById('sign_up_submit').disabled = !(\n signUpButton.dataset.agreeToTermsAndPrivacy === 'true' &&\n signUpButton.dataset.passwordValid === 'true' &&\n signUpButton.dataset.buttonEnable === 'true'\n );\n };\n passConfirmInput.addEventListener('keyup', confirmInput);\n passConfirmInput.addEventListener('change', confirmInput);\n }\n\n if (termsAndPrivacyAgreement) {\n termsAndPrivacyAgreement.addEventListener('change', (event) => {\n document.getElementById('sign_up_submit').dataset.agreeToTermsAndPrivacy = event.target.checked;\n const signUpButton = document.getElementById('sign_up_submit');\n document.getElementById('sign_up_submit').disabled = !(\n signUpButton.dataset.agreeToTermsAndPrivacy === 'true' &&\n signUpButton.dataset.passwordValid === 'true' &&\n signUpButton.dataset.buttonEnable === 'true'\n );\n });\n }\n }\n\n const expandableImage = [...document.querySelectorAll('.expand-image-r')];\n if (expandableImage.length) {\n window.pageJSLoading = true;\n import('../components/common/index').then((module) => {\n const lightBoxes = module.default;\n if (lightBoxes !== undefined) lightBoxes(expandableImage);\n window.pageJSLoading = false;\n });\n }\n\n const reg = document.getElementById('registration_modal');\n if (reg) {\n window.pageJSLoading = true;\n import('../registration-modal').then((module) => {\n module.default(reg);\n window.pageJSLoading = false;\n });\n }\n\n const sideNavCard = document.getElementById('side-navigation-card');\n if (sideNavCard) {\n window.pageJSLoading = true;\n import('../components/common/SideNavIndex').then((module) => {\n module.default(sideNavCard);\n window.pageJSLoading = false;\n });\n }\n\n // Remove unused parameters from URL in GET request by disabling the form fields\n $('.search-get-form').submit(() => {\n $('input').each(() => {\n if ($(this).val() === '') {\n $(this).attr('disabled', true);\n }\n });\n\n $('select').each(() => {\n if ($(this).val() === '' || $(this).val() === null || $(this).val() === undefined) {\n $(this).attr('disabled', true);\n }\n });\n\n $('button').each(() => {\n $(this).attr('disabled', true);\n });\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\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\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 ? Object.setPrototypeOf.bind() : 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.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Controller } from \"@hotwired/stimulus\";\n\nvar src_default = /*#__PURE__*/function (_Controller) {\n _inherits(src_default, _Controller);\n\n var _super = _createSuper(src_default);\n\n function src_default() {\n _classCallCheck(this, src_default);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(src_default, [{\n key: \"initialize\",\n value: function initialize() {\n this.intersectionObserverCallback = this.intersectionObserverCallback.bind(this);\n }\n }, {\n key: \"connect\",\n value: function connect() {\n var _this = this;\n\n this.class = this.classValue || this.defaultOptions.class || \"in\";\n this.threshold = this.thresholdValue || this.defaultOptions.threshold || 0.1;\n this.rootMargin = this.rootMarginValue || this.defaultOptions.rootMargin || \"0px\";\n this.observer = new IntersectionObserver(this.intersectionObserverCallback, this.intersectionObserverOptions);\n this.itemTargets.forEach(function (item) {\n return _this.observer.observe(item);\n });\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n var _this2 = this;\n\n this.itemTargets.forEach(function (item) {\n return _this2.observer.unobserve(item);\n });\n }\n }, {\n key: \"intersectionObserverCallback\",\n value: function intersectionObserverCallback(entries, observer) {\n var _this3 = this;\n\n entries.forEach(function (entry) {\n if (entry.intersectionRatio > _this3.threshold) {\n var target = entry.target;\n target.classList.add(_this3.class);\n\n if (target.dataset.delay) {\n target.style.transitionDelay = target.dataset.delay;\n }\n\n observer.unobserve(target);\n }\n });\n }\n }, {\n key: \"intersectionObserverOptions\",\n get: function get() {\n return {\n threshold: this.threshold,\n rootMargin: this.rootMargin\n };\n }\n }, {\n key: \"defaultOptions\",\n get: function get() {\n return {};\n }\n }]);\n\n return src_default;\n}(Controller);\n\nsrc_default.targets = [\"item\"];\nsrc_default.values = {\n class: String,\n threshold: Number,\n rootMargin: String\n};\nexport { src_default as default };","/**\n * Checks if `value` is empty.\n * @example\n *\n * isEmpty(null)\n * // => true\n *\n * isEmpty(true)\n * // => true\n *\n * isEmpty(1)\n * // => true\n *\n * isEmpty('abc')\n * // => false\n *\n * isEmpty({ a: 1 })\n * // => false\n *\n * isEmpty([1, 2, 3])\n * // => false\n *\n * isEmpty({})\n * // => true\n *\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default function isEmpty(value: any): boolean {\n if (value === null) return true;\n\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in value) {\n if (Object.hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n\n return true;\n}\n","import { nextFrame } from 'helpers/timing';\nimport ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n static targets = ['focusable'];\n\n async focus() {\n await nextFrame();\n if (this.hasFocusableTarget) {\n this.focusableTarget.focus();\n }\n }\n}\n","import { closeOnEsc } from '../lib/helpers';\nimport ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n static targets = ['popEl', 'trigger'];\n\n initialize() {\n this.show = false;\n this.overlay = document.getElementById('pageOverlay');\n }\n\n connect() {\n this.triggerTarget.addEventListener('click', () => {\n this.toggleElShow();\n });\n closeOnEsc(this.hideEl);\n // Prevent tooltip from getting stuck in visible mode\n $(this.triggerTarget).on('show.bs.tooltip', () => {\n setTimeout(() => {\n if (this.show) $(this.triggerTarget).tooltip('hide');\n }, 1);\n });\n }\n\n hideEl = () => {\n this.show = false;\n this.triggerTarget.classList.remove('active');\n this.popElTarget.classList.add('d-none');\n if (this.overlay) this.overlay.style.display = 'none';\n };\n\n showEl = () => {\n this.show = true;\n this.triggerTarget.classList.add('active');\n this.popElTarget.classList.remove('d-none');\n // Dispatch an event that the pop card is shown\n // Listen (if you need to do something when this opens)\n // for this event like data-action=\"pop-card-shown@window->functionName\"\n const event = new CustomEvent('pop-card-shown');\n window.dispatchEvent(event);\n if (this.overlay) {\n // The delay ensures overlay shows if another tray trigger is clicked\n setTimeout(() => {\n this.overlay.style.display = 'block';\n }, 10);\n }\n };\n\n toggleElShow = () => (this.show ? this.hideEl() : this.showEl());\n\n closeOnOutsideClick(event) {\n if (!this.show) return;\n if (this.element.contains(event.target)) return;\n this.hideEl();\n }\n}\n","import ApplicationController from './application_controller';\n\n/**\n * @example\n *\n * <button type=\"button\" data-controller=\"toast\" data-toast-target-id-value=\"clipboard-toast\" data-action=\"toast#show\">\n * Open toast\n * </button>\n * <div id=\"clipboard-toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" data-delay=\"2000\" class=\"toast toast-success hide\">\n * <div class=\"toast-header\">\n * <i class=\"bi bi-check-circle-fill text-success mr-2\"></i>\n * <p class=\"mr-auto mb-0\">Copied to clipboard!</p>\n * </div>\n * </div>\n *\n * To handle multiple toasts in a single element:\n *\n * <button type=\"button\" data-controller=\"toast\" data-toast-type-value=\"{'click': 'clipboard-toast', 'focus': 'updated-toast'}\" data-action=\"click->toast#show focus->toast#show\">\n * Open toast\n * </button>\n */\n\nexport default class extends ApplicationController {\n static values = { targetId: String, type: Object };\n\n initialize() {\n this.hide = this.hide.bind(this);\n }\n\n disconnect() {\n $(this.toast).off('hidden.bs.toast', this.hide);\n }\n\n targetIdValueChanged(value) {\n const toast = document.getElementById(value);\n $(toast).on('hidden.bs.toast', this.hide);\n }\n\n show(event) {\n this.setToastId(event.type);\n\n $(this.toast).toast('show');\n this.element.setAttribute('aria-describedby', this.toast.id);\n }\n\n hide() {\n this.element.removeAttribute('aria-describedby');\n }\n\n // Private\n\n setToastId(type) {\n if (!this.hasTypeValue || !type) return;\n\n const toastId = this.typeValue[type];\n if (!toastId) return;\n\n this.targetIdValue = toastId;\n }\n\n get toast() {\n return document.getElementById(this.targetIdValue);\n }\n}\n","/* eslint-disable no-return-assign */\nimport ApplicationController from './application_controller';\nimport { closeOnEsc } from '../lib/helpers';\n\nexport default class extends ApplicationController {\n static targets = [\n 'closeBtn',\n 'dangerLink',\n 'returnMainMenu',\n 'subLevelTrayMenu',\n 'subMenuContents',\n 'subMenuTitle',\n 'subTrigger',\n 'topLevelTrayNav',\n 'trayEl',\n 'trigger',\n ];\n\n initialize() {\n this.show = false;\n this.overlay = document.getElementById('pageOverlay');\n this.zIndexBottomEls = [...document.getElementsByClassName('behind__active-tray')];\n }\n\n connect() {\n ['click'].forEach((event) => {\n this.triggerTarget.addEventListener(event, this.toggleElShow);\n });\n closeOnEsc(this.hideEl);\n }\n\n trayElTargetConnected() {\n ['click'].forEach((event) => {\n this.subTriggerTargets.forEach((subTrigger) => {\n subTrigger.addEventListener(event, () => {\n this.showSubLevel(subTrigger);\n });\n });\n if (this.hasReturnMainMenuTarget) this.returnMainMenuTarget.addEventListener(event, this.returnMainMenu);\n if (this.hasCloseBtnTarget) this.closeBtnTarget.addEventListener(event, this.hideEl);\n\n // Hide the sublevel menu after the click events added for the button\n if (this.hasSubLevelTrayMenuTarget) this.subLevelTrayMenuTarget.classList.add('d-none');\n });\n }\n\n hideEl = () => {\n this.show = false;\n document.body.style.overflow = 'inherit';\n this.zIndexBottomEls.forEach((el) => (el.style.zIndex = 'inherit'));\n this.trayElTarget.classList.add('d-none');\n if (this.overlay) this.overlay.style.display = 'none';\n };\n\n returnMainMenu = () => {\n // If a link could lead to an undesired result and is going to be\n // where the user's mouse is after returning to the main nav, tmp disable it\n if (this.hasDangerLinkTarget) {\n this.dangerLinkTargets.forEach((link) => {\n link.classList.add('disabled');\n setTimeout(() => {\n link.classList.remove('disabled');\n }, 1500);\n });\n }\n this.subLevelTrayMenuTarget.classList.add('d-none');\n this.topLevelTrayNavTarget.classList.remove('d-none');\n };\n\n showEl = () => {\n this.show = true;\n document.body.style.overflow = 'hidden';\n this.zIndexBottomEls.forEach((el) => (el.style.zIndex = -1));\n if (this.overlay) {\n // The delay ensures overlay shows if another tray trigger is clicked\n setTimeout(() => {\n this.overlay.style.display = 'block';\n }, 10);\n }\n this.trayElTarget.classList.remove('d-none');\n };\n\n showSubLevel = (subTrigger) => {\n let { menu } = subTrigger.dataset;\n const { target } = subTrigger.dataset;\n menu = JSON.parse(menu);\n this.subMenuContentsTarget.innerHTML = ''; // clear out prev content\n\n const subMenu = document.getElementById(target);\n const subMenuContents = subMenu.childNodes;\n subMenuContents.forEach((content) => {\n const copy = content.cloneNode(true);\n this.subMenuContentsTarget.appendChild(copy);\n });\n\n if (menu.topLevel) {\n this.subMenuTitleTarget.innerHTML = `${menu.title} | <small>${menu.topLevel}</small>`;\n } else {\n this.subMenuTitleTarget.innerHTML = menu.title;\n }\n\n // this.subMenuContentsTarget.appendChild(subMenuContents);\n\n this.subLevelTrayMenuTarget.classList.remove('d-none');\n this.topLevelTrayNavTarget.classList.add('d-none');\n };\n\n toggleElShow = () => (this.show ? this.hideEl() : this.showEl());\n\n closeOnOutsideClick(event) {\n if (!this.show) return;\n if (this.element.contains(event.target)) return;\n this.hideEl();\n }\n}\n","import ApplicationController from './application_controller';\n\nconst COMPACT_ATTR_NAME = 'data-sidebar-compact';\n\nexport default class extends ApplicationController {\n static classes = ['toggle'];\n\n connect() {\n if (this.isTurbolinksPreview) {\n this.renderFromCache();\n }\n }\n\n disconnect() {\n this.renderFromCache();\n }\n\n toggleNavSize() {\n this.element.classList.toggle(this.toggleClass);\n this.sidebarCache?.toggleAttribute(COMPACT_ATTR_NAME, !this.isExpanded);\n }\n\n // Private\n\n renderFromCache() {\n if (!this.sidebarCache) return;\n this.element.classList.toggle(this.toggleClass, this.sidebarCache.hasAttribute(COMPACT_ATTR_NAME));\n }\n\n get isExpanded() {\n return !this.element.classList.contains(this.toggleClass);\n }\n\n // eslint-disable-next-line class-methods-use-this\n get sidebarCache() {\n return document.getElementById('turbolinks-sidebar-cache');\n }\n}\n","// Copy the comment below into your developer console to see the JavaScript logs from the application.\n// localStorage.setItem('logLevel', JSON.stringify(['all'])); - To get all messages. Select from options below.\n// localStorage.setItem('logLevel', JSON.stringify(['all', 'log', 'debug', 'warn', 'error']));\n\nconst logLevel = localStorage.getItem('logLevel') ? JSON.parse(localStorage.getItem('logLevel')) : [];\n\nconst log = {\n style: 'color: #FFFFFF; padding: 2px 5px;',\n info: (msg, ...args) => (logLevel.includes('log') || logLevel.includes('all')) && console.log(`%c${msg}`, `background: #5DADE2; ${log.style}`, ...args),\n warn: (msg, ...args) => console.warn(`%c${msg}`, `background: #FF8C00; ${log.style}`, ...args),\n error: (msg, ...args) => console.error(`%c${msg}`, `background: #FF0000; ${log.style}`, ...args),\n debug: (...args) => (logLevel.includes('debug') || logLevel.includes('all')) && console.log(...args),\n};\n\nconst likeEmoji = String.fromCodePoint(0x1F44D);\nlog.info('Info level logging enabled!', likeEmoji);\nlog.debug('Debug level logging enabled!', likeEmoji);\n\nexport default log;\n","/* eslint-disable no-underscore-dangle */\nimport axios from 'axios';\nimport { constructURL } from 'helpers/url';\nimport consumer from './consumer';\nimport log from '../lib/logger';\nimport AsyncLocalStorage from '../lib/async-localstorage';\nimport * as c from '../rooms/components/seamless-swap/constants';\n\nexport default class RoomVisitorChannel {\n constructor(options = {}) {\n this.roomId = options.roomId;\n this.line = options.line; // Pass in object with participant IDs\n this.store = options.store; // Vuex store\n this.channel = null;\n this.isResolved = null;\n }\n\n init = () =>\n new Promise((resolve) => {\n this.isResolved = resolve;\n this.createSubscription();\n });\n\n createSubscription = () => {\n const { line, roomId, store, isResolved } = this;\n\n this.channel = consumer.subscriptions.create(\n {\n channel: 'RoomVisitorChannel',\n room: `${roomId}_${line.value}`,\n },\n {\n connected() {\n isResolved();\n // Called when the subscription is ready for use on the server\n log.info('Room visitor channel connected');\n log.debug('Room visitor channel', line);\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n },\n\n async received(data) {\n // Called when there's incoming data on the websocket for this channel\n // Create a subscription to this new channel\n log.debug('Received visitor channel message', data);\n if (data.type === 'message') {\n log.debug('Visitor channel message', data);\n const publishedTo = `${roomId}_${line.value}`;\n if (store) {\n store.commit('frontDeskChat/storeChatMessage', {\n line: publishedTo,\n id: data.id,\n message: data.message,\n sentBy: data.sent_by,\n });\n store.commit(\n 'updateVisitor',\n {\n requestedHelp: false,\n },\n { root: true }\n );\n }\n } else if (data.type === 'confirm_patient_id') {\n // Ignore action of room owner\n if (store.state.ownerId === store.state.visitor.id) return;\n\n await axios.post('/api/v2/teletherapy/confirm-p', { value: data.value });\n // reload so we can reset all subscriptions and properly show patient\n window.location.reload();\n } else if (data.type === 'assign_event') {\n if (store.state.ownerId === store.state.visitor.id) return;\n\n // `recurrenceId` should be in UTC to handle DST\n await axios.post('/api/v2/teletherapy/confirm-a', { value: data.value, start_time: data.recurrenceId });\n const url = constructURL(window.location.href, { recurrence_id: data.recurrenceId, t: data.id });\n window.location.href = url;\n } else if (data.type === 'assign_appointment') {\n // Ignore action of room owner\n if (store.state.ownerId === store.state.visitor.id) return;\n await axios.post('/api/v2/teletherapy/confirm-a', { value: data.value });\n // reload so we can reset all subscriptions and properly show patient\n window.location.reload();\n } else if (data.type === 'seamless_swap') {\n if (store.state.ownerId === store.state.visitor.id) return;\n\n const { eventId, patientId, eventStartTime } = data;\n if (!eventId || !patientId) {\n // Show session rating modal for non-continuing patients\n store.commit('layout/setCallRatingVisibility', true);\n return;\n }\n\n try {\n await axios.post('/api/v2/teletherapy/confirm-a', { value: eventId, start_time: eventStartTime });\n const { data: eventPatient } = await axios.get(`/api/v2/events/${eventId}/patients/${patientId}`, {\n params: {\n recurrence_id: eventStartTime,\n },\n });\n\n // localStorage item to be used in WaitingArea `sessionReadyToJoin` watcher\n await new AsyncLocalStorage().setItem(c.LOCAL_STORAGE_KEY, 'true');\n const url = constructURL(window.location.href, {\n recurrence_id: eventPatient.recurrenceId,\n t: eventPatient.id,\n });\n window.location.href = url;\n } catch (error) {\n window.location.href = '/';\n }\n }\n },\n }\n );\n };\n}\n","const speech = \"babd3761-8f1a-444f-8a5f-0274356dd1ea\";\nconst occupational = \"648dddb8-aff6-4ddd-a366-1ad662d015fb\";\nconst physical = \"5426ba7e-4c68-4245-8486-49cb236481e1\";\nconst feeding = \"9361c1a2-4a5d-4257-8bda-c41c15207364\";\nconst STUDENT = \"95ff432d-b431-46f3-bbf7-eae2ac43be0b\";\nconst CF_SLP = \"3c27a747-67bf-4d28-8f47-4098e363f79e\";\nconst SLP = \"5f2af811-73f4-42d1-abad-382e08fdad5b\";\nconst CCC_SLP = \"6fe1fec2-6290-4e78-8734-21f3bf483d64\";\nconst SLPA = \"10035165-37ae-4d7c-b660-ed5dcb62853b\";\nconst OTA = \"bde804e1-4781-4b01-8eb1-b8ba49fd3a67\";\nconst COTA = \"84f30885-7e8d-4ea1-92e4-cf353c0b8aad\";\nconst OTR_L = \"b0617ed7-f834-40d6-a669-c86c3416463d\";\nconst PTA = \"c7400581-49a0-4e92-9f70-0231f5577f13\";\nconst CPTA = \"2340e5cf-8ef8-481e-96a1-da0421772ec7\";\nconst PT = \"91cfc361-083a-4c45-a56f-a842c5b75118\";\n\nconst disciplines = [\n \"babd3761-8f1a-444f-8a5f-0274356dd1ea\",\n \"648dddb8-aff6-4ddd-a366-1ad662d015fb\",\n \"5426ba7e-4c68-4245-8486-49cb236481e1\",\n \"9361c1a2-4a5d-4257-8bda-c41c15207364\"\n];\n\nconst revealDisciplinesList = () => {\n document.querySelector('#users_disciplines_div').classList.remove('d-none');\n};\n\nconst hideDisciplinesList = () => {\n document.querySelector('#users_disciplines_div').classList.add('d-none');\n};\n\nconst resetDiscipline = (id) => {\n document.querySelector(`#user_discipline_ids_${id}`).checked = false;\n document.querySelector(`#user_discipline_ids_${id}`).closest('.custom-checkbox').classList.add('d-none');\n};\n\nconst resetAllDisciplines = () => {\n for (var i = 0; i < disciplines.length; i++) {\n resetDiscipline(disciplines[i]);\n }\n};\n\nconst currentlyChecked = () => {\n const checked = [];\n for (var i = 0; i < disciplines.length; i++) {\n var id = disciplines[i];\n if (document.querySelector(`#user_discipline_ids_${id}:checked`) !== null) {\n checked.push(id);\n }\n }\n return checked;\n};\n\nconst showCheckbox = (id) => {\n document.querySelector(`#user_discipline_ids_${id}`).closest('.custom-checkbox').classList.remove('d-none');\n};\n\nconst checkCheckbox = (id) => {\n document.querySelector(`#user_discipline_ids_${id}`).checked = true;\n};\n\nconst computeDisciplines = (credentialIds, reset = true) => {\n revealDisciplinesList();\n const checked = currentlyChecked();\n\n if (reset) {\n resetAllDisciplines();\n }\n\n if (credentialIds.includes(STUDENT)) {\n showCheckbox(speech);\n if (checked.includes(speech)) { checkCheckbox(speech); }\n showCheckbox(occupational);\n if (checked.includes(occupational)) { checkCheckbox(occupational); }\n showCheckbox(physical);\n if (checked.includes(physical)) { checkCheckbox(physical); }\n showCheckbox(feeding);\n if (checked.includes(feeding)) { checkCheckbox(feeding); }\n }\n\n if (credentialIds.includes(CF_SLP) || credentialIds.includes(CCC_SLP) || credentialIds.includes(SLPA)) {\n showCheckbox(speech);\n if (checked.includes(speech)) { checkCheckbox(speech); }\n showCheckbox(feeding);\n if (checked.includes(feeding)) { checkCheckbox(feeding); }\n }\n\n if (credentialIds.includes(OTR_L) || credentialIds.includes(COTA) || credentialIds.includes(OTA)) {\n // As we don't want to give them the ability to uncheck the discipline\n // and since there will be only one checkbox option, there is no need to\n // so this to the user\n // showCheckbox(occupational);\n checkCheckbox(occupational);\n hideDisciplinesList();\n }\n\n if (credentialIds.includes(PT) || credentialIds.includes(PTA) || credentialIds.includes(CPTA)) {\n // As we don't want to give them the ability to uncheck the discipline\n // and since there will be only one checkbox option, there is no need to\n // so this to the user\n // showCheckbox(physical);\n checkCheckbox(physical);\n hideDisciplinesList();\n }\n};\n\nexport default computeDisciplines;\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/*!\n * Vue.js v2.6.14\n * (c) 2014-2021 Evan You\n * Released under the MIT License.\n */\n\n/* */\nvar emptyObject = Object.freeze({}); // These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\n\nfunction isUndef(v) {\n return v === undefined || v === null;\n}\n\nfunction isDef(v) {\n return v !== undefined && v !== null;\n}\n\nfunction isTrue(v) {\n return v === true;\n}\n\nfunction isFalse(v) {\n return v === false;\n}\n/**\n * Check if value is primitive.\n */\n\n\nfunction isPrimitive(value) {\n return typeof value === 'string' || typeof value === 'number' || // $flow-disable-line\n _typeof(value) === 'symbol' || typeof value === 'boolean';\n}\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\n\n\nfunction isObject(obj) {\n return obj !== null && _typeof(obj) === 'object';\n}\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\n\n\nvar _toString = Object.prototype.toString;\n\nfunction toRawType(value) {\n return _toString.call(value).slice(8, -1);\n}\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\n\n\nfunction isPlainObject(obj) {\n return _toString.call(obj) === '[object Object]';\n}\n\nfunction isRegExp(v) {\n return _toString.call(v) === '[object RegExp]';\n}\n/**\n * Check if val is a valid array index.\n */\n\n\nfunction isValidArrayIndex(val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val);\n}\n\nfunction isPromise(val) {\n return isDef(val) && typeof val.then === 'function' && typeof val.catch === 'function';\n}\n/**\n * Convert a value to a string that is actually rendered.\n */\n\n\nfunction toString(val) {\n return val == null ? '' : Array.isArray(val) || isPlainObject(val) && val.toString === _toString ? JSON.stringify(val, null, 2) : String(val);\n}\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\n\n\nfunction toNumber(val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n;\n}\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\n\n\nfunction makeMap(str, expectsLowerCase) {\n var map = Object.create(null);\n var list = str.split(',');\n\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n\n return expectsLowerCase ? function (val) {\n return map[val.toLowerCase()];\n } : function (val) {\n return map[val];\n };\n}\n/**\n * Check if a tag is a built-in tag.\n */\n\n\nvar isBuiltInTag = makeMap('slot,component', true);\n/**\n * Check if an attribute is a reserved attribute.\n */\n\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n/**\n * Remove an item from an array.\n */\n\nfunction remove(arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n\n if (index > -1) {\n return arr.splice(index, 1);\n }\n }\n}\n/**\n * Check whether an object has the property.\n */\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/**\n * Create a cached version of a pure function.\n */\n\n\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n/**\n * Camelize a hyphen-delimited string.\n */\n\n\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) {\n return c ? c.toUpperCase() : '';\n });\n});\n/**\n * Capitalize a string.\n */\n\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\n/**\n * Hyphenate a camelCase string.\n */\n\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\n\nfunction polyfillBind(fn, ctx) {\n function boundFn(a) {\n var l = arguments.length;\n return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx);\n }\n\n boundFn._length = fn.length;\n return boundFn;\n}\n\nfunction nativeBind(fn, ctx) {\n return fn.bind(ctx);\n}\n\nvar bind = Function.prototype.bind ? nativeBind : polyfillBind;\n/**\n * Convert an Array-like object to a real Array.\n */\n\nfunction toArray(list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n\n while (i--) {\n ret[i] = list[i + start];\n }\n\n return ret;\n}\n/**\n * Mix properties into target object.\n */\n\n\nfunction extend(to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n\n return to;\n}\n/**\n * Merge an Array of Objects into a single Object.\n */\n\n\nfunction toObject(arr) {\n var res = {};\n\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n\n return res;\n}\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\n\n\nfunction noop(a, b, c) {}\n/**\n * Always return false.\n */\n\n\nvar no = function no(a, b, c) {\n return false;\n};\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\n\n\nvar identity = function identity(_) {\n return _;\n};\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\n\n\nfunction looseEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i]);\n });\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key]);\n });\n } else {\n /* istanbul ignore next */\n return false;\n }\n } catch (e) {\n /* istanbul ignore next */\n return false;\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b);\n } else {\n return false;\n }\n}\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\n\n\nfunction looseIndexOf(arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) {\n return i;\n }\n }\n\n return -1;\n}\n/**\n * Ensure a function is called only once.\n */\n\n\nfunction once(fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n };\n}\n\nvar SSR_ATTR = 'data-server-rendered';\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\nvar LIFECYCLE_HOOKS = ['beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'beforeDestroy', 'destroyed', 'activated', 'deactivated', 'errorCaptured', 'serverPrefetch'];\n/* */\n\nvar config = {\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n};\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\n\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n/**\n * Check if a string starts with $ or _\n */\n\nfunction isReserved(str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F;\n}\n/**\n * Define a property.\n */\n\n\nfunction def(obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n/**\n * Parse simple path.\n */\n\n\nvar bailRE = new RegExp(\"[^\" + unicodeRegExp.source + \".$_\\\\d]\");\n\nfunction parsePath(path) {\n if (bailRE.test(path)) {\n return;\n }\n\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) {\n return;\n }\n\n obj = obj[segments[i]];\n }\n\n return obj;\n };\n}\n/* */\n// can we use __proto__?\n\n\nvar hasProto = ('__proto__' in {}); // Browser environment sniffing\n\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = UA && UA.indexOf('android') > 0 || weexPlatform === 'android';\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA) || weexPlatform === 'ios';\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/); // Firefox has a \"watch\" function on Object.prototype...\n\nvar nativeWatch = {}.watch;\nvar supportsPassive = false;\n\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', {\n get: function get() {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n }); // https://github.com/facebook/flow/issues/285\n\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n} // this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\n\n\nvar _isServer;\n\nvar isServerRendering = function isServerRendering() {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n\n return _isServer;\n}; // detect devtools\n\n\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n/* istanbul ignore next */\n\nfunction isNative(Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\n}\n\nvar hasSymbol = typeof Symbol !== 'undefined' && isNative(Symbol) && typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */\n// $flow-disable-line\n\n\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/function () {\n function Set() {\n this.set = Object.create(null);\n }\n\n Set.prototype.has = function has(key) {\n return this.set[key] === true;\n };\n\n Set.prototype.add = function add(key) {\n this.set[key] = true;\n };\n\n Set.prototype.clear = function clear() {\n this.set = Object.create(null);\n };\n\n return Set;\n }();\n}\n/* */\n\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = noop; // work around flow check\n\nvar formatComponentName = noop;\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n\n var classify = function classify(str) {\n return str.replace(classifyRE, function (c) {\n return c.toUpperCase();\n }).replace(/[-_]/g, '');\n };\n\n warn = function warn(msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && !config.silent) {\n console.error(\"[Vue warn]: \" + msg + trace);\n }\n };\n\n tip = function tip(msg, vm) {\n if (hasConsole && !config.silent) {\n console.warn(\"[Vue tip]: \" + msg + (vm ? generateComponentTrace(vm) : ''));\n }\n };\n\n formatComponentName = function formatComponentName(vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>';\n }\n\n var options = typeof vm === 'function' && vm.cid != null ? vm.options : vm._isVue ? vm.$options || vm.constructor.options : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (name ? \"<\" + classify(name) + \">\" : \"<Anonymous>\") + (file && includeFile !== false ? \" at \" + file : '');\n };\n\n var repeat = function repeat(str, n) {\n var res = '';\n\n while (n) {\n if (n % 2 === 1) {\n res += str;\n }\n\n if (n > 1) {\n str += str;\n }\n\n n >>= 1;\n }\n\n return res;\n };\n\n generateComponentTrace = function generateComponentTrace(vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue;\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n\n tree.push(vm);\n vm = vm.$parent;\n }\n\n return '\\n\\nfound in\\n\\n' + tree.map(function (vm, i) {\n return \"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm) ? formatComponentName(vm[0]) + \"... (\" + vm[1] + \" recursive calls)\" : formatComponentName(vm));\n }).join('\\n');\n } else {\n return \"\\n\\n(found in \" + formatComponentName(vm) + \")\";\n }\n };\n}\n/* */\n\n\nvar uid = 0;\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\n\nvar Dep = function Dep() {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub(sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub(sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend() {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify() {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) {\n return a.id - b.id;\n });\n }\n\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n}; // The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\n\n\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget(target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget() {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n/* */\n\n\nvar VNode = function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = {\n child: {\n configurable: true\n }\n}; // DEPRECATED: alias for componentInstance for backwards compat.\n\n/* istanbul ignore next */\n\nprototypeAccessors.child.get = function () {\n return this.componentInstance;\n};\n\nObject.defineProperties(VNode.prototype, prototypeAccessors);\n\nvar createEmptyVNode = function createEmptyVNode(text) {\n if (text === void 0) text = '';\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node;\n};\n\nfunction createTextVNode(val) {\n return new VNode(undefined, undefined, undefined, String(val));\n} // optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\n\n\nfunction cloneVNode(vnode) {\n var cloned = new VNode(vnode.tag, vnode.data, // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned;\n}\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\nvar methodsToPatch = ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'];\n/**\n * Intercept mutating methods and emit events\n */\n\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break;\n\n case 'splice':\n inserted = args.slice(2);\n break;\n }\n\n if (inserted) {\n ob.observeArray(inserted);\n } // notify change\n\n\n ob.dep.notify();\n return result;\n });\n});\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\n\nvar shouldObserve = true;\n\nfunction toggleObserving(value) {\n shouldObserve = value;\n}\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\n\n\nvar Observer = function Observer(value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\n\n\nObserver.prototype.walk = function walk(obj) {\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n/**\n * Observe a list of Array items.\n */\n\n\nObserver.prototype.observeArray = function observeArray(items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n}; // helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\n\n\nfunction protoAugment(target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n\n/* istanbul ignore next */\n\n\nfunction copyAugment(target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\n\n\nfunction observe(value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return;\n }\n\n var ob;\n\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (shouldObserve && !isServerRendering() && (Array.isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue) {\n ob = new Observer(value);\n }\n\n if (asRootData && ob) {\n ob.vmCount++;\n }\n\n return ob;\n}\n/**\n * Define a reactive property on an Object.\n */\n\n\nfunction defineReactive$$1(obj, key, val, customSetter, shallow) {\n var dep = new Dep();\n var property = Object.getOwnPropertyDescriptor(obj, key);\n\n if (property && property.configurable === false) {\n return;\n } // cater for pre-defined getter/setters\n\n\n var getter = property && property.get;\n var setter = property && property.set;\n\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter() {\n var value = getter ? getter.call(obj) : val;\n\n if (Dep.target) {\n dep.depend();\n\n if (childOb) {\n childOb.dep.depend();\n\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n\n return value;\n },\n set: function reactiveSetter(newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n\n if (newVal === value || newVal !== newVal && value !== value) {\n return;\n }\n /* eslint-enable no-self-compare */\n\n\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n } // #7981: for accessor properties without setter\n\n\n if (getter && !setter) {\n return;\n }\n\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\n\n\nfunction set(target, key, val) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot set reactive property on undefined, null, or primitive value: \" + target);\n }\n\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val;\n }\n\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val;\n }\n\n var ob = target.__ob__;\n\n if (target._isVue || ob && ob.vmCount) {\n process.env.NODE_ENV !== 'production' && warn('Avoid adding reactive properties to a Vue instance or its root $data ' + 'at runtime - declare it upfront in the data option.');\n return val;\n }\n\n if (!ob) {\n target[key] = val;\n return val;\n }\n\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val;\n}\n/**\n * Delete a property and trigger change if necessary.\n */\n\n\nfunction del(target, key) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot delete reactive property on undefined, null, or primitive value: \" + target);\n }\n\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return;\n }\n\n var ob = target.__ob__;\n\n if (target._isVue || ob && ob.vmCount) {\n process.env.NODE_ENV !== 'production' && warn('Avoid deleting properties on a Vue instance or its root $data ' + '- just set it to null.');\n return;\n }\n\n if (!hasOwn(target, key)) {\n return;\n }\n\n delete target[key];\n\n if (!ob) {\n return;\n }\n\n ob.dep.notify();\n}\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\n\n\nfunction dependArray(value) {\n for (var e = void 0, i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\n\n\nvar strats = config.optionMergeStrategies;\n/**\n * Options with restrictions\n */\n\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\"option \\\"\" + key + \"\\\" can only be used during instance \" + 'creation with the `new` keyword.');\n }\n\n return defaultStrat(parent, child);\n };\n}\n/**\n * Helper that recursively merges two data objects together.\n */\n\n\nfunction mergeData(to, from) {\n if (!from) {\n return to;\n }\n\n var key, toVal, fromVal;\n var keys = hasSymbol ? Reflect.ownKeys(from) : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i]; // in case the object is already observed...\n\n if (key === '__ob__') {\n continue;\n }\n\n toVal = to[key];\n fromVal = from[key];\n\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (toVal !== fromVal && isPlainObject(toVal) && isPlainObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n\n return to;\n}\n/**\n * Data\n */\n\n\nfunction mergeDataOrFn(parentVal, childVal, vm) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal;\n }\n\n if (!parentVal) {\n return childVal;\n } // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n\n\n return function mergedDataFn() {\n return mergeData(typeof childVal === 'function' ? childVal.call(this, this) : childVal, typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal);\n };\n } else {\n return function mergedInstanceDataFn() {\n // instance merge\n var instanceData = typeof childVal === 'function' ? childVal.call(vm, vm) : childVal;\n var defaultData = typeof parentVal === 'function' ? parentVal.call(vm, vm) : parentVal;\n\n if (instanceData) {\n return mergeData(instanceData, defaultData);\n } else {\n return defaultData;\n }\n };\n }\n}\n\nstrats.data = function (parentVal, childVal, vm) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn('The \"data\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n return parentVal;\n }\n\n return mergeDataOrFn(parentVal, childVal);\n }\n\n return mergeDataOrFn(parentVal, childVal, vm);\n};\n/**\n * Hooks and props are merged as arrays.\n */\n\n\nfunction mergeHook(parentVal, childVal) {\n var res = childVal ? parentVal ? parentVal.concat(childVal) : Array.isArray(childVal) ? childVal : [childVal] : parentVal;\n return res ? dedupeHooks(res) : res;\n}\n\nfunction dedupeHooks(hooks) {\n var res = [];\n\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n\n return res;\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\n\nfunction mergeAssets(parentVal, childVal, vm, key) {\n var res = Object.create(parentVal || null);\n\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal);\n } else {\n return res;\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\n\nstrats.watch = function (parentVal, childVal, vm, key) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) {\n parentVal = undefined;\n }\n\n if (childVal === nativeWatch) {\n childVal = undefined;\n }\n /* istanbul ignore if */\n\n\n if (!childVal) {\n return Object.create(parentVal || null);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n var ret = {};\n extend(ret, parentVal);\n\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n\n ret[key$1] = parent ? parent.concat(child) : Array.isArray(child) ? child : [child];\n }\n\n return ret;\n};\n/**\n * Other object hashes.\n */\n\n\nstrats.props = strats.methods = strats.inject = strats.computed = function (parentVal, childVal, vm, key) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n var ret = Object.create(null);\n extend(ret, parentVal);\n\n if (childVal) {\n extend(ret, childVal);\n }\n\n return ret;\n};\n\nstrats.provide = mergeDataOrFn;\n/**\n * Default strategy.\n */\n\nvar defaultStrat = function defaultStrat(parentVal, childVal) {\n return childVal === undefined ? parentVal : childVal;\n};\n/**\n * Validate component names\n */\n\n\nfunction checkComponents(options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName(name) {\n if (!new RegExp(\"^[a-zA-Z][\\\\-\\\\.0-9_\" + unicodeRegExp.source + \"]*$\").test(name)) {\n warn('Invalid component name: \"' + name + '\". Component names ' + 'should conform to valid custom element name in html5 specification.');\n }\n\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + name);\n }\n}\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\n\n\nfunction normalizeProps(options, vm) {\n var props = options.props;\n\n if (!props) {\n return;\n }\n\n var res = {};\n var i, val, name;\n\n if (Array.isArray(props)) {\n i = props.length;\n\n while (i--) {\n val = props[i];\n\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = {\n type: null\n };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val) ? val : {\n type: val\n };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\"Invalid value for option \\\"props\\\": expected an Array or an Object, \" + \"but got \" + toRawType(props) + \".\", vm);\n }\n\n options.props = res;\n}\n/**\n * Normalize all injections into Object-based format\n */\n\n\nfunction normalizeInject(options, vm) {\n var inject = options.inject;\n\n if (!inject) {\n return;\n }\n\n var normalized = options.inject = {};\n\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = {\n from: inject[i]\n };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val) ? extend({\n from: key\n }, val) : {\n from: val\n };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" + \"but got \" + toRawType(inject) + \".\", vm);\n }\n}\n/**\n * Normalize raw function directives into object format.\n */\n\n\nfunction normalizeDirectives(options) {\n var dirs = options.directives;\n\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n\n if (typeof def$$1 === 'function') {\n dirs[key] = {\n bind: def$$1,\n update: def$$1\n };\n }\n }\n }\n}\n\nfunction assertObjectType(name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" + \"but got \" + toRawType(value) + \".\", vm);\n }\n}\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\n\n\nfunction mergeOptions(parent, child, vm) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child); // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n\n for (key in parent) {\n mergeField(key);\n }\n\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n\n function mergeField(key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n\n return options;\n}\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\n\n\nfunction resolveAsset(options, type, id, warnMissing) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return;\n }\n\n var assets = options[type]; // check local registration variations first\n\n if (hasOwn(assets, id)) {\n return assets[id];\n }\n\n var camelizedId = camelize(id);\n\n if (hasOwn(assets, camelizedId)) {\n return assets[camelizedId];\n }\n\n var PascalCaseId = capitalize(camelizedId);\n\n if (hasOwn(assets, PascalCaseId)) {\n return assets[PascalCaseId];\n } // fallback to prototype chain\n\n\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id, options);\n }\n\n return res;\n}\n/* */\n\n\nfunction validateProp(key, propOptions, propsData, vm) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key]; // boolean casting\n\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n } // check default value\n\n\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key); // since the default value is a fresh copy,\n // make sure to observe it.\n\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n\n if (process.env.NODE_ENV !== 'production' && // skip validation for weex recycle-list child component props\n !false) {\n assertProp(prop, key, value, vm, absent);\n }\n\n return value;\n}\n/**\n * Get the default value of a prop.\n */\n\n\nfunction getPropDefaultValue(vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined;\n }\n\n var def = prop.default; // warn against non-factory defaults for Object & Array\n\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn('Invalid default value for prop \"' + key + '\": ' + 'Props with type Object/Array must use a factory function ' + 'to return the default value.', vm);\n } // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n\n\n if (vm && vm.$options.propsData && vm.$options.propsData[key] === undefined && vm._props[key] !== undefined) {\n return vm._props[key];\n } // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n\n\n return typeof def === 'function' && getType(prop.type) !== 'Function' ? def.call(vm) : def;\n}\n/**\n * Assert whether a prop is valid.\n */\n\n\nfunction assertProp(prop, name, value, vm, absent) {\n if (prop.required && absent) {\n warn('Missing required prop: \"' + name + '\"', vm);\n return;\n }\n\n if (value == null && !prop.required) {\n return;\n }\n\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i], vm);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n var haveExpectedTypes = expectedTypes.some(function (t) {\n return t;\n });\n\n if (!valid && haveExpectedTypes) {\n warn(getInvalidTypeMessage(name, value, expectedTypes), vm);\n return;\n }\n\n var validator = prop.validator;\n\n if (validator) {\n if (!validator(value)) {\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".', vm);\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;\n\nfunction assertType(value, type, vm) {\n var valid;\n var expectedType = getType(type);\n\n if (simpleCheckRE.test(expectedType)) {\n var t = _typeof(value);\n\n valid = t === expectedType.toLowerCase(); // for primitive wrapper objects\n\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n try {\n valid = value instanceof type;\n } catch (e) {\n warn('Invalid prop type: \"' + String(type) + '\" is not a constructor', vm);\n valid = false;\n }\n }\n\n return {\n valid: valid,\n expectedType: expectedType\n };\n}\n\nvar functionTypeCheckRE = /^\\s*function (\\w+)/;\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\n\nfunction getType(fn) {\n var match = fn && fn.toString().match(functionTypeCheckRE);\n return match ? match[1] : '';\n}\n\nfunction isSameType(a, b) {\n return getType(a) === getType(b);\n}\n\nfunction getTypeIndex(type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1;\n }\n\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" + \" Expected \" + expectedTypes.map(capitalize).join(', ');\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value); // check if we need to specify expected value\n\n if (expectedTypes.length === 1 && isExplicable(expectedType) && isExplicable(_typeof(value)) && !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + styleValue(value, expectedType);\n }\n\n message += \", got \" + receivedType + \" \"; // check if we need to specify received value\n\n if (isExplicable(receivedType)) {\n message += \"with value \" + styleValue(value, receivedType) + \".\";\n }\n\n return message;\n}\n\nfunction styleValue(value, type) {\n if (type === 'String') {\n return \"\\\"\" + value + \"\\\"\";\n } else if (type === 'Number') {\n return \"\" + Number(value);\n } else {\n return \"\" + value;\n }\n}\n\nvar EXPLICABLE_TYPES = ['string', 'number', 'boolean'];\n\nfunction isExplicable(value) {\n return EXPLICABLE_TYPES.some(function (elem) {\n return value.toLowerCase() === elem;\n });\n}\n\nfunction isBoolean() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n return args.some(function (elem) {\n return elem.toLowerCase() === 'boolean';\n });\n}\n/* */\n\n\nfunction handleError(err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n\n try {\n if (vm) {\n var cur = vm;\n\n while (cur = cur.$parent) {\n var hooks = cur.$options.errorCaptured;\n\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n\n if (capture) {\n return;\n }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling(handler, context, args, vm, info) {\n var res;\n\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) {\n return handleError(e, vm, info + \" (Promise/async)\");\n }); // issue #9511\n // avoid catch triggering multiple times when nested calls\n\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n\n return res;\n}\n\nfunction globalHandleError(err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info);\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n\n logError(err, vm, info);\n}\n\nfunction logError(err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Error in \" + info + \": \\\"\" + err.toString() + \"\\\"\", vm);\n }\n /* istanbul ignore else */\n\n\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err;\n }\n}\n/* */\n\n\nvar isUsingMicroTask = false;\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks() {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n} // Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\n\n\nvar timerFunc; // The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n\n/* istanbul ignore next, $flow-disable-line */\n\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n\n timerFunc = function timerFunc() {\n p.then(flushCallbacks); // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n\n if (isIOS) {\n setTimeout(noop);\n }\n };\n\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (isNative(MutationObserver) || // PhantomJS and iOS 7.x\nMutationObserver.toString() === '[object MutationObserverConstructor]')) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n\n timerFunc = function timerFunc() {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function timerFunc() {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function timerFunc() {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick(cb, ctx) {\n var _resolve;\n\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n\n if (!pending) {\n pending = true;\n timerFunc();\n } // $flow-disable-line\n\n\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n });\n }\n}\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' + 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' + 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function warnNonPresent(target, key) {\n warn(\"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" + 'referenced during render. Make sure that this property is reactive, ' + 'either in the data option, or for class-based components, by ' + 'initializing the property. ' + 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target);\n };\n\n var warnReservedPrefix = function warnReservedPrefix(target, key) {\n warn(\"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" + 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' + 'prevent conflicts with Vue internals. ' + 'See: https://vuejs.org/v2/api/#data', target);\n };\n\n var hasProxy = typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set(target, key, value) {\n if (isBuiltInModifier(key)) {\n warn(\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key);\n return false;\n } else {\n target[key] = value;\n return true;\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has(target, key) {\n var has = (key in target);\n var isAllowed = allowedGlobals(key) || typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data);\n\n if (!has && !isAllowed) {\n if (key in target.$data) {\n warnReservedPrefix(target, key);\n } else {\n warnNonPresent(target, key);\n }\n }\n\n return has || !isAllowed;\n }\n };\n var getHandler = {\n get: function get(target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) {\n warnReservedPrefix(target, key);\n } else {\n warnNonPresent(target, key);\n }\n }\n\n return target[key];\n }\n };\n\n initProxy = function initProxy(vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped ? getHandler : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n/* */\n\n\nvar seenObjects = new _Set();\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\n\nfunction traverse(val) {\n _traverse(val, seenObjects);\n\n seenObjects.clear();\n}\n\nfunction _traverse(val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n\n if (!isA && !isObject(val) || Object.isFrozen(val) || val instanceof VNode) {\n return;\n }\n\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n\n if (seen.has(depId)) {\n return;\n }\n\n seen.add(depId);\n }\n\n if (isA) {\n i = val.length;\n\n while (i--) {\n _traverse(val[i], seen);\n }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n\n while (i--) {\n _traverse(val[keys[i]], seen);\n }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n\n if (perf && perf.mark && perf.measure && perf.clearMarks && perf.clearMeasures) {\n mark = function mark(tag) {\n return perf.mark(tag);\n };\n\n measure = function measure(name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag); // perf.clearMeasures(name)\n };\n }\n}\n/* */\n\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n };\n});\n\nfunction createFnInvoker(fns, vm) {\n function invoker() {\n var arguments$1 = arguments;\n var fns = invoker.fns;\n\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\n }\n }\n\n invoker.fns = fns;\n return invoker;\n}\n\nfunction updateListeners(on, oldOn, add, remove$$1, createOnceHandler, vm) {\n var name, def$$1, cur, old, event;\n\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\"Invalid handler for event \\\"\" + event.name + \"\\\": got \" + String(cur), vm);\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n/* */\n\n\nfunction mergeVNodeHook(def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook() {\n hook.apply(this, arguments); // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n/* */\n\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n\n if (isUndef(propOptions)) {\n return;\n }\n\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n\n if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\n tip(\"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" + formatComponentName(tag || Ctor) + \", but the declared prop name is\" + \" \\\"\" + key + \"\\\". \" + \"Note that HTML attributes are case-insensitive and camelCased \" + \"props need to use their kebab-case equivalents when using in-DOM \" + \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\");\n }\n }\n\n checkProp(res, props, key, altKey, true) || checkProp(res, attrs, key, altKey, false);\n }\n }\n\n return res;\n}\n\nfunction checkProp(res, hash, key, altKey, preserve) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n\n if (!preserve) {\n delete hash[key];\n }\n\n return true;\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n\n if (!preserve) {\n delete hash[altKey];\n }\n\n return true;\n }\n }\n\n return false;\n}\n/* */\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\n\n\nfunction simpleNormalizeChildren(children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children);\n }\n }\n\n return children;\n} // 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\n\n\nfunction normalizeChildren(children) {\n return isPrimitive(children) ? [createTextVNode(children)] : Array.isArray(children) ? normalizeArrayChildren(children) : undefined;\n}\n\nfunction isTextNode(node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment);\n}\n\nfunction normalizeArrayChildren(children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n\n for (i = 0; i < children.length; i++) {\n c = children[i];\n\n if (isUndef(c) || typeof c === 'boolean') {\n continue;\n }\n\n lastIndex = res.length - 1;\n last = res[lastIndex]; // nested\n\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, (nestedIndex || '') + \"_\" + i); // merge adjacent text nodes\n\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + c[0].text);\n c.shift();\n }\n\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) && isDef(c.tag) && isUndef(c.key) && isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n\n res.push(c);\n }\n }\n }\n\n return res;\n}\n/* */\n\n\nfunction initProvide(vm) {\n var provide = vm.$options.provide;\n\n if (provide) {\n vm._provided = typeof provide === 'function' ? provide.call(vm) : provide;\n }\n}\n\nfunction initInjections(vm) {\n var result = resolveInject(vm.$options.inject, vm);\n\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\"Avoid mutating an injected value directly since the changes will be \" + \"overwritten whenever the provided component re-renders. \" + \"injection being mutated: \\\"\" + key + \"\\\"\", vm);\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject(inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]; // #6574 in case the inject object is observed...\n\n if (key === '__ob__') {\n continue;\n }\n\n var provideKey = inject[key].from;\n var source = vm;\n\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break;\n }\n\n source = source.$parent;\n }\n\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function' ? provideDefault.call(vm) : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\"Injection \\\"\" + key + \"\\\" not found\", vm);\n }\n }\n }\n\n return result;\n }\n}\n/* */\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\n\n\nfunction resolveSlots(children, context) {\n if (!children || !children.length) {\n return {};\n }\n\n var slots = {};\n\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data; // remove slot attribute if the node is resolved as a Vue slot node\n\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n } // named slots should only be respected if the vnode was rendered in the\n // same context.\n\n\n if ((child.context === context || child.fnContext === context) && data && data.slot != null) {\n var name = data.slot;\n var slot = slots[name] || (slots[name] = []);\n\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n } // ignore slots that contains only whitespace\n\n\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n\n return slots;\n}\n\nfunction isWhitespace(node) {\n return node.isComment && !node.asyncFactory || node.text === ' ';\n}\n/* */\n\n\nfunction isAsyncPlaceholder(node) {\n return node.isComment && node.asyncFactory;\n}\n/* */\n\n\nfunction normalizeScopedSlots(slots, normalSlots, prevSlots) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized;\n } else if (isStable && prevSlots && prevSlots !== emptyObject && key === prevSlots.$key && !hasNormalSlots && !prevSlots.$hasNormal) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots;\n } else {\n res = {};\n\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n } // expose normal slots on scopedSlots\n\n\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n } // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n\n\n if (slots && Object.isExtensible(slots)) {\n slots._normalized = res;\n }\n\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res;\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function normalized() {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && _typeof(res) === 'object' && !Array.isArray(res) ? [res] // single vnode\n : normalizeChildren(res);\n var vnode = res && res[0];\n return res && (!vnode || res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode) // #9658, #10391\n ) ? undefined : res;\n }; // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n\n\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n\n return normalized;\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () {\n return slots[key];\n };\n}\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\n\n\nfunction renderList(val, render) {\n var ret, i, l, keys, key;\n\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n\n if (!isDef(ret)) {\n ret = [];\n }\n\n ret._isVList = true;\n return ret;\n}\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\n\n\nfunction renderSlot(name, fallbackRender, props, bindObject) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n\n if (scopedSlotFn) {\n // scoped slot\n props = props || {};\n\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn('slot v-bind without argument expects an Object', this);\n }\n\n props = extend(extend({}, bindObject), props);\n }\n\n nodes = scopedSlotFn(props) || (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender);\n } else {\n nodes = this.$slots[name] || (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender);\n }\n\n var target = props && props.slot;\n\n if (target) {\n return this.$createElement('template', {\n slot: target\n }, nodes);\n } else {\n return nodes;\n }\n}\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\n\n\nfunction resolveFilter(id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity;\n}\n/* */\n\n\nfunction isKeyNotMatch(expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1;\n } else {\n return expect !== actual;\n }\n}\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\n\n\nfunction checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName);\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode);\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key;\n }\n\n return eventKeyCode === undefined;\n}\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\n\n\nfunction bindObjectProps(data, tag, value, asProp, isSync) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn('v-bind without argument expects an Object or Array value', this);\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n\n var hash;\n\n var loop = function loop(key) {\n if (key === 'class' || key === 'style' || isReservedAttribute(key)) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key) ? data.domProps || (data.domProps = {}) : data.attrs || (data.attrs = {});\n }\n\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n\n on[\"update:\" + key] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) {\n loop(key);\n }\n }\n }\n\n return data;\n}\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\n\n\nfunction renderStatic(index, isInFor) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index]; // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n\n if (tree && !isInFor) {\n return tree;\n } // otherwise, render a fresh tree.\n\n\n tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, null, this // for render fns generated for functional component templates\n );\n markStatic(tree, \"__static__\" + index, false);\n return tree;\n}\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\n\n\nfunction markOnce(tree, index, key) {\n markStatic(tree, \"__once__\" + index + (key ? \"_\" + key : \"\"), true);\n return tree;\n}\n\nfunction markStatic(tree, key, isOnce) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], key + \"_\" + i, isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode(node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n/* */\n\n\nfunction bindObjectListeners(data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn('v-on without argument expects an Object value', this);\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n\n return data;\n}\n/* */\n\n\nfunction resolveScopedSlots(fns, // see flow/vnode\nres, // the following are added in 2.6\nhasDynamicKeys, contentHashKey) {\n res = res || {\n $stable: !hasDynamicKeys\n };\n\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n\n res[slot.key] = slot.fn;\n }\n }\n\n if (contentHashKey) {\n res.$key = contentHashKey;\n }\n\n return res;\n}\n/* */\n\n\nfunction bindDynamicKeys(baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a special value for explicitly removing a binding\n warn(\"Invalid value for dynamic directive argument (expected string or null): \" + key, this);\n }\n }\n\n return baseObj;\n} // helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\n\n\nfunction prependModifier(value, symbol) {\n return typeof value === 'string' ? symbol + value : value;\n}\n/* */\n\n\nfunction installRenderHelpers(target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n/* */\n\n\nfunction FunctionalRenderContext(data, props, children, parent, Ctor) {\n var this$1 = this;\n var options = Ctor.options; // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n\n var contextVm;\n\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent); // $flow-disable-line\n\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent; // $flow-disable-line\n\n parent = parent._original;\n }\n\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(data.scopedSlots, this$1.$slots = resolveSlots(children, parent));\n }\n\n return this$1.$slots;\n };\n\n Object.defineProperty(this, 'scopedSlots', {\n enumerable: true,\n get: function get() {\n return normalizeScopedSlots(data.scopedSlots, this.slots());\n }\n }); // support for compiled functional template\n\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options; // pre-resolve slots for renderSlot()\n\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n\n return vnode;\n };\n } else {\n this._c = function (a, b, c, d) {\n return createElement(contextVm, a, b, c, d, needNormalization);\n };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent(Ctor, propsData, data, contextVm, children) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) {\n mergeProps(props, data.attrs);\n }\n\n if (isDef(data.props)) {\n mergeProps(props, data.props);\n }\n }\n\n var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor);\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext);\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n\n return res;\n }\n}\n\nfunction cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n\n return clone;\n}\n\nfunction mergeProps(to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n/* */\n\n/* */\n\n/* */\n\n/* */\n// inline hooks to be invoked on component VNodes during patch\n\n\nvar componentVNodeHooks = {\n init: function init(vnode, hydrating) {\n if (vnode.componentInstance && !vnode.componentInstance._isDestroyed && vnode.data.keepAlive) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance);\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n prepatch: function prepatch(oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(child, options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n insert: function insert(vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true\n /* direct */\n );\n }\n }\n },\n destroy: function destroy(vnode) {\n var componentInstance = vnode.componentInstance;\n\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true\n /* direct */\n );\n }\n }\n }\n};\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent(Ctor, data, context, children, tag) {\n if (isUndef(Ctor)) {\n return;\n }\n\n var baseCtor = context.$options._base; // plain options object: turn it into a constructor\n\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n } // if at this stage it's not a constructor or an async component factory,\n // reject.\n\n\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Invalid Component definition: \" + String(Ctor), context);\n }\n\n return;\n } // async component\n\n\n var asyncFactory;\n\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(asyncFactory, data, context, children, tag);\n }\n }\n\n data = data || {}; // resolve constructor options in case global mixins are applied after\n // component constructor creation\n\n resolveConstructorOptions(Ctor); // transform component v-model data into props & events\n\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n } // extract props\n\n\n var propsData = extractPropsFromVNodeData(data, Ctor, tag); // functional component\n\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children);\n } // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n\n\n var listeners = data.on; // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n // work around flow\n var slot = data.slot;\n data = {};\n\n if (slot) {\n data.slot = slot;\n }\n } // install component management hooks onto the placeholder node\n\n\n installComponentHooks(data); // return a placeholder vnode\n\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\"vue-component-\" + Ctor.cid + (name ? \"-\" + name : ''), data, undefined, undefined, undefined, context, {\n Ctor: Ctor,\n propsData: propsData,\n listeners: listeners,\n tag: tag,\n children: children\n }, asyncFactory);\n return vnode;\n}\n\nfunction createComponentInstanceForVnode( // we know it's MountedComponentVNode but flow doesn't\nvnode, // activeInstance in lifecycle state\nparent) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n }; // check inline-template render functions\n\n var inlineTemplate = vnode.data.inlineTemplate;\n\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n\n return new vnode.componentOptions.Ctor(options);\n}\n\nfunction installComponentHooks(data) {\n var hooks = data.hook || (data.hook = {});\n\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1(f1, f2) {\n var merged = function merged(a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n\n merged._merged = true;\n return merged;\n} // transform component v-model info (value and callback) into\n// prop and event handler respectively.\n\n\nfunction transformModel(options, data) {\n var prop = options.model && options.model.prop || 'value';\n var event = options.model && options.model.event || 'input';\n (data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n\n if (isDef(existing)) {\n if (Array.isArray(existing) ? existing.indexOf(callback) === -1 : existing !== callback) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n/* */\n\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2; // wrapper function for providing a more flexible interface\n// without getting yelled at by flow\n\nfunction createElement(context, tag, data, children, normalizationType, alwaysNormalize) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n\n return _createElement(context, tag, data, children, normalizationType);\n}\n\nfunction _createElement(context, tag, data, children, normalizationType) {\n if (isDef(data) && isDef(data.__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\"Avoid using observed data object as vnode data: \" + JSON.stringify(data) + \"\\n\" + 'Always create fresh vnode data objects in each render!', context);\n return createEmptyVNode();\n } // object syntax in v-bind\n\n\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode();\n } // warn against non-primitive key\n\n\n if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.key) && !isPrimitive(data.key)) {\n {\n warn('Avoid using non-primitive value as key, ' + 'use string/number value instead.', context);\n }\n } // support single function children as default scoped slot\n\n\n if (Array.isArray(children) && typeof children[0] === 'function') {\n data = data || {};\n data.scopedSlots = {\n default: children[0]\n };\n children.length = 0;\n }\n\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n\n var vnode, ns;\n\n if (typeof tag === 'string') {\n var Ctor;\n ns = context.$vnode && context.$vnode.ns || config.getTagNamespace(tag);\n\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn) && data.tag !== 'component') {\n warn(\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\", context);\n }\n\n vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context);\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(tag, data, children, undefined, undefined, context);\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n\n if (Array.isArray(vnode)) {\n return vnode;\n } else if (isDef(vnode)) {\n if (isDef(ns)) {\n applyNS(vnode, ns);\n }\n\n if (isDef(data)) {\n registerDeepBindings(data);\n }\n\n return vnode;\n } else {\n return createEmptyVNode();\n }\n}\n\nfunction applyNS(vnode, ns, force) {\n vnode.ns = ns;\n\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n\n if (isDef(child.tag) && (isUndef(child.ns) || isTrue(force) && child.tag !== 'svg')) {\n applyNS(child, ns, force);\n }\n }\n }\n} // ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\n\n\nfunction registerDeepBindings(data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n/* */\n\n\nfunction initRender(vm) {\n vm._vnode = null; // the root of the child tree\n\n vm._staticTrees = null; // v-once cached trees\n\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject; // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n\n vm._c = function (a, b, c, d) {\n return createElement(vm, a, b, c, d, false);\n }; // normalization is always applied for the public version, used in\n // user-written render functions.\n\n\n vm.$createElement = function (a, b, c, d) {\n return createElement(vm, a, b, c, d, true);\n }; // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n\n\n var parentData = parentVnode && parentVnode.data;\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin(Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this);\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(_parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots);\n } // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n\n\n vm.$vnode = _parentVnode; // render self\n\n var vnode;\n\n try {\n // There's no need to maintain a stack because all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\"); // return error render result,\n // or previous vnode to prevent render error causing blank component\n\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n } // if the returned array contains only a single node, allow it\n\n\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n } // return empty vnode in case the render function errored out\n\n\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn('Multiple root nodes returned from render function. Render function ' + 'should return a single root node.', vm);\n }\n\n vnode = createEmptyVNode();\n } // set parent\n\n\n vnode.parent = _parentVnode;\n return vnode;\n };\n}\n/* */\n\n\nfunction ensureCtor(comp, base) {\n if (comp.__esModule || hasSymbol && comp[Symbol.toStringTag] === 'Module') {\n comp = comp.default;\n }\n\n return isObject(comp) ? base.extend(comp) : comp;\n}\n\nfunction createAsyncPlaceholder(factory, data, context, children, tag) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = {\n data: data,\n context: context,\n children: children,\n tag: tag\n };\n return node;\n}\n\nfunction resolveAsyncComponent(factory, baseCtor) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp;\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved;\n }\n\n var owner = currentRenderingInstance;\n\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp;\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null;\n owner.$on('hook:destroyed', function () {\n return remove(owners, owner);\n });\n\n var forceRender = function forceRender(renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n owners[i].$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor); // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\"Failed to resolve async component: \" + String(factory) + (reason ? \"\\nReason: \" + reason : ''));\n\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n\n if (isUndef(factory.resolved)) {\n reject(process.env.NODE_ENV !== 'production' ? \"timeout (\" + res.timeout + \"ms)\" : null);\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false; // return in case resolved synchronously\n\n return factory.loading ? factory.loadingComp : factory.resolved;\n }\n}\n/* */\n\n\nfunction getFirstComponentChild(children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c;\n }\n }\n }\n}\n/* */\n\n/* */\n\n\nfunction initEvents(vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false; // init parent attached events\n\n var listeners = vm.$options._parentListeners;\n\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add(event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1(event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler(event, fn) {\n var _target = target;\n return function onceHandler() {\n var res = fn.apply(null, arguments);\n\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n };\n}\n\nfunction updateComponentListeners(vm, listeners, oldListeners) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin(Vue) {\n var hookRE = /^hook:/;\n\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn); // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n\n return vm;\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n\n function on() {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n\n on.fn = fn;\n vm.$on(event, on);\n return vm;\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this; // all\n\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm;\n } // array of events\n\n\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n\n return vm;\n } // specific event\n\n\n var cbs = vm._events[event];\n\n if (!cbs) {\n return vm;\n }\n\n if (!fn) {\n vm._events[event] = null;\n return vm;\n } // specific handler\n\n\n var cb;\n var i = cbs.length;\n\n while (i--) {\n cb = cbs[i];\n\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break;\n }\n }\n\n return vm;\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" + formatComponentName(vm) + \" but the handler is registered for \\\"\" + event + \"\\\". \" + \"Note that HTML attributes are case-insensitive and you cannot use \" + \"v-on to listen to camelCase events when using in-DOM templates. \" + \"You should probably use \\\"\" + hyphenate(event) + \"\\\" instead of \\\"\" + event + \"\\\".\");\n }\n }\n\n var cbs = vm._events[event];\n\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n\n return vm;\n };\n}\n/* */\n\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n };\n}\n\nfunction initLifecycle(vm) {\n var options = vm.$options; // locate first non-abstract parent\n\n var parent = options.parent;\n\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n vm.$children = [];\n vm.$refs = {};\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin(Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode; // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false\n /* removeOnly */\n );\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n\n restoreActiveInstance(); // update __vue__ reference\n\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n } // if parent is an HOC, update its $el as well\n\n\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n } // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n\n if (vm._isBeingDestroyed) {\n return;\n }\n\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true; // remove self from parent\n\n var parent = vm.$parent;\n\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n } // teardown watchers\n\n\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n\n var i = vm._watchers.length;\n\n while (i--) {\n vm._watchers[i].teardown();\n } // remove reference from data ob\n // frozen object may not have observer.\n\n\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n } // call the last hook...\n\n\n vm._isDestroyed = true; // invoke destroy hooks on current rendered tree\n\n vm.__patch__(vm._vnode, null); // fire destroyed hook\n\n\n callHook(vm, 'destroyed'); // turn off all instance listeners.\n\n vm.$off(); // remove __vue__ reference\n\n if (vm.$el) {\n vm.$el.__vue__ = null;\n } // release circular reference (#6759)\n\n\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent(vm, el, hydrating) {\n vm.$el = el;\n\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if (vm.$options.template && vm.$options.template.charAt(0) !== '#' || vm.$options.el || el) {\n warn('You are using the runtime-only build of Vue where the template ' + 'compiler is not available. Either pre-compile the templates into ' + 'render functions, or use the compiler-included build.', vm);\n } else {\n warn('Failed to mount component: template or render function not defined.', vm);\n }\n }\n }\n\n callHook(vm, 'beforeMount');\n var updateComponent;\n /* istanbul ignore if */\n\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function updateComponent() {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n mark(startTag);\n\n var vnode = vm._render();\n\n mark(endTag);\n measure(\"vue \" + name + \" render\", startTag, endTag);\n mark(startTag);\n\n vm._update(vnode, hydrating);\n\n mark(endTag);\n measure(\"vue \" + name + \" patch\", startTag, endTag);\n };\n } else {\n updateComponent = function updateComponent() {\n vm._update(vm._render(), hydrating);\n };\n } // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n\n\n new Watcher(vm, updateComponent, noop, {\n before: function before() {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true\n /* isRenderWatcher */\n );\n hydrating = false; // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n\n return vm;\n}\n\nfunction updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n } // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n\n\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(newScopedSlots && !newScopedSlots.$stable || oldScopedSlots !== emptyObject && !oldScopedSlots.$stable || newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key || !newScopedSlots && vm.$scopedSlots.$key); // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n\n var needsForceUpdate = !!(renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot);\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) {\n // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n\n vm.$options._renderChildren = renderChildren; // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject; // update props\n\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n\n toggleObserving(true); // keep a copy of raw propsData\n\n vm.$options.propsData = propsData;\n } // update listeners\n\n\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners); // resolve slots + force update if has children\n\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree(vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction activateChildComponent(vm, direct) {\n if (direct) {\n vm._directInactive = false;\n\n if (isInInactiveTree(vm)) {\n return;\n }\n } else if (vm._directInactive) {\n return;\n }\n\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent(vm, direct) {\n if (direct) {\n vm._directInactive = true;\n\n if (isInInactiveTree(vm)) {\n return;\n }\n }\n\n if (!vm._inactive) {\n vm._inactive = true;\n\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook(vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n\n popTarget();\n}\n/* */\n\n\nvar MAX_UPDATE_COUNT = 100;\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n/**\n * Reset the scheduler's state.\n */\n\nfunction resetSchedulerState() {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n\n waiting = flushing = false;\n} // Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\n\n\nvar currentFlushTimestamp = 0; // Async edge case fix requires storing an event listener's attach timestamp.\n\nvar getNow = Date.now; // Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\n\nif (inBrowser && !isIE) {\n var performance = window.performance;\n\n if (performance && typeof performance.now === 'function' && getNow() > document.createEvent('Event').timeStamp) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function getNow() {\n return performance.now();\n };\n }\n}\n/**\n * Flush both queues and run the watchers.\n */\n\n\nfunction flushSchedulerQueue() {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id; // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n\n queue.sort(function (a, b) {\n return a.id - b.id;\n }); // do not cache length because more watchers might be pushed\n // as we run existing watchers\n\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n\n if (watcher.before) {\n watcher.before();\n }\n\n id = watcher.id;\n has[id] = null;\n watcher.run(); // in dev build, check and stop circular updates.\n\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn('You may have an infinite update loop ' + (watcher.user ? \"in watcher with expression \\\"\" + watcher.expression + \"\\\"\" : \"in a component render function.\"), watcher.vm);\n break;\n }\n }\n } // keep copies of post queues before resetting state\n\n\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n resetSchedulerState(); // call component updated and activated hooks\n\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue); // devtool hook\n\n /* istanbul ignore if */\n\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks(queue) {\n var i = queue.length;\n\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\n\n\nfunction queueActivatedComponent(vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks(queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true\n /* true */\n );\n }\n}\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\n\n\nfunction queueWatcher(watcher) {\n var id = watcher.id;\n\n if (has[id] == null) {\n has[id] = true;\n\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n\n queue.splice(i + 1, 0, watcher);\n } // queue the flush\n\n\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return;\n }\n\n nextTick(flushSchedulerQueue);\n }\n }\n}\n/* */\n\n\nvar uid$2 = 0;\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\n\nvar Watcher = function Watcher(vm, expOrFn, cb, options, isRenderWatcher) {\n this.vm = vm;\n\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n\n vm._watchers.push(this); // options\n\n\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production' ? expOrFn.toString() : ''; // parse expression for getter\n\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\"Failed watching path: \\\"\" + expOrFn + \"\\\" \" + 'Watcher only accepts simple dot-delimited paths. ' + 'For full control, use a function instead.', vm);\n }\n }\n\n this.value = this.lazy ? undefined : this.get();\n};\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\n\n\nWatcher.prototype.get = function get() {\n pushTarget(this);\n var value;\n var vm = this.vm;\n\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, \"getter for watcher \\\"\" + this.expression + \"\\\"\");\n } else {\n throw e;\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n\n popTarget();\n this.cleanupDeps();\n }\n\n return value;\n};\n/**\n * Add a dependency to this directive.\n */\n\n\nWatcher.prototype.addDep = function addDep(dep) {\n var id = dep.id;\n\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n/**\n * Clean up for dependency collection.\n */\n\n\nWatcher.prototype.cleanupDeps = function cleanupDeps() {\n var i = this.deps.length;\n\n while (i--) {\n var dep = this.deps[i];\n\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\n\n\nWatcher.prototype.update = function update() {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\n\n\nWatcher.prototype.run = function run() {\n if (this.active) {\n var value = this.get();\n\n if (value !== this.value || // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) || this.deep) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n\n if (this.user) {\n var info = \"callback for watcher \\\"\" + this.expression + \"\\\"\";\n invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\n\n\nWatcher.prototype.evaluate = function evaluate() {\n this.value = this.get();\n this.dirty = false;\n};\n/**\n * Depend on all deps collected by this watcher.\n */\n\n\nWatcher.prototype.depend = function depend() {\n var i = this.deps.length;\n\n while (i--) {\n this.deps[i].depend();\n }\n};\n/**\n * Remove self from all dependencies' subscriber list.\n */\n\n\nWatcher.prototype.teardown = function teardown() {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n\n var i = this.deps.length;\n\n while (i--) {\n this.deps[i].removeSub(this);\n }\n\n this.active = false;\n }\n};\n/* */\n\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy(target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter() {\n return this[sourceKey][key];\n };\n\n sharedPropertyDefinition.set = function proxySetter(val) {\n this[sourceKey][key] = val;\n };\n\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState(vm) {\n vm._watchers = [];\n var opts = vm.$options;\n\n if (opts.props) {\n initProps(vm, opts.props);\n }\n\n if (opts.methods) {\n initMethods(vm, opts.methods);\n }\n\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true\n /* asRootData */\n );\n }\n\n if (opts.computed) {\n initComputed(vm, opts.computed);\n }\n\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps(vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {}; // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent; // root instance props should be converted\n\n if (!isRoot) {\n toggleObserving(false);\n }\n\n var loop = function loop(key) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n\n if (isReservedAttribute(hyphenatedKey) || config.isReservedAttr(hyphenatedKey)) {\n warn(\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\", vm);\n }\n\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\"Avoid mutating a prop directly since the value will be \" + \"overwritten whenever the parent component re-renders. \" + \"Instead, use a data or computed property based on the prop's \" + \"value. Prop being mutated: \\\"\" + key + \"\\\"\", vm);\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n } // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n\n\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) {\n loop(key);\n }\n\n toggleObserving(true);\n}\n\nfunction initData(vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function' ? getData(data, vm) : data || {};\n\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn('data functions should return an object:\\n' + 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', vm);\n } // proxy data on instance\n\n\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n\n while (i--) {\n var key = keys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\", vm);\n }\n }\n\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" + \"Use prop default value instead.\", vm);\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n } // observe data\n\n\n observe(data, true\n /* asRootData */\n );\n}\n\nfunction getData(data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n\n try {\n return data.call(vm, vm);\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {};\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = {\n lazy: true\n};\n\nfunction initComputed(vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null); // computed properties are just getters during SSR\n\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\"Getter is missing for computed property \\\"\" + key + \"\\\".\", vm);\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions);\n } // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n\n\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn(\"The computed property \\\"\" + key + \"\\\" is already defined in data.\", vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn(\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\", vm);\n } else if (vm.$options.methods && key in vm.$options.methods) {\n warn(\"The computed property \\\"\" + key + \"\\\" is already defined as a method.\", vm);\n }\n }\n }\n}\n\nfunction defineComputed(target, key, userDef) {\n var shouldCache = !isServerRendering();\n\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache ? createComputedGetter(key) : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get ? shouldCache && userDef.cache !== false ? createComputedGetter(key) : createGetterInvoker(userDef.get) : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n\n if (process.env.NODE_ENV !== 'production' && sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\", this);\n };\n }\n\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter(key) {\n return function computedGetter() {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n\n if (Dep.target) {\n watcher.depend();\n }\n\n return watcher.value;\n }\n };\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter() {\n return fn.call(this, this);\n };\n}\n\nfunction initMethods(vm, methods) {\n var props = vm.$options.props;\n\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\"Method \\\"\" + key + \"\\\" has type \\\"\" + _typeof(methods[key]) + \"\\\" in the component definition. \" + \"Did you reference the function correctly?\", vm);\n }\n\n if (props && hasOwn(props, key)) {\n warn(\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\", vm);\n }\n\n if (key in vm && isReserved(key)) {\n warn(\"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" + \"Avoid defining component methods that start with _ or $.\");\n }\n }\n\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch(vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher(vm, expOrFn, handler, options) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n\n return vm.$watch(expOrFn, handler, options);\n}\n\nfunction stateMixin(Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n\n dataDef.get = function () {\n return this._data;\n };\n\n var propsDef = {};\n\n propsDef.get = function () {\n return this._props;\n };\n\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn('Avoid replacing instance root $data. ' + 'Use nested data properties instead.', this);\n };\n\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (expOrFn, cb, options) {\n var vm = this;\n\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options);\n }\n\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n\n if (options.immediate) {\n var info = \"callback for immediate watcher \\\"\" + watcher.expression + \"\\\"\";\n pushTarget();\n invokeWithErrorHandling(cb, vm, [watcher.value], vm, info);\n popTarget();\n }\n\n return function unwatchFn() {\n watcher.teardown();\n };\n };\n}\n/* */\n\n\nvar uid$3 = 0;\n\nfunction initMixin(Vue) {\n Vue.prototype._init = function (options) {\n var vm = this; // a uid\n\n vm._uid = uid$3++;\n var startTag, endTag;\n /* istanbul ignore if */\n\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + vm._uid;\n endTag = \"vue-perf-end:\" + vm._uid;\n mark(startTag);\n } // a flag to avoid this being observed\n\n\n vm._isVue = true; // merge options\n\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm);\n }\n /* istanbul ignore else */\n\n\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n } // expose real self\n\n\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n\n callHook(vm, 'created');\n /* istanbul ignore if */\n\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure(\"vue \" + vm._name + \" init\", startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent(vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options); // doing this because it's faster than dynamic enumeration.\n\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions(Ctor) {\n var options = Ctor.options;\n\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions; // check if there are any late-modified/attached options (#4976)\n\n var modifiedOptions = resolveModifiedOptions(Ctor); // update base extend options\n\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n\n return options;\n}\n\nfunction resolveModifiedOptions(Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) {\n modified = {};\n }\n\n modified[key] = latest[key];\n }\n }\n\n return modified;\n}\n\nfunction Vue(options) {\n if (process.env.NODE_ENV !== 'production' && !(this instanceof Vue)) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n/* */\n\nfunction initUse(Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = this._installedPlugins || (this._installedPlugins = []);\n\n if (installedPlugins.indexOf(plugin) > -1) {\n return this;\n } // additional parameters\n\n\n var args = toArray(arguments, 1);\n args.unshift(this);\n\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n\n installedPlugins.push(plugin);\n return this;\n };\n}\n/* */\n\n\nfunction initMixin$1(Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this;\n };\n}\n/* */\n\n\nfunction initExtend(Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n /**\n * Class inheritance\n */\n\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId];\n }\n\n var name = extendOptions.name || Super.options.name;\n\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent(options) {\n this._init(options);\n };\n\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(Super.options, extendOptions);\n Sub['super'] = Super; // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n\n if (Sub.options.computed) {\n initComputed$1(Sub);\n } // allow further extension/mixin/plugin usage\n\n\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use; // create asset registers, so extended classes\n // can have their private assets too.\n\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n }); // enable recursive self-lookup\n\n if (name) {\n Sub.options.components[name] = Sub;\n } // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n\n\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options); // cache constructor\n\n cachedCtors[SuperId] = Sub;\n return Sub;\n };\n}\n\nfunction initProps$1(Comp) {\n var props = Comp.options.props;\n\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1(Comp) {\n var computed = Comp.options.computed;\n\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n/* */\n\n\nfunction initAssetRegisters(Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (id, definition) {\n if (!definition) {\n return this.options[type + 's'][id];\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n\n if (type === 'directive' && typeof definition === 'function') {\n definition = {\n bind: definition,\n update: definition\n };\n }\n\n this.options[type + 's'][id] = definition;\n return definition;\n }\n };\n });\n}\n/* */\n\n\nfunction getComponentName(opts) {\n return opts && (opts.Ctor.options.name || opts.tag);\n}\n\nfunction matches(pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1;\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1;\n } else if (isRegExp(pattern)) {\n return pattern.test(name);\n }\n /* istanbul ignore next */\n\n\n return false;\n}\n\nfunction pruneCache(keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n\n for (var key in cache) {\n var entry = cache[key];\n\n if (entry) {\n var name = entry.name;\n\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry(cache, key, keys, current) {\n var entry = cache[key];\n\n if (entry && (!current || entry.tag !== current.tag)) {\n entry.componentInstance.$destroy();\n }\n\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n methods: {\n cacheVNode: function cacheVNode() {\n var ref = this;\n var cache = ref.cache;\n var keys = ref.keys;\n var vnodeToCache = ref.vnodeToCache;\n var keyToCache = ref.keyToCache;\n\n if (vnodeToCache) {\n var tag = vnodeToCache.tag;\n var componentInstance = vnodeToCache.componentInstance;\n var componentOptions = vnodeToCache.componentOptions;\n cache[keyToCache] = {\n name: getComponentName(componentOptions),\n tag: tag,\n componentInstance: componentInstance\n };\n keys.push(keyToCache); // prune oldest entry\n\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n\n this.vnodeToCache = null;\n }\n }\n },\n created: function created() {\n this.cache = Object.create(null);\n this.keys = [];\n },\n destroyed: function destroyed() {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n mounted: function mounted() {\n var this$1 = this;\n this.cacheVNode();\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) {\n return matches(val, name);\n });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) {\n return !matches(val, name);\n });\n });\n },\n updated: function updated() {\n this.cacheVNode();\n },\n render: function render() {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n\n if ( // not included\n include && (!name || !matches(include, name)) || // excluded\n exclude && name && matches(exclude, name)) {\n return vnode;\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? \"::\" + componentOptions.tag : '') : vnode.key;\n\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance; // make current key freshest\n\n remove(keys, key);\n keys.push(key);\n } else {\n // delay setting the cache until update\n this.vnodeToCache = vnode;\n this.keyToCache = key;\n }\n\n vnode.data.keepAlive = true;\n }\n\n return vnode || slot && slot[0];\n }\n};\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n/* */\n\nfunction initGlobalAPI(Vue) {\n // config\n var configDef = {};\n\n configDef.get = function () {\n return config;\n };\n\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn('Do not replace the Vue.config object, set individual fields instead.');\n };\n }\n\n Object.defineProperty(Vue, 'config', configDef); // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick; // 2.6 explicit observable API\n\n Vue.observable = function (obj) {\n observe(obj);\n return obj;\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n }); // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n\n Vue.options._base = Vue;\n extend(Vue.options.components, builtInComponents);\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get() {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext;\n }\n}); // expose FunctionalRenderContext for ssr runtime helper installation\n\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\nVue.version = '2.6.14';\n/* */\n// these are reserved for web because they are directly compiled away\n// during template compilation\n\nvar isReservedAttr = makeMap('style,class'); // attributes that should be using props for binding\n\nvar acceptValue = makeMap('input,textarea,option,select,progress');\n\nvar mustUseProp = function mustUseProp(tag, type, attr) {\n return attr === 'value' && acceptValue(tag) && type !== 'button' || attr === 'selected' && tag === 'option' || attr === 'checked' && tag === 'input' || attr === 'muted' && tag === 'video';\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function convertEnumeratedValue(key, value) {\n return isFalsyAttrValue(value) || value === 'false' ? 'false' // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value) ? value : 'true';\n};\n\nvar isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' + 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' + 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' + 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' + 'required,reversed,scoped,seamless,selected,sortable,' + 'truespeed,typemustmatch,visible');\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function isXlink(name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink';\n};\n\nvar getXlinkProp = function getXlinkProp(name) {\n return isXlink(name) ? name.slice(6, name.length) : '';\n};\n\nvar isFalsyAttrValue = function isFalsyAttrValue(val) {\n return val == null || val === false;\n};\n/* */\n\n\nfunction genClassForVnode(vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n\n return renderClass(data.staticClass, data.class);\n}\n\nfunction mergeClassData(child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class) ? [child.class, parent.class] : parent.class\n };\n}\n\nfunction renderClass(staticClass, dynamicClass) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass));\n }\n /* istanbul ignore next */\n\n\n return '';\n}\n\nfunction concat(a, b) {\n return a ? b ? a + ' ' + b : a : b || '';\n}\n\nfunction stringifyClass(value) {\n if (Array.isArray(value)) {\n return stringifyArray(value);\n }\n\n if (isObject(value)) {\n return stringifyObject(value);\n }\n\n if (typeof value === 'string') {\n return value;\n }\n /* istanbul ignore next */\n\n\n return '';\n}\n\nfunction stringifyArray(value) {\n var res = '';\n var stringified;\n\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) {\n res += ' ';\n }\n\n res += stringified;\n }\n }\n\n return res;\n}\n\nfunction stringifyObject(value) {\n var res = '';\n\n for (var key in value) {\n if (value[key]) {\n if (res) {\n res += ' ';\n }\n\n res += key;\n }\n }\n\n return res;\n}\n/* */\n\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\nvar isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' + 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' + 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' + 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' + 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' + 'embed,object,param,source,canvas,script,noscript,del,ins,' + 'caption,col,colgroup,table,thead,tbody,td,th,tr,' + 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' + 'output,progress,select,textarea,' + 'details,dialog,menu,menuitem,summary,' + 'content,element,shadow,template,blockquote,iframe,tfoot'); // this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\n\nvar isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' + 'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' + 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true);\n\nvar isReservedTag = function isReservedTag(tag) {\n return isHTMLTag(tag) || isSVG(tag);\n};\n\nfunction getTagNamespace(tag) {\n if (isSVG(tag)) {\n return 'svg';\n } // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n\n\n if (tag === 'math') {\n return 'math';\n }\n}\n\nvar unknownElementCache = Object.create(null);\n\nfunction isUnknownElement(tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true;\n }\n\n if (isReservedTag(tag)) {\n return false;\n }\n\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag];\n }\n\n var el = document.createElement(tag);\n\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return unknownElementCache[tag] = el.constructor === window.HTMLUnknownElement || el.constructor === window.HTMLElement;\n } else {\n return unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString());\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\n\nfunction query(el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn('Cannot find element: ' + el);\n return document.createElement('div');\n }\n\n return selected;\n } else {\n return el;\n }\n}\n/* */\n\n\nfunction createElement$1(tagName, vnode) {\n var elm = document.createElement(tagName);\n\n if (tagName !== 'select') {\n return elm;\n } // false or null will remove the attribute but undefined will not\n\n\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n\n return elm;\n}\n\nfunction createElementNS(namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName);\n}\n\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\n\nfunction createComment(text) {\n return document.createComment(text);\n}\n\nfunction insertBefore(parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild(node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild(node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode(node) {\n return node.parentNode;\n}\n\nfunction nextSibling(node) {\n return node.nextSibling;\n}\n\nfunction tagName(node) {\n return node.tagName;\n}\n\nfunction setTextContent(node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope(node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n/* */\n\nvar ref = {\n create: function create(_, vnode) {\n registerRef(vnode);\n },\n update: function update(oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy(vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef(vnode, isRemoval) {\n var key = vnode.data.ref;\n\n if (!isDef(key)) {\n return;\n }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\n\nvar emptyNode = new VNode('', {}, []);\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode(a, b) {\n return a.key === b.key && a.asyncFactory === b.asyncFactory && (a.tag === b.tag && a.isComment === b.isComment && isDef(a.data) === isDef(b.data) && sameInputType(a, b) || isTrue(a.isAsyncPlaceholder) && isUndef(b.asyncFactory.error));\n}\n\nfunction sameInputType(a, b) {\n if (a.tag !== 'input') {\n return true;\n }\n\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB);\n}\n\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n\n if (isDef(key)) {\n map[key] = i;\n }\n }\n\n return map;\n}\n\nfunction createPatchFunction(backend) {\n var i, j;\n var cbs = {};\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt(elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm);\n }\n\n function createRmCb(childElm, listeners) {\n function remove$$1() {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n\n remove$$1.listeners = listeners;\n return remove$$1;\n }\n\n function removeNode(el) {\n var parent = nodeOps.parentNode(el); // element may have already been removed due to v-html / v-text\n\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1(vnode, inVPre) {\n return !inVPre && !vnode.ns && !(config.ignoredElements.length && config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore) ? ignore.test(vnode.tag) : ignore === vnode.tag;\n })) && config.isUnknownElement(vnode.tag);\n }\n\n var creatingElmInVPre = 0;\n\n function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return;\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn('Unknown custom element: <' + tag + '> - did you ' + 'register the component correctly? For recursive components, ' + 'make sure to provide the \"name\" option.', vnode.context);\n }\n }\n\n vnode.elm = vnode.ns ? nodeOps.createElementNS(vnode.ns, tag) : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n /* istanbul ignore if */\n\n {\n createChildren(vnode, children, insertedVnodeQueue);\n\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false\n /* hydrating */\n );\n } // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n\n\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n\n return true;\n }\n }\n }\n\n function initComponent(vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n\n vnode.elm = vnode.componentInstance.$el;\n\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode); // make sure to invoke the insert hook\n\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\n var i; // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n\n var innerNode = vnode;\n\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n\n insertedVnodeQueue.push(innerNode);\n break;\n }\n } // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n\n\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert(parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren(vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable(vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n\n return isDef(vnode.tag);\n }\n\n function invokeCreateHooks(vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n\n i = vnode.data.hook; // Reuse variable\n\n if (isDef(i)) {\n if (isDef(i.create)) {\n i.create(emptyNode, vnode);\n }\n\n if (isDef(i.insert)) {\n insertedVnodeQueue.push(vnode);\n }\n }\n } // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n\n\n function setScope(vnode) {\n var i;\n\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n\n ancestor = ancestor.parent;\n }\n } // for slot content they should also get the scopeId from the host instance.\n\n\n if (isDef(i = activeInstance) && i !== vnode.context && i !== vnode.fnContext && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook(vnode) {\n var i, j;\n var data = vnode.data;\n\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) {\n i(vnode);\n }\n\n for (i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](vnode);\n }\n }\n\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes(vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else {\n // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook(vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n } // recursively invoke hooks on child component root node\n\n\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm; // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) {\n // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) {\n // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n\n idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n\n if (isUndef(idxInOld)) {\n // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n\n newStartVnode = newCh[++newStartIdx];\n }\n }\n\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys(children) {\n var seenKeys = {};\n\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\", vnode.context);\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld(node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n\n if (isDef(c) && sameVnode(node, c)) {\n return i;\n }\n }\n }\n\n function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) {\n if (oldVnode === vnode) {\n return;\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n\n return;\n } // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n\n\n if (isTrue(vnode.isStatic) && isTrue(oldVnode.isStatic) && vnode.key === oldVnode.key && (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) {\n vnode.componentInstance = oldVnode.componentInstance;\n return;\n }\n\n var i;\n var data = vnode.data;\n\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) {\n cbs.update[i](oldVnode, vnode);\n }\n\n if (isDef(i = data.hook) && isDef(i = i.update)) {\n i(oldVnode, vnode);\n }\n }\n\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) {\n updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly);\n }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n\n if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) {\n i(oldVnode, vnode);\n }\n }\n }\n\n function invokeInsertHook(vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false; // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key'); // Note: this is a browser-only function so we can assume elms are DOM nodes.\n\n function hydrate(elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || data && data.pre;\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true;\n } // assert node match\n\n\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false;\n }\n }\n\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) {\n i(vnode, true\n /* hydrating */\n );\n }\n\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true;\n }\n }\n\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined' && !hydrationBailed) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n\n return false;\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break;\n }\n\n childNode = childNode.nextSibling;\n } // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n\n\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined' && !hydrationBailed) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n\n return false;\n }\n }\n }\n }\n\n if (isDef(data)) {\n var fullInvoke = false;\n\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break;\n }\n }\n\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n\n return true;\n }\n\n function assertNodeMatch(node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || !isUnknownElement$$1(vnode, inVPre) && vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase());\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3);\n }\n }\n\n return function patch(oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) {\n invokeDestroyHook(oldVnode);\n }\n\n return;\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode;\n } else if (process.env.NODE_ENV !== 'production') {\n warn('The client-side rendered virtual DOM tree is not matching ' + 'server-rendered content. This is likely caused by incorrect ' + 'HTML markup, for example nesting block-level elements inside ' + '<p>, or missing <tbody>. Bailing hydration and performing ' + 'full client-side render.');\n }\n } // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n\n\n oldVnode = emptyNodeAt(oldVnode);\n } // replacing existing element\n\n\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm); // create new node\n\n createElm(vnode, insertedVnodeQueue, // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm)); // update parent placeholder node element, recursively\n\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n\n ancestor.elm = vnode.elm;\n\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n } // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n\n\n var insert = ancestor.data.hook.insert;\n\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n\n ancestor = ancestor.parent;\n }\n } // destroy old node\n\n\n if (isDef(parentElm)) {\n removeVnodes([oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm;\n };\n}\n/* */\n\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives(vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives(oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update(oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n var key, oldDir, dir;\n\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function callInsert() {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1(dirs, vm) {\n var res = Object.create(null);\n\n if (!dirs) {\n // $flow-disable-line\n return res;\n }\n\n var i, dir;\n\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n } // $flow-disable-line\n\n\n return res;\n}\n\nfunction getRawDirName(dir) {\n return dir.rawName || dir.name + \".\" + Object.keys(dir.modifiers || {}).join('.');\n}\n\nfunction callHook$1(dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, \"directive \" + dir.name + \" \" + hook + \" hook\");\n }\n }\n}\n\nvar baseModules = [ref, directives];\n/* */\n\nfunction updateAttrs(oldVnode, vnode) {\n var opts = vnode.componentOptions;\n\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return;\n }\n\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return;\n }\n\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {}; // clone observed objects, as the user probably wants to mutate it\n\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n\n if (old !== cur) {\n setAttr(elm, key, cur, vnode.data.pre);\n }\n } // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n\n /* istanbul ignore if */\n\n\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr(el, key, value, isInPre) {\n if (isInPre || el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED' ? 'true' : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr(el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n\n /* istanbul ignore if */\n if (isIE && !isIE9 && el.tagName === 'TEXTAREA' && key === 'placeholder' && value !== '' && !el.__ieph) {\n var blocker = function blocker(e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n\n el.addEventListener('input', blocker); // $flow-disable-line\n\n el.__ieph = true;\n /* IE placeholder patched */\n }\n\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n/* */\n\nfunction updateClass(oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticClass) && isUndef(data.class) && (isUndef(oldData) || isUndef(oldData.staticClass) && isUndef(oldData.class))) {\n return;\n }\n\n var cls = genClassForVnode(vnode); // handle transition classes\n\n var transitionClass = el._transitionClasses;\n\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n } // set the class\n\n\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n/* */\n\n/* */\n\n/* */\n\n/* */\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\n\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n/* */\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\n\nfunction normalizeEvents(on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n } // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n\n /* istanbul ignore if */\n\n\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1(event, handler, capture) {\n var _target = target$1; // save current target element in closure\n\n return function onceHandler() {\n var res = handler.apply(null, arguments);\n\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n };\n} // #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\n\n\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1(name, handler, capture, passive) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n\n handler = original._wrapper = function (e) {\n if ( // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget || // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp || // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 || // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document) {\n return original.apply(this, arguments);\n }\n };\n }\n\n target$1.addEventListener(name, handler, supportsPassive ? {\n capture: capture,\n passive: passive\n } : capture);\n}\n\nfunction remove$2(name, handler, capture, _target) {\n (_target || target$1).removeEventListener(name, handler._wrapper || handler, capture);\n}\n\nfunction updateDOMListeners(oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return;\n }\n\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps(oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return;\n }\n\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {}; // clone observed objects, as the user probably wants to mutate it\n\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key]; // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) {\n vnode.children.length = 0;\n }\n\n if (cur === oldProps[key]) {\n continue;\n } // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n\n\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur; // avoid resetting cursor position when value is the same\n\n var strCur = isUndef(cur) ? '' : String(cur);\n\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if ( // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecessary `checked` update.\n cur !== oldProps[key]) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n} // check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue(elm, checkVal) {\n return !elm.composing && (elm.tagName === 'OPTION' || isNotInFocusAndDirty(elm, checkVal) || isDirtyWithModifiers(elm, checkVal));\n}\n\nfunction isNotInFocusAndDirty(elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true; // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n\n try {\n notInFocus = document.activeElement !== elm;\n } catch (e) {}\n\n return notInFocus && elm.value !== checkVal;\n}\n\nfunction isDirtyWithModifiers(elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal);\n }\n\n if (modifiers.trim) {\n return value.trim() !== newVal.trim();\n }\n }\n\n return value !== newVal;\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res;\n}); // merge static and dynamic style data on the same vnode\n\nfunction normalizeStyleData(data) {\n var style = normalizeStyleBinding(data.style); // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n\n return data.staticStyle ? extend(data.staticStyle, style) : style;\n} // normalize possible array / string values into Object\n\n\nfunction normalizeStyleBinding(bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle);\n }\n\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle);\n }\n\n return bindingStyle;\n}\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\n\n\nfunction getStyle(vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n\n if (childNode && childNode.data && (styleData = normalizeStyleData(childNode.data))) {\n extend(res, styleData);\n }\n }\n }\n\n if (styleData = normalizeStyleData(vnode.data)) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n\n while (parentNode = parentNode.parent) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n\n return res;\n}\n/* */\n\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\n\nvar setProp = function setProp(el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n\n if (prop !== 'filter' && prop in emptyStyle) {\n return prop;\n }\n\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n\n if (name in emptyStyle) {\n return name;\n }\n }\n});\n\nfunction updateStyle(oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) && isUndef(oldData.staticStyle) && isUndef(oldData.style)) {\n return;\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {}; // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n\n var oldStyle = oldStaticStyle || oldStyleBinding;\n var style = normalizeStyleBinding(vnode.data.style) || {}; // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n\n vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style;\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n\n for (name in newStyle) {\n cur = newStyle[name];\n\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n/* */\n\nvar whitespaceRE = /\\s+/;\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\n\nfunction addClass(el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return;\n }\n /* istanbul ignore else */\n\n\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) {\n return el.classList.add(c);\n });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\n\n\nfunction removeClass(el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return;\n }\n /* istanbul ignore else */\n\n\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) {\n return el.classList.remove(c);\n });\n } else {\n el.classList.remove(cls);\n }\n\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n\n cur = cur.trim();\n\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n/* */\n\n\nfunction resolveTransition(def$$1) {\n if (!def$$1) {\n return;\n }\n /* istanbul ignore else */\n\n\n if (_typeof(def$$1) === 'object') {\n var res = {};\n\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n\n extend(res, def$$1);\n return res;\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1);\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: name + \"-enter\",\n enterToClass: name + \"-enter-to\",\n enterActiveClass: name + \"-enter-active\",\n leaveClass: name + \"-leave\",\n leaveToClass: name + \"-leave-to\",\n leaveActiveClass: name + \"-leave-active\"\n };\n});\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation'; // Transition property/event sniffing\n\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\n\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n\n if (window.onanimationend === undefined && window.onwebkitanimationend !== undefined) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n} // binding to window is necessary to make hot reload work in IE in strict mode\n\n\nvar raf = inBrowser ? window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : setTimeout :\n/* istanbul ignore next */\nfunction (fn) {\n return fn();\n};\n\nfunction nextFrame(fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass(el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass(el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds(el, expectedType, cb) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n\n if (!type) {\n return cb();\n }\n\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n\n var end = function end() {\n el.removeEventListener(event, onEnd);\n cb();\n };\n\n var onEnd = function onEnd(e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo(el, expectedType) {\n var styles = window.getComputedStyle(el); // JSDOM may return undefined for transition properties\n\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n }\n\n var hasTransform = type === TRANSITION && transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n };\n}\n\nfunction getTimeout(delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i]);\n }));\n} // Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\n\n\nfunction toMs(s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000;\n}\n/* */\n\n\nfunction enter(vnode, toggleDisplay) {\n var el = vnode.elm; // call leave callback now\n\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n\n if (isUndef(data)) {\n return;\n }\n /* istanbul ignore if */\n\n\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return;\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration; // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return;\n }\n\n var startClass = isAppear && appearClass ? appearClass : enterClass;\n var activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass;\n var toClass = isAppear && appearToClass ? appearToClass : enterToClass;\n var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter;\n var enterHook = isAppear ? typeof appear === 'function' ? appear : enter : enter;\n var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter;\n var enterCancelledHook = isAppear ? appearCancelled || enterCancelled : enterCancelled;\n var explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration);\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n\n if (pendingNode && pendingNode.tag === vnode.tag && pendingNode.elm._leaveCb) {\n pendingNode.elm._leaveCb();\n }\n\n enterHook && enterHook(el, cb);\n });\n } // start enter transition\n\n\n beforeEnterHook && beforeEnterHook(el);\n\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave(vnode, rm) {\n var el = vnode.elm; // call enter callback now\n\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n\n if (isUndef(data) || el.nodeType !== 1) {\n return rm();\n }\n /* istanbul ignore if */\n\n\n if (isDef(el._leaveCb)) {\n return;\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n var explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration);\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave() {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return;\n } // record leaving element\n\n\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] = vnode;\n }\n\n beforeLeave && beforeLeave(el);\n\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n leave && leave(el, cb);\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n} // only used in dev mode\n\n\nfunction checkDuration(val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\"<transition> explicit \" + name + \" duration is not a valid number - \" + \"got \" + JSON.stringify(val) + \".\", vnode.context);\n } else if (isNaN(val)) {\n warn(\"<transition> explicit \" + name + \" duration is NaN - \" + 'the duration expression might be incorrect.', vnode.context);\n }\n}\n\nfunction isValidDuration(val) {\n return typeof val === 'number' && !isNaN(val);\n}\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\n\n\nfunction getHookArgumentsLength(fn) {\n if (isUndef(fn)) {\n return false;\n }\n\n var invokerFns = fn.fns;\n\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns);\n } else {\n return (fn._length || fn.length) > 1;\n }\n}\n\nfunction _enter(_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1(vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\nvar platformModules = [attrs, klass, events, domProps, style, transition];\n/* */\n// the directive module should be applied last, after all\n// built-in modules have been applied.\n\nvar modules = platformModules.concat(baseModules);\nvar patch = createPatchFunction({\n nodeOps: nodeOps,\n modules: modules\n});\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\n\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted(el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd); // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n componentUpdated: function componentUpdated(el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context); // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n\n if (curOptions.some(function (o, i) {\n return !looseEqual(o, prevOptions[i]);\n })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple ? binding.value.some(function (v) {\n return hasNoMatchingOption(v, curOptions);\n }) : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected(el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected(el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\"<select multiple v-model=\\\"\" + binding.expression + \"\\\"> \" + \"expects an Array value for its binding, but got \" + Object.prototype.toString.call(value).slice(8, -1), vm);\n return;\n }\n\n var selected, option;\n\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n\n return;\n }\n }\n }\n\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption(value, options) {\n return options.every(function (o) {\n return !looseEqual(o, value);\n });\n}\n\nfunction getValue(option) {\n return '_value' in option ? option._value : option.value;\n}\n\nfunction onCompositionStart(e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd(e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) {\n return;\n }\n\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger(el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n/* */\n// recursively search for possible transition defined inside the component root\n\n\nfunction locateNode(vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition) ? locateNode(vnode.componentInstance._vnode) : vnode;\n}\n\nvar show = {\n bind: function bind(el, ref, vnode) {\n var value = ref.value;\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay = el.style.display === 'none' ? '' : el.style.display;\n\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n update: function update(el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n /* istanbul ignore if */\n\n if (!value === !oldValue) {\n return;\n }\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n\n if (transition$$1) {\n vnode.data.show = true;\n\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n unbind: function unbind(el, binding, vnode, oldVnode, isDestroy) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\nvar platformDirectives = {\n model: directive,\n show: show\n};\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n}; // in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\n\nfunction getRealChild(vnode) {\n var compOptions = vnode && vnode.componentOptions;\n\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children));\n } else {\n return vnode;\n }\n}\n\nfunction extractTransitionData(comp) {\n var data = {};\n var options = comp.$options; // props\n\n for (var key in options.propsData) {\n data[key] = comp[key];\n } // events.\n // extract listeners and pass them directly to the transition methods\n\n\n var listeners = options._parentListeners;\n\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n\n return data;\n}\n\nfunction placeholder(h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n });\n }\n}\n\nfunction hasParentTransition(vnode) {\n while (vnode = vnode.parent) {\n if (vnode.data.transition) {\n return true;\n }\n }\n}\n\nfunction isSameChild(child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag;\n}\n\nvar isNotTextNode = function isNotTextNode(c) {\n return c.tag || isAsyncPlaceholder(c);\n};\n\nvar isVShowDirective = function isVShowDirective(d) {\n return d.name === 'show';\n};\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n render: function render(h) {\n var this$1 = this;\n var children = this.$slots.default;\n\n if (!children) {\n return;\n } // filter out text nodes (possible whitespaces)\n\n\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n\n if (!children.length) {\n return;\n } // warn multiple elements\n\n\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn('<transition> can only be used on a single element. Use ' + '<transition-group> for lists.', this.$parent);\n }\n\n var mode = this.mode; // warn invalid mode\n\n if (process.env.NODE_ENV !== 'production' && mode && mode !== 'in-out' && mode !== 'out-in') {\n warn('invalid <transition> mode: ' + mode, this.$parent);\n }\n\n var rawChild = children[0]; // if this is a component root node and the component's\n // parent container node also has transition, skip.\n\n if (hasParentTransition(this.$vnode)) {\n return rawChild;\n } // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n\n\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n\n if (!child) {\n return rawChild;\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild);\n } // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n\n\n var id = \"__transition-\" + this._uid + \"-\";\n child.key = child.key == null ? child.isComment ? id + 'comment' : id + child.tag : isPrimitive(child.key) ? String(child.key).indexOf(id) === 0 ? child.key : id + child.key : child.key;\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild); // mark v-show\n // so that the transition module can hand over the control to the directive\n\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (oldChild && oldChild.data && !isSameChild(child, oldChild) && !isAsyncPlaceholder(oldChild) && // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data); // handle transition mode\n\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild);\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild;\n }\n\n var delayedLeave;\n\n var performLeave = function performLeave() {\n delayedLeave();\n };\n\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) {\n delayedLeave = leave;\n });\n }\n }\n\n return rawChild;\n }\n};\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\ndelete props.mode;\nvar TransitionGroup = {\n props: props,\n beforeMount: function beforeMount() {\n var this$1 = this;\n var update = this._update;\n\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1); // force removing pass\n\n this$1.__patch__(this$1._vnode, this$1.kept, false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n render: function render(h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c;\n (c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? opts.Ctor.options.name || opts.tag || '' : c.tag;\n warn(\"<transition-group> children must be keyed: <\" + name + \">\");\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children);\n },\n updated: function updated() {\n var children = this.prevChildren;\n var moveClass = this.moveClass || (this.name || 'v') + '-move';\n\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return;\n } // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n\n\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation); // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n\n this._reflow = document.body.offsetHeight;\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb(e) {\n if (e && e.target !== el) {\n return;\n }\n\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n methods: {\n hasMove: function hasMove(el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false;\n }\n /* istanbul ignore if */\n\n\n if (this._hasMove) {\n return this._hasMove;\n } // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n\n\n var clone = el.cloneNode();\n\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) {\n removeClass(clone, cls);\n });\n }\n\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return this._hasMove = info.hasTransform;\n }\n }\n};\n\nfunction callPendingCbs(c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n\n\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition(c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation(c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n/* */\n// install platform specific utils\n\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement; // install platform runtime directives & components\n\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents); // install platform patch function\n\nVue.prototype.__patch__ = inBrowser ? patch : noop; // public mount method\n\nVue.prototype.$mount = function (el, hydrating) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating);\n}; // devtools global hook\n\n/* istanbul ignore next */\n\n\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {\n console[console.info ? 'info' : 'log']('Download the Vue Devtools extension for a better development experience:\\n' + 'https://github.com/vuejs/vue-devtools');\n }\n }\n\n if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' && config.productionTip !== false && typeof console !== 'undefined') {\n console[console.info ? 'info' : 'log'](\"You are running Vue in development mode.\\n\" + \"Make sure to turn on production mode when deploying for production.\\n\" + \"See more tips at https://vuejs.org/guide/deployment.html\");\n }\n }, 0);\n}\n/* */\n\n\nexport default Vue;","import ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n static targets = ['info', 'noAuto'];\n\n initialize() {\n this.index = 0;\n this.items = 3;\n }\n\n connect() {\n this.startCarousel();\n }\n\n disconnect() {\n this.stopCarousel();\n }\n\n startCarousel() {\n if (this.noAutoTargets.length === 0) {\n this.showNextDiv();\n this.interval = setInterval(() => {\n this.showNextDiv();\n }, 6000);\n }\n }\n\n stopCarousel() {\n clearInterval(this.interval);\n }\n\n next() {\n this.showNextDiv();\n }\n\n show(event) {\n this.stopCarousel();\n this.infoTargets.forEach((element, index) => {\n const svg = document.getElementById(`icon${index}`);\n let paths = null;\n if (svg) {\n paths = svg.querySelectorAll('path');\n }\n if (index.toString() === event.params.id.toString()) {\n element.classList.remove('d-none');\n if (paths) {\n paths.forEach((path) => {\n path.style.stroke = '#2da3dc';\n });\n }\n } else {\n element.classList.add('d-none');\n if (paths) {\n paths.forEach((path) => {\n path.style.stroke = '#b9e5fb';\n });\n }\n }\n });\n }\n\n hide() {\n this.infoTargets.forEach((element, index) => {\n element.classList.add('d-none');\n });\n this.startCarousel();\n }\n\n showNextDiv() {\n this.index = (this.index + 1) % this.infoTargets.length;\n this.updateVisibleDiv();\n }\n\n updateVisibleDiv() {\n this.infoTargets.forEach((element, index) => {\n const svg = document.getElementById(`icon${index}`);\n let paths = null;\n if (svg) {\n paths = svg.querySelectorAll('path');\n }\n if (index === this.index) {\n element.classList.remove('d-none');\n if (paths) {\n paths.forEach((path) => {\n path.style.stroke = '#2da3dc';\n });\n }\n } else {\n element.classList.add('d-none');\n if (paths) {\n paths.forEach((path) => {\n path.style.stroke = '#b9e5fb';\n });\n }\n }\n });\n }\n}\n","import ApplicationController from './application_controller';\nimport { closeOnEsc } from '../lib/helpers';\n\n/**\n *\n * This controls the navigation component use to go through landing pages.\n *\n * @controller landing-page-nav\n *\n */\nexport default class extends ApplicationController {\n initialize() {\n this.show = false;\n this.toggleRunning = false;\n }\n\n /**\n *\n * Listen's for clicks both inside the menu (Stop the event from triggering) and outside,\n * to trigger a close of the menu.\n * @function toggleMenu\n * @param {*} event\n *\n */\n connect() {\n const floatingMenu = document.getElementById('floating-menu');\n const navBtnClosed = document.getElementById('nav-button-closed');\n const navBtnOpen = document.getElementById('nav-button-open');\n\n closeOnEsc(closeMenu);\n\n window.addEventListener('click', () => {\n if (!this.show && this.toggleRunning) return;\n closeMenu();\n this.show = false;\n });\n floatingMenu.addEventListener('click', (event) => {\n event.stopPropagation();\n });\n\n function closeMenu() {\n floatingMenu.classList.add('d-none');\n navBtnClosed.classList.remove('d-none');\n navBtnOpen.classList.add('d-none');\n }\n }\n\n /**\n *\n * Shows the menu\n * @function toggleMenu\n * @param {*} event\n *\n */\n toggleMenu() {\n this.toggleRunning = true;\n\n const floatingMenu = document.getElementById('floating-menu');\n const navBtnClosed = document.getElementById('nav-button-closed');\n const navBtnOpen = document.getElementById('nav-button-open');\n\n if (floatingMenu.classList.contains('d-none')) {\n floatingMenu.classList.remove('d-none');\n navBtnClosed.classList.add('d-none');\n navBtnOpen.classList.remove('d-none');\n\n setTimeout(() => {\n this.show = true;\n this.toggleRunning = false;\n }, 200);\n }\n }\n}\n","import ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n static targets = ['controlledIcon', 'controlledButtons', 'controlledValues'];\n\n toggleAddOn = (event) => {\n const element = event.target;\n this.iconToggle(!element.classList.contains('bi-toggle-on'), element.classList);\n\n let normal,\n flexible,\n therapy_tools,\n teletherapy = false;\n\n this.controlledIconTargets.forEach((elem) => {\n if (elem.dataset.controlledIcon === 'therapy_tools' && elem.classList.contains('bi-toggle-on'))\n therapy_tools = true;\n if (elem.dataset.controlledIcon === 'teletherapy' && elem.classList.contains('bi-toggle-on'))\n teletherapy = true;\n });\n\n if (therapy_tools && teletherapy) flexible = true;\n if (!therapy_tools && !teletherapy && !flexible) normal = true;\n\n if (flexible) {\n this.processButtons('b-flexible');\n this.processValues('v-flexible');\n }\n else {\n if (therapy_tools) {\n this.processButtons('b-therapy_tools');\n this.processValues('v-therapy_tools');\n }\n else if (teletherapy) {\n this.processButtons('b-teletherapy');\n this.processValues('v-teletherapy');\n } else {\n this.processButtons('b');\n this.processValues('v');\n }\n }\n };\n\n processButtons(active) {\n this.controlledButtonsTargets.forEach((item) => {\n if (item.dataset.controlledButtons === active) {\n item.classList.remove('d-none');\n } else {\n item.classList.add('d-none');\n }\n });\n }\n\n processValues(active) {\n this.controlledValuesTargets.forEach((item) => {\n if (item.dataset.controlledValues === active) {\n item.classList.remove('d-none');\n } else {\n item.classList.add('d-none');\n }\n });\n }\n\n iconToggle(on, icon) {\n if (on) {\n icon.remove('bi-toggle-off');\n icon.add('bi-toggle-on', 'text-primary');\n } else {\n icon.remove('bi-toggle-on', 'text-primary');\n icon.add('bi-toggle-off');\n }\n }\n}\n","import ApplicationController from './application_controller';\n\n/**\n *\n * This controls the side-navigation components active index and hides/displays the relevant items\n * to the right of the navigation container.\n *\n * @controller side-nav\n * @example please look at the site_map.html.erb and the relevant controller.\n *\n */\nexport default class extends ApplicationController {\n static targets = ['controlled', 'uncontrolled'];\n static values = { index: Number, active: Boolean, hasRunFirst: Boolean };\n\n initialize() {\n this.showCurrentSlide();\n this.hasRunFirst = true;\n }\n\n /**\n *\n * Updates the active index.\n * @function changeActiveIndex\n * @param {*} event\n *\n */\n changeActiveIndex(event) {\n const element = event.target;\n this.indexValue = element.dataset.uncontrolledIndex;\n this.showCurrentSlide();\n }\n\n /**\n *\n * Loops through the related subItems of the side navigation items\n * updates relevant classes and hides/shows the relevant items\n * based on the active index.\n * @function showCurrentSlide\n *\n */\n showCurrentSlide() {\n this.uncontrolledTargets.forEach((element, index) => {\n if (this.indexValue < -1) {\n this.indexValue = 0;\n }\n if (index === 0) element.classList.add('top-item');\n\n if (element.dataset.uncontrolledActive !== undefined && !this.hasRunFirst) {\n if (element.dataset.uncontrolledActive === 'true') {\n this.indexValue = element.dataset.uncontrolledIndex;\n element.classList.add('active-btn-site-map');\n } else {\n element.classList.remove('active-btn-site-map');\n }\n } else if (index === this.indexValue) {\n element.classList.add('active-btn-site-map');\n } else {\n element.classList.remove('active-btn-site-map');\n }\n });\n\n this.controlledTargets.forEach((element, index) => {\n if (this.indexValue < -1) {\n this.indexValue = 0;\n }\n element.hidden = index !== this.indexValue;\n });\n }\n}\n","import ApplicationController from './application_controller';\n\n/**\n *\n * This controls the side-navigation components active index and hides/displays the relevant items\n * to the right of the navigation container.\n *\n * @controller side-nav\n * @example please look at the site_map.html.erb and the relevant controller.\n *\n */\nexport default class extends ApplicationController {\n static targets = ['controlled', 'uncontrolled'];\n static values = { index: String, hasRunFirst: Boolean };\n\n /**\n *\n * Updates the active index.\n * @function changeActiveIndex\n * @param {*} event\n *\n */\n changeActiveIndex(event) {\n const element = event.target;\n this.indexValue = element.dataset.uncontrolledIndex;\n this.showCurrentSlide();\n }\n\n /**\n *\n * Loops through the related subItems of the side navigation items\n * updates relevant classes and hides/shows the relevant items\n * based on the active index.\n * @function showCurrentSlide\n *\n */\n showCurrentSlide() {\n this.controlledTargets.forEach((element) => {\n if (element.dataset.controlledIndex === this.indexValue) {\n element.classList.remove('d-none');\n } else {\n element.classList.add('d-none');\n }\n });\n }\n}\n","import ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n static values = { object: String, highlight: Boolean };\n\n static classes = ['highlight'];\n\n targetSection = null;\n\n scrollIntoView(event) {\n event.preventDefault();\n const targetSectionId = event.target.href.split('#')[1];\n if (!targetSectionId) return;\n\n const targetSection = document.getElementById(targetSectionId);\n this.targetSection = targetSection;\n this.targetSection.classList.add('section-anchor');\n this.highlightTargetSection();\n targetSection.scrollIntoView(this.scrollProperty);\n }\n\n disconnect() {\n this.unregisterHighlightRemovalEvent();\n }\n\n // Private\n\n highlightTargetSection() {\n if (this.highlightValue) {\n this.targetSection.classList.add(this.targetHighlightClass);\n this.registerHighlightRemovalEvent();\n }\n }\n\n registerHighlightRemovalEvent() {\n // https://www.betterstimulus.com/events.html\n this.boundRemoveHighlight = this.removeHighlight.bind(this);\n document.addEventListener('click', this.boundRemoveHighlight);\n }\n\n unregisterHighlightRemovalEvent() {\n document.removeEventListener('click', this.boundRemoveHighlight);\n }\n\n removeHighlight(event) {\n if (!this.targetSection.contains(event.target) && !this.element.contains(event.target)) {\n this.targetSection.classList.remove(this.targetHighlightClass);\n }\n }\n\n get scrollProperty() {\n let newObject = {};\n if (this.hasObjectValue) {\n newObject = JSON.parse(this.objectValue);\n }\n\n return {\n behavior: 'smooth',\n block: 'start',\n inline: 'nearest',\n ...newObject,\n };\n }\n\n get targetHighlightClass() {\n return this.hasHighlightClass ? this.highlightClass : 'bg-info';\n }\n}\n","import consumer from './consumer';\nimport { EventBus } from '../visual-schedules/event-bus';\n\nexport default class VisualScheduleChannel {\n constructor(options = {}) {\n this.sessionId = options.sessionId; // Either a room_session ID or one generated that\n this.store = options.store; // Vuex store\n this.channel = null;\n }\n\n init = async () => {\n await this.createSubscription();\n }\n\n createSubscription = () => {\n const {\n sessionId, store,\n } = this;\n\n this.channel = consumer.subscriptions.create({\n channel: 'VisualScheduleChannel',\n visual_schedule: `visual_schedule_${sessionId}`,\n }, {\n connected() {\n // Called when the subscription is ready for use on the server\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n if (this.channel) this.channel.unsubscribe();\n },\n\n received(data) {\n // Do nothing if it's the schedule owner\n if (store.state.visitor.id === data.id) return;\n\n if (data.type === 'update_visual_schedule') {\n const visualSchedule = { ...store.state.visualSchedule };\n data.visualSchedule.staticRevealer = visualSchedule.staticRevealer;\n store.commit('setVisualSchedule', data.visualSchedule);\n } else if (data.type === 'update_image_revealer') {\n const visualSchedule = { ...store.state.visualSchedule };\n visualSchedule.staticRevealer = data.staticRevealer;\n store.commit('setVisualSchedule', visualSchedule);\n } else if (data.type === 'timer_start') {\n EventBus.$emit('timer-state', true);\n } else if (data.type === 'paused') {\n EventBus.$emit('timer-state', false);\n } else if (data.type === 'timer_reset') {\n EventBus.$emit('timer-reset');\n } else if (data.type === 'timer_duration') {\n EventBus.$emit('timer-duration', data.value);\n }\n },\n });\n }\n}\n","import { Datepicker } from 'vanillajs-datepicker';\n\n// make sure not to make additional dropdowns\nconst removeExisting = () => {\n const existing = document.querySelectorAll('.datepicker.datepicker-dropdown');\n existing.forEach((dropdown) => dropdown.remove());\n};\n\nconst initializeDatepickers = () => {\n const datepickers = document.querySelectorAll('[data-datepicker]');\n if (datepickers.length) {\n removeExisting(datepickers);\n const sharedOptions = {\n buttonClass: 'btn',\n format: 'y-mm-dd',\n };\n datepickers.forEach((input) => {\n const options = JSON.parse(input.dataset.datepicker);\n if (options.maxDate === 'today') options.maxDate = new Date();\n const combinedOptions = { ...sharedOptions, ...options };\n const dp = new Datepicker(input, combinedOptions);\n });\n }\n};\n\nexport default initializeDatepickers;\n","/* eslint-disable class-methods-use-this */\n\nconst createPromise = (getValue) =>\n new Promise((resolve, reject) => {\n try {\n const value = getValue();\n resolve(value);\n } catch (err) {\n reject(err);\n }\n });\n\nexport default class AsyncLocalStorage {\n getItem(key) {\n return createPromise(() => window.localStorage.getItem(key));\n }\n\n setItem(key, value) {\n return createPromise(() => window.localStorage.setItem(key, value));\n }\n\n removeItem(key) {\n return createPromise(() => window.localStorage.removeItem(key));\n }\n}\n","// This class creates a general action cable channel\n// for teletherapy participants\nimport VisualScheduleChannel from '../../channels/visual_schedule_channel';\n\nexport default class VisualScheduleChannelCreator {\n constructor(options = {}) {\n this.store = options.store;\n this.sessionId = options.sessionId;\n }\n\n createChannel = async () => {\n const dataChannel = new VisualScheduleChannel({\n store: this.store,\n sessionId: this.sessionId,\n });\n await dataChannel.init().then(() => {\n this.store.commit('storeVisualScheduleChannel', dataChannel.channel);\n });\n }\n}\n","import { ElementObserver } from '@ambiki/impulse';\n\n/**\n * @param {number} height - The height of the wrapping element\n * @param {number} width - The width of the wrapping element\n * @param {number} x - Left offset / width of the mouse pointer\n * @param {number} y - Top offset / height of the mouse pointer\n */\n// eslint-disable-next-line\nexport function safeRegion({ height, width, x, y }) {\n const positions = {};\n const leftOffset = x * width;\n const topOffset = y * height;\n\n const isPositionBottom = height - topOffset > topOffset;\n positions.bottom = isPositionBottom;\n positions.top = !isPositionBottom;\n\n const isPositionRight = width - leftOffset > leftOffset;\n positions.right = isPositionRight;\n positions.left = !isPositionRight;\n\n return positions;\n}\n\n/**\n * @param {Event} event\n */\nexport function cancel(event) {\n event.preventDefault();\n event.stopPropagation();\n}\n\n/**\n * @typedef {Object} Point\n * @property {number} left - The x-coordinate\n * @property {number} top - The y-coordinate\n * @param {HTMLElement} element\n * @return {Point}\n */\nexport function getScrollLeftTop(element) {\n let left = 0;\n let top = 0;\n const docElement = document.documentElement;\n const body = document.body || { scrollLeft: 0, scrollTop: 0 };\n\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n while (element && (element.parentNode || element.host)) {\n // Set element to element parent, or 'host' in case of ShadowDOM\n // eslint-disable-next-line no-param-reassign\n element = element.parentNode || element.host;\n\n if (element === document) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n } else {\n left += element.scrollLeft || 0;\n top += element.scrollTop || 0;\n }\n\n if (element.nodeType === 1 && element.style.position === 'fixed') break;\n }\n\n return {\n left,\n top,\n };\n}\n\n/**\n * @typedef {Object} Point\n * @property {number} left - The x-coordinate\n * @property {number} top - The y-coordinate\n * @param {HTMLElement} element\n * @return {Point}\n */\nexport function getElementOffset(element) {\n const doc = element && element.ownerDocument;\n let box = { left: 0, top: 0 };\n const offset = { left: 0, top: 0 };\n const offsetAttributes = {\n borderLeftWidth: 'left',\n borderTopWidth: 'top',\n paddingLeft: 'left',\n paddingTop: 'top',\n };\n\n if (!doc) return offset;\n\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (const attr in offsetAttributes) {\n offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0;\n }\n\n const docElem = doc.documentElement;\n if (typeof element.getBoundingClientRect !== 'undefined') {\n box = element.getBoundingClientRect();\n }\n\n const scrollLeftTop = getScrollLeftTop(element);\n\n return {\n left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top,\n };\n}\n\nfunction getElementStyle(element, attr) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n const style = document.defaultView.getComputedStyle(element, null);\n return style ? style[attr] : undefined;\n }\n\n let value = element.style[attr];\n if (!value && element.currentStyle) {\n value = element.currentStyle[attr];\n }\n return value;\n}\n\nexport function insertAfter(newNode, existingNode) {\n existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);\n}\n\nexport function insertBefore(newNode, existingNode) {\n existingNode.parentNode.insertBefore(newNode, existingNode);\n}\n\n/**\n * @param {HTMLElement} element\n * @return {Boolean}\n */\nexport function visible(element) {\n return (\n !element.hidden &&\n !(element instanceof HTMLInputElement && element.type === 'hidden') &&\n (element.offsetWidth > 0 || element.offsetHeight > 0)\n );\n}\n\n/**\n * @param {HTMLElement} element\n * @return {Boolean}\n */\nexport function enabled(element) {\n return !element.disabled && element.getAttribute('aria-disabled') !== 'true';\n}\n\n/**\n * @param {HTMLElement} element\n * @return {Boolean}\n */\nexport function focusable(element) {\n return element.tabIndex >= 0 && !element.disabled && visible(element);\n}\n\n/**\n * @description Initializes the `offsetHeight` of the element. Generally used when the element is transitioning.\n * @param {HTMLElement} element\n */\nexport function reflow(element) {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight;\n}\n\n/**\n * @param {String} selector\n * @param {Object} options\n * @param {Function} options.connected - Called when the element is connected to the DOM.\n * @param {Function} options.disconnected - Called when the element is disconnected from the DOM.\n *\n * @description Observes the DOM for elements that match the selector.\n *\n * @example\n *\n * observe('[data-toggle=\"tooltip\"]', {\n * // Called when the element is connected to the DOM.\n * connected(element) {\n * $(element).tooltip();\n * },\n *\n * // Called when the element is disconnected from the DOM.\n * disconnected(element) {\n * $(element).tooltip('dispose');\n * },\n * });\n */\nexport function observe(selector, options = {}) {\n class Delegate {\n elementConnected(element) {\n options.connected?.(element);\n }\n\n elementDisconnected(element) {\n options.disconnected?.(element);\n }\n\n getMatchingElements(element) {\n if (element instanceof Element) {\n const elements = Array.from(element.querySelectorAll(selector));\n if (element.hasAttribute(selector)) {\n elements.unshift(element);\n }\n return elements;\n }\n }\n }\n\n const delegate = new Delegate();\n const observer = new ElementObserver(document.documentElement, delegate, { attributeFilter: [selector] });\n observer.start();\n}\n\n/**\n * @description Returns the `content` of the `meta` tag found in `head`\n * @param {string} name\n * @returns {string | null}\n */\nexport function metaValue(name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n return element && element.getAttribute('content');\n}\n","import { onDropdownClose } from 'helpers/selectize_helpers';\nimport axios from 'axios';\n\nexport default class DiagnosisCodes {\n constructor() {\n this.diagnosisCodeAlertMap = [];\n this.registerExistingSelectComponents();\n this.registerDeleteItem();\n this.injectDisciplineAddFieldEvent();\n this.toggleDisciplineEvent();\n this.toggleDiscipline();\n this.formSubmitCleanUp();\n }\n\n static domControl = [\n {\n regex: /F84.0/i,\n childId: 'autism-alert',\n alertType: 'autism-alert',\n },\n {\n regex: /F80.9|H91.90|H90.5|R63.30/i,\n childId: 'non-specific-alert',\n alertType: 'non-specific-alert',\n },\n {\n regex: /Medical/i,\n childId: 'medical-code-present',\n alertType: 'medical-code-present',\n },\n {\n regex: /Treatment/i,\n childId: 'treatment-code-present',\n alertType: 'treatment-code-present',\n },\n {\n regex: /^F\\d+(\\.\\d+)?/i,\n childId: 'medical-code-violation',\n alertType: 'medical-code-violation',\n },\n {\n regex: /^R\\d+(\\.\\d+)?/i,\n childId: 'medical-code-violation',\n alertType: 'medical-code-violation',\n },\n ];\n\n /**\n * Removes hidden fields from a discipline change and ensure all fields are filled in. If not an error message is shown.\n *\n * @function formSubmitCleanUp\n * @return void\n */\n formSubmitCleanUp() {\n const submitButton = document.querySelector('#form-buttons-target button[type=submit]');\n if (!submitButton) return;\n submitButton.addEventListener('click', (event) => {\n let emptyFields = 0;\n const selectElements = document.querySelectorAll(\n 'div.form-group.patients-diagnosis-code:not(.deleted):not(.hidden)'\n );\n if (!selectElements) return;\n\n selectElements.forEach((element) => {\n const selectComplete = element.querySelectorAll('awc-autocomplete');\n if (!selectElements) return;\n\n selectComplete.forEach((select) => {\n if (select.input.value === '') {\n // eslint-disable-next-line no-plusplus\n emptyFields++;\n }\n });\n });\n\n if (emptyFields !== 0) {\n const error = document.getElementById('addCodeError');\n error.classList.remove('hidden');\n event.preventDefault();\n } else {\n const error = document.getElementById('addCodeError');\n error.classList.add('hidden');\n\n const elements = document.querySelectorAll('div.form-group.patients-diagnosis-code');\n elements.forEach((deleteElement) => {\n if (deleteElement.classList.contains('hidden') && !deleteElement.classList.contains('deleted')) {\n deleteElement.remove();\n }\n });\n }\n });\n }\n\n /**\n * Event listener to toggle the feilds when the discipline changes.\n *\n * @function toggleDisciplineEvent\n * @return void\n */\n toggleDisciplineEvent() {\n const autoComplete = document.querySelector('auto-complete.discipline-selector');\n if (!autoComplete) return;\n autoComplete.addEventListener('click', (event) => {\n this.toggleDiscipline();\n });\n }\n\n /**\n * Toggles the visibility of the of the form fields depending on the select discipline.\n * This function is used by toggleDisciplineEvent and get's called on initial load.\n *\n * @function toggleDiscipline\n * @reutrn void\n */\n toggleDiscipline() {\n const autoComplete = document.querySelector('auto-complete.discipline-selector');\n if (!autoComplete) return;\n\n const disciplineId = autoComplete.querySelector('input[type=\"hidden\"]').value;\n if (!disciplineId) return;\n\n const diagComponents = document.querySelectorAll('div.patients-diagnosis-code');\n if (!diagComponents) return;\n diagComponents.forEach((diagElement) => {\n diagElement.classList.add('hidden');\n });\n\n const fieldsetElements = document.querySelectorAll(`fieldset.nested-fields.discipline-${disciplineId}`);\n fieldsetElements.forEach((fieldset) => {\n const target = fieldset.parentElement;\n target.classList.remove('hidden');\n const formInput = target.querySelector('input.destroy');\n if (!formInput) return;\n formInput.value = 'false';\n });\n }\n\n /**\n * Listens for new fields being added to the DOM. Once added we replace the discipline placeholders with the current\n * selected discipline.\n *\n * @function injectDisciplineAddFieldEvent\n * @return void\n */\n injectDisciplineAddFieldEvent() {\n document.addEventListener('click', (event) => {\n if (['add_fields', 'patients_diagnosis_codes'].every((klass) => event.target.classList.contains(klass))) {\n const element = document.querySelector('auto-complete.discipline-selector');\n if (!element || element.offsetParent === null) return;\n\n const disciplineId = element.querySelector('input[type=\"hidden\"]').value;\n if (!disciplineId) return;\n\n setTimeout(() => {\n const fieldsetElements = document.querySelectorAll('fieldset.discipline---discipline---');\n fieldsetElements.forEach((fieldset) => {\n fieldset.classList.add(`discipline-${disciplineId}`);\n fieldset.classList.remove('discipline---discipline---');\n });\n\n const inputElements = document.querySelectorAll('input.discipline---discipline---');\n inputElements.forEach((input) => {\n input.classList.remove('discipline---discipline---');\n input.value = disciplineId;\n });\n }, 100);\n }\n });\n }\n\n /**\n * Listens for click events to the trash button. Once triggered we add the necessary classes and trigger an event for\n * a clean up of the in memory alert IDs and UI alerts.\n *\n * @function registerDeleteItem\n * @return void\n */\n registerDeleteItem() {\n document.addEventListener('click', (event) => {\n const container = event.target.parentElement;\n\n if (container.classList.contains('trash-row')) {\n const parent = container.closest('div.form-group.patients-diagnosis-code');\n if (!parent) return;\n\n const selectedComponent = container.closest('.nested-fields');\n if (!selectedComponent) return;\n\n // We need to remove the required attribute from the component otherwise the form will be invalid.\n [...selectedComponent.querySelectorAll('awc-autocomplete')].forEach((element) => {\n element.required = false;\n });\n\n const selectedAlertId = selectedComponent.querySelectorAll('[alert-id]');\n if (!selectedAlertId) return;\n\n const alertIds = [];\n selectedAlertId.forEach((element) => {\n alertIds.push(element.getAttribute('alert-id'));\n });\n\n const deleteClicked = new CustomEvent('deleteClicked', {\n detail: {\n alertIds,\n },\n });\n\n parent.classList.add('hidden', 'deleted');\n document.dispatchEvent(deleteClicked);\n\n const formInput = parent.querySelector('input.destroy');\n if (!formInput) return;\n formInput.value = 'true';\n }\n });\n }\n\n /**\n * Finds all instances of diagnosis code select components and performs\n * related functions.\n * @function registerExistingSelectComponents\n */\n registerExistingSelectComponents() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const classThis = this;\n\n $('.select.diagnosis-code-select').each((index, select) => {\n if (!$(select).hasClass('selectized')) {\n classThis.addNewDiagnosisSelectComponent(select);\n }\n });\n\n const existingAutocompleteElements = document.querySelectorAll('awc-autocomplete');\n existingAutocompleteElements.forEach((awc) => {\n setTimeout(() => {\n this.controlLoop(awc.input.value, awc).handleRemove(awc, false).checkCodeCombinations();\n }, 600);\n });\n\n document.addEventListener('awc-autocomplete:commit', (event) => {\n const parent = event.detail.target.closest('awc-autocomplete');\n this.controlLoop(event.detail.target.querySelector('span').textContent, parent)\n .handleRemove(parent, false)\n .checkCodeCombinations();\n });\n\n document.addEventListener('deleteClicked', (event) => {\n this.hardDelete(event.detail.alertIds).checkCodeCombinations();\n });\n\n this.diagnosisCodesValidation();\n this.checkCodeCombinations();\n\n $('#hide-forever').on('click', (e) => {\n e.preventDefault();\n try {\n axios.put('/settings', {\n user: {\n hide_autism_validation: true,\n },\n });\n $('#hide-forever-container').remove();\n } catch (error) {\n console.error(error);\n }\n });\n }\n\n /**\n * Instantiates selectize for our select components.\n * @function addNewDiagnosisSelectComponent\n * @param selectizeDiagnosisCode\n * @returns {*}\n */\n addNewDiagnosisSelectComponent(selectizeDiagnosisCode) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const parentScope = this;\n\n $(selectizeDiagnosisCode).selectize({\n valueField: 'id',\n labelField: 'name',\n searchField: 'name',\n placeholder: 'Start typing to search for a diagnosis code...',\n options: [],\n create: false,\n onDropdownClose,\n // eslint-disable-next-line consistent-return\n load(query, callback) {\n if (!query.length) return callback();\n $.ajax({\n url: '/api/v2/diagnosis-codes',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success(res) {\n callback(res);\n },\n });\n },\n onChange(value) {\n parentScope.onChangeHandler(this);\n },\n });\n }\n\n /**\n * Handles the change event.\n * @function onChangeHandler\n * @param selectize - The instance of selectize\n */\n onChangeHandler(selectize) {\n const select = selectize.$input[0];\n const diagnosisCodeText = select.querySelector('option[selected=\"selected\"]').textContent.toString();\n\n this.controlLoop(diagnosisCodeText, select).handleRemove(selectize, true).checkCodeCombinations();\n }\n\n controlLoop(diagnosisCodeText, selectHtmlElement) {\n DiagnosisCodes.domControl.forEach((regexTest) => {\n this.alertControl(regexTest, diagnosisCodeText, selectHtmlElement);\n });\n\n return this;\n }\n\n /**\n *\n * This function checks if the existing records violate any alerts.\n * When we load the components the onChange handler doesn't get triggered.\n * @function diagnosisCodesValidation\n * @returns null\n *\n */\n diagnosisCodesValidation() {\n const codes = document.querySelectorAll('.select.diagnosis-code-select');\n\n codes.forEach((selectComponent) => {\n const diagnosisCode = selectComponent.querySelector('option[selected=\"selected\"]');\n\n if (diagnosisCode) {\n const diagnosisCodeText = diagnosisCode.textContent.toString();\n\n DiagnosisCodes.domControl.forEach((regexTest) => {\n this.alertControl(regexTest, diagnosisCodeText, selectComponent);\n });\n }\n });\n }\n\n /**\n * This function checks the select component code to our regexes and\n * calls any necessary functions.\n * @function alertControl\n * @param regexTest - The dom control object.\n * @param diagnosisCodeText - The text from the select component.\n * @param selectOptionInFocus - The HTML select option.\n */\n alertControl(regexTest, diagnosisCodeText, selectHtmlElement) {\n const domChild = document.querySelectorAll(`.${regexTest.childId}`);\n\n // If we have a match we need to show the alert and preform tasks.\n if (regexTest.regex.test(diagnosisCodeText)) {\n const code = diagnosisCodeText.match(regexTest.regex);\n const domId = selectHtmlElement.getAttribute('alert-id');\n\n this.toggleClassListDisplay(domChild, 'show');\n this.setAlertId(\n selectHtmlElement,\n domId || this.generateUuid(`medical-code-present-${Math.floor(Math.random() * 100).toString()}`),\n regexTest,\n code[0],\n diagnosisCodeText,\n regexTest.alertType === 'medical-code-present',\n !!domId\n );\n }\n }\n\n /**\n * Goes through our memory store and checks if an HTML option that\n * has our alert flag has been remove from the DOM. Performs actions based on the above.\n * @function handleRemove\n */\n handleRemove(selectize, isSelectize) {\n let domId;\n let selectedText;\n\n if (isSelectize) {\n selectedText = selectize.getItem(selectize.getValue()).text();\n domId = selectize.$input[0].getAttribute('alert-id');\n } else {\n domId = selectize.getAttribute('alert-id');\n if (selectize) {\n selectedText = selectize.querySelector('input[type=\"hidden\"]').getAttribute('data-text');\n }\n }\n\n if (domId && selectedText) {\n const itemInMemory = this.diagnosisCodeAlertMap.findIndex((obj) => obj.domTarget === domId);\n if (itemInMemory !== -1 && this.diagnosisCodeAlertMap[itemInMemory].textContent !== selectedText) {\n this.diagnosisCodeAlertMap.splice(itemInMemory, 1);\n }\n }\n\n return this;\n }\n\n hardDelete(domIds) {\n domIds.forEach((id) => {\n const itemInMemory = this.diagnosisCodeAlertMap.findIndex((obj) => obj.domTarget === id);\n this.diagnosisCodeAlertMap.splice(itemInMemory, 1);\n });\n\n return this;\n }\n\n /**\n *\n * @function checkCodeCombinations\n */\n checkCodeCombinations() {\n const medicalAlert = document.querySelectorAll('.medical-code-present');\n const noMedicalCodeRCodeAlert = document.querySelectorAll('.no-medical-code-present');\n\n const medicalCode = this.diagnosisCodeAlertMap.findIndex((obj) => obj.containsMedicalCode === true);\n let fCodeWithMedical = false;\n let fCodeWithTreatment = false;\n let rCodeWithTreatment = false;\n const hasAutismAlert = this.diagnosisCodeAlertMap.findIndex((obj) => obj.code === 'F84.0');\n const hasNoSpecificAlert = this.diagnosisCodeAlertMap.filter((obj) =>\n ['F80.9', 'H91.90', 'H90.5', 'R63.30'].includes(obj.code)\n );\n\n this.toggleClassListDisplay(document.querySelectorAll('.autism-alert'), hasAutismAlert !== -1 ? 'show' : 'hide');\n this.toggleClassListDisplay(\n document.querySelectorAll('.non-specific-alert'),\n hasNoSpecificAlert.length > 0 ? 'show' : 'hide'\n );\n\n this.diagnosisCodeAlertMap.forEach((code) => {\n const focusedComponent = document.querySelector(`[alert-id=\"${code.domTarget}\"]`);\n\n if (focusedComponent) {\n const parentContainer = focusedComponent.closest('.nested-fields');\n const selectItems = parentContainer.querySelectorAll('[alert-id]');\n const domIDs = [];\n selectItems.forEach((selectItem) => {\n domIDs.push(selectItem.getAttribute('alert-id'));\n });\n\n const controlObjects = this.diagnosisCodeAlertMap.filter((obj) => domIDs.includes(obj.domTarget));\n\n const treatmentCode = controlObjects.findIndex((obj) => /^Treatment/i.test(obj.code));\n const rCode = controlObjects.findIndex((obj) => /^R\\d+/i.test(obj.code) && !/R48.2/i.test(obj.code));\n const fCode = controlObjects.findIndex((obj) => /^F\\d+/i.test(obj.code) && !/F80.0/i.test(obj.code));\n const scopeMedicalCode = controlObjects.findIndex((obj) => obj.containsMedicalCode);\n\n if (scopeMedicalCode !== -1 && fCode !== -1) fCodeWithMedical = true;\n if (treatmentCode !== -1 && fCode !== -1) fCodeWithTreatment = true;\n if (treatmentCode !== -1 && rCode !== -1) rCodeWithTreatment = true;\n }\n });\n\n if (medicalCode !== -1) {\n this.toggleClassListDisplay(medicalAlert, !rCodeWithTreatment && fCodeWithMedical ? 'show' : 'hide');\n this.toggleClassListDisplay(noMedicalCodeRCodeAlert, 'hide');\n } else {\n this.toggleClassListDisplay(noMedicalCodeRCodeAlert, !fCodeWithTreatment ? 'show' : 'hide');\n this.toggleClassListDisplay(medicalAlert, 'hide');\n }\n }\n\n setAlertId(htmlElement, newIndex, regexTest, code, textContent, isMedical, update) {\n const objectIndex = this.diagnosisCodeAlertMap.findIndex((obj) => obj.domTarget === newIndex);\n\n if (update && objectIndex !== -1) {\n this.diagnosisCodeAlertMap[objectIndex] = {\n domTarget: newIndex,\n alertType: regexTest.alertType,\n code,\n textContent,\n containsMedicalCode: isMedical,\n };\n } else {\n const mapTemplate = {\n domTarget: newIndex,\n alertType: regexTest.alertType,\n code,\n textContent,\n containsMedicalCode: isMedical,\n };\n\n // Set the index we store in memory as an attribute\n htmlElement.setAttribute('alert-id', newIndex);\n // Add our new item in memory\n this.diagnosisCodeAlertMap.push(mapTemplate);\n }\n }\n\n generateUuid(extra) {\n const now = new Date();\n return `${\n now.getHours().toString() + now.getMinutes().toString() + now.getSeconds().toString()\n }-${extra}${Math.round(performance.now())}`;\n }\n\n toggleClassListDisplay(htmlElement, type) {\n if (type === 'show') {\n htmlElement.forEach((alert) => {\n alert.classList.remove('d-none');\n });\n } else {\n htmlElement.forEach((alert) => {\n if (!alert.classList.contains('d-none')) {\n alert.classList.add('d-none');\n }\n });\n }\n }\n\n preservePlaceholder = (placeholderSelectize) => {\n const placeholder = placeholderSelectize.$input[0].getAttribute('placeholder');\n if (placeholder) {\n placeholderSelectize.$control_input[0].placeholder = placeholder;\n }\n };\n}\n","import consumer from './consumer';\nimport { EventBus } from '../rooms/event-bus';\nimport log from '../lib/logger';\n\nexport default class ReactionsChannel {\n constructor(options = {}) {\n this.roomsSessionId = options.roomsSessionId;\n this.line = options.line; // Pass in object with participant IDs\n this.store = options.store; // Vuex store\n this.channel = null;\n this.isResolved = null;\n }\n\n init = () =>\n new Promise((resolve) => {\n this.isResolved = resolve;\n this.createSubscription();\n });\n\n createSubscription() {\n const { line, roomsSessionId, store, isResolved } = this;\n\n if (line === undefined) return;\n\n this.channel = consumer.subscriptions.create(\n {\n channel: 'RoomReactionsChannel',\n room: `${roomsSessionId}_${line.value}`,\n },\n {\n connected() {\n isResolved();\n // Called when the subscription is ready for use on the server\n log.info('Reaction channel connected');\n log.debug('Reaction channel', line);\n if (store) store.dispatch('reaction/storeLine', line);\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n if (this.channel) this.channel.unsubscribe();\n },\n\n received(data) {\n log.debug('Reaction received,', data);\n if (data.type === 'reaction') {\n EventBus.$emit('show-reaction', { ...data.reaction, meta: data.meta });\n } else if (data.type === 'request_dm_line') {\n if (store.state.visitor.id !== data.id) {\n const { publicReaction } = store.state.reaction;\n if (!publicReaction) return;\n // Send a message on the public channel so other subscribers can also\n // subscribe to this direct channel\n publicReaction.send({\n type: 'dm_invitation',\n sentBy: store.state.visitor.id,\n directLine: store.state.reaction.lines.find((l) => l.value.includes(store.state.visitor.id)),\n });\n }\n } else if (data.type === 'dm_invitation') {\n const { sentBy, directLine } = data;\n if (store && !store.state.admin.testing) {\n log.info('Responding to direct reaction channel invitation');\n store.dispatch('reaction/handleDMChannelInvitation', {\n sentBy,\n directLine,\n store,\n });\n }\n }\n },\n }\n );\n }\n}\n","/* eslint-disable no-underscore-dangle */\nimport consumer from './consumer';\nimport log from '../lib/logger';\n\nexport default class RoomChat {\n constructor(options = {}) {\n this.roomsSessionId = options.roomsSessionId;\n this.line = options.line; // Pass in object with participant IDs\n this.username = options.username; // An identifier in this channel\n this.store = options.store; // Vuex store\n this.channel = null;\n }\n\n async init() {\n await this.createSubscription();\n }\n\n createSubscription() {\n const {\n line, roomsSessionId, store,\n } = this;\n\n if (line === undefined) return;\n\n this.channel = consumer.subscriptions.create({\n channel: 'RoomChatChannel',\n room: `${roomsSessionId}_${line.value}`,\n }, {\n connected() {\n // Called when the subscription is ready for use on the server\n log.info('Chat channel connected');\n log.debug('Chat channel', line);\n if (store) store.dispatch('chat/storeLine', line);\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n if (this.channel) this.channel.unsubscribe();\n },\n\n received(data) {\n // Called when there's incoming data on the websocket for this channel\n // Store message in Vuex\n if (data.type === 'message') {\n const publishedTo = `${roomsSessionId}_${line.value}`;\n if (store) {\n store.commit('chat/setActiveLine', line.value);\n store.commit('chat/storeChatMessage', {\n line: publishedTo,\n id: data.id,\n message: data.message,\n sentBy: data.sent_by,\n sentAt: data.sent_at,\n username: data.username,\n });\n }\n } else if (data.type === 'request_dm_line') {\n if (store.state.visitor.id !== data.id) {\n const { publicChat } = store.state.chat;\n if (!publicChat) return;\n // Send a message on the public channel so other subscribers can also\n // subscribe to this direct channel\n publicChat.send({\n type: 'dm_invitation',\n sentBy: store.state.visitor.id,\n directLine: store.state.chat.lines.find((l) => l.value.includes(store.state.visitor.id)),\n });\n }\n } else if (data.type === 'dm_invitation') {\n const { sentBy, directLine } = data;\n if (store && !store.state.admin.testing) {\n store.dispatch('chat/handleDMChannelInvitation', {\n sentBy, directLine, store,\n });\n }\n } else if (data.type === 'blockChatUser') {\n store.dispatch('permissions/blockChat', data.id);\n } else if (data.type === 'unBlockChatUser') {\n store.dispatch('permissions/unBlockChat', data.id);\n } else if (data.type === 'correction_received') {\n if (data.sentBy !== store.state.visitor.id) {\n store.commit('chat/storeCorrection', data.correction);\n }\n }\n },\n });\n }\n}\n","let goalPositionTracker = 1;\nlet previousString = '';\nlet defaultValueData = '';\n\nfunction setDefaultDataValue() {\n if (document.getElementById('default_value_data') !== null) {\n defaultValueData = JSON.parse(document.getElementById('default_value_data').dataset.source);\n }\n}\n\nfunction resetGoalFormPositions() {\n const elements = document.getElementsByName('goal[default_values][default][][position]');\n elements.forEach((el, i) => {\n el.value = i + 1;\n });\n}\n\nfunction getAllIndexes(arr, val) {\n const indexes = [];\n let i = -1;\n while ((i = arr.indexOf(val, i + 1)) != -1) {\n indexes.push(i);\n }\n return indexes;\n}\n\nfunction addObjectPronounGoalFormElement() {\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('object-pronoun-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Object pronoun ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'object_pronoun';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('select');\n newElementVal.classList.add('form-control');\n newElementVal.required = true;\n newElementVal.name = 'goal[default_values][default][][value]';\n\n const array = ['she', 'he', 'they'];\n const option = document.createElement('option');\n option.value = '';\n option.text = 'Select object pronoun';\n option.disabled = true;\n option.selected = true;\n newElementVal.appendChild(option);\n array.forEach((pronoun) => {\n const option2 = document.createElement('option');\n option2.value = pronoun;\n option2.text = pronoun;\n newElementVal.appendChild(option2);\n });\n\n if (defaultValueData.default) {\n let intVal;\n defaultValueData.default.forEach((d) => {\n if (d.name === 'object_pronoun') {\n intVal = d.value;\n }\n });\n if (intVal !== undefined) {\n newElementVal.value = intVal;\n }\n }\n\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPossessivePronounGoalFormElement() {\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('possessive-pronoun-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Possessive pronoun ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'possessive_pronoun';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('select');\n newElementVal.classList.add('form-control');\n newElementVal.required = true;\n newElementVal.name = 'goal[default_values][default][][value]';\n\n const array = ['her', 'his', 'their'];\n const option = document.createElement('option');\n option.value = '';\n option.text = 'Select possessive pronoun';\n option.disabled = true;\n option.selected = true;\n newElementVal.appendChild(option);\n array.forEach((pronoun) => {\n const option2 = document.createElement('option');\n option2.value = pronoun;\n option2.text = pronoun;\n newElementVal.appendChild(option2);\n });\n\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'possessive_pronoun') {\n intVal = defaultValue.value;\n }\n }\n if (intVal !== undefined) {\n newElementVal.value = intVal;\n }\n }\n\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPositionInWordGoalFormElement() {\n const position_in_words = JSON.parse(document.getElementById('position_in_word_data').dataset.source);\n\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('position-in-word-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Position in word ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'position_in_word';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('select');\n newElementVal.classList.add('form-control');\n newElementVal.required = true;\n newElementVal.name = 'goal[default_values][default][][value]';\n\n const array = position_in_words;\n var option = document.createElement('option');\n option.value = '';\n option.text = 'Select position in word';\n option.disabled = true;\n option.selected = true;\n newElementVal.appendChild(option);\n for (let i = 0; i < array.length; i += 1) {\n var option = document.createElement('option');\n option.value = array[i];\n option.text = array[i];\n newElementVal.appendChild(option);\n }\n\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'position_in_word') {\n intVal = defaultValue.value;\n }\n }\n if (intVal !== undefined) {\n newElementVal.value = intVal;\n }\n }\n\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction addTargetLevelGoalFormElement() {\n const target_levels = JSON.parse(document.getElementById('target_level_data').dataset.source);\n\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('target-level-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Target level ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'target_level';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('select');\n newElementVal.classList.add('form-control');\n newElementVal.required = true;\n newElementVal.name = 'goal[default_values][default][][value]';\n\n const array = target_levels;\n var option = document.createElement('option');\n option.value = '';\n option.text = 'Select target level';\n option.disabled = true;\n option.selected = true;\n newElementVal.appendChild(option);\n for (let i = 0; i < array.length; i += 1) {\n var option = document.createElement('option');\n option.value = array[i];\n option.text = array[i];\n newElementVal.appendChild(option);\n }\n\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'target_level') {\n intVal = defaultValue.value;\n }\n }\n if (intVal !== undefined) {\n newElementVal.value = intVal;\n }\n }\n\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction addBlendGoalFormElement() {\n const blends = JSON.parse(document.getElementById('blend_data').dataset.source);\n\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('blend-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Blend ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'blend';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('select');\n newElementVal.classList.add('form-control');\n newElementVal.required = true;\n newElementVal.name = 'goal[default_values][default][][value]';\n\n const array = blends;\n var option = document.createElement('option');\n option.value = '';\n option.text = 'Select blend';\n option.disabled = true;\n option.selected = true;\n newElementVal.appendChild(option);\n for (let i = 0; i < array.length; i += 1) {\n var option = document.createElement('option');\n option.value = array[i];\n option.text = array[i];\n newElementVal.appendChild(option);\n }\n\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'blend') {\n intVal = defaultValue.value;\n }\n }\n if (intVal !== undefined) {\n newElementVal.value = intVal;\n }\n }\n\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction addBlendGroupGoalFormElement() {\n const blendGroups = JSON.parse(document.getElementById('blend_group_data').dataset.source);\n\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('blend-group-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Blend group ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'blend_group';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('select');\n newElementVal.classList.add('form-control');\n newElementVal.required = true;\n newElementVal.name = 'goal[default_values][default][][value]';\n\n const array = blendGroups;\n var option = document.createElement('option');\n option.value = '';\n option.text = 'Select blend group';\n option.disabled = true;\n option.selected = true;\n newElementVal.appendChild(option);\n for (let i = 0; i < array.length; i += 1) {\n var option = document.createElement('option');\n option.value = array[i];\n option.text = array[i];\n newElementVal.appendChild(option);\n }\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'blend_group') {\n intVal = defaultValue.value;\n }\n }\n if (intVal !== undefined) {\n newElementVal.value = intVal;\n }\n }\n\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPhonemeCategoryGoalFormElement() {\n const phonemeCategories = JSON.parse(document.getElementById('phoneme_category_data').dataset.source);\n\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('phoneme-category-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Phoneme category ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'phoneme_category';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('select');\n newElementVal.classList.add('form-control');\n newElementVal.required = true;\n newElementVal.name = 'goal[default_values][default][][value]';\n\n const array = phonemeCategories;\n var option = document.createElement('option');\n option.value = '';\n option.text = 'Select phoneme category';\n option.disabled = true;\n option.selected = true;\n newElementVal.appendChild(option);\n for (let i = 0; i < array.length; i += 1) {\n var option = document.createElement('option');\n option.value = array[i];\n option.text = array[i];\n newElementVal.appendChild(option);\n }\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'phoneme_category') {\n intVal = defaultValue.value;\n }\n }\n if (intVal !== undefined) {\n newElementVal.value = intVal;\n }\n }\n\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPhonemeGroupGoalFormElement() {\n const phonemeGroups = JSON.parse(document.getElementById('phoneme_group_data').dataset.source);\n\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('phoneme-group-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Phoneme group ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'phoneme_group';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('select');\n newElementVal.classList.add('form-control');\n newElementVal.required = true;\n newElementVal.name = 'goal[default_values][default][][value]';\n\n const array = phonemeGroups;\n var option = document.createElement('option');\n option.value = '';\n option.text = 'Select phoneme group';\n option.disabled = true;\n option.selected = true;\n newElementVal.appendChild(option);\n for (let i = 0; i < array.length; i += 1) {\n var option = document.createElement('option');\n option.value = array[i];\n option.text = array[i];\n newElementVal.appendChild(option);\n }\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'phoneme_group') {\n intVal = defaultValue.value;\n }\n }\n if (intVal !== undefined) {\n newElementVal.value = intVal;\n }\n }\n\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPhonemeGoalFormElement() {\n const phonemes = JSON.parse(document.getElementById('phoneme_data').dataset.source);\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('phoneme-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Phoneme ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'phoneme';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('select');\n newElementVal.classList.add('form-control');\n newElementVal.required = true;\n newElementVal.name = 'goal[default_values][default][][value]';\n\n const array = phonemes;\n var option = document.createElement('option');\n option.value = '';\n option.text = 'Select phoneme';\n option.disabled = true;\n option.selected = true;\n newElementVal.appendChild(option);\n for (let i = 0; i < array.length; i += 1) {\n const optionGroup = document.createElement('optgroup');\n optionGroup.setAttribute('label', array[i][0]);\n const inner_array = array[i][1];\n for (let j = 0; j < inner_array.length; j++) {\n var option = document.createElement('option');\n option.value = inner_array[j][1];\n option.text = inner_array[j][0];\n optionGroup.appendChild(option);\n }\n newElementVal.appendChild(optionGroup);\n }\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'phoneme') {\n intVal = defaultValue.value;\n }\n }\n if (intVal !== undefined) {\n newElementVal.value = intVal;\n }\n }\n\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction addStringGoalFormElement() {\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('string-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'String ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'string') {\n intVal = defaultValue.value;\n }\n }\n if (intVal === undefined) {\n newElementName.value = 'string';\n } else {\n newElementVal.value = intVal;\n }\n } else {\n newElementName.value = 'string';\n }\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('input');\n newElementVal.setAttribute('type', 'text');\n newElementVal.setAttribute('placeholder', 'Add a default value');\n newElementVal.required = true;\n newElementVal.classList.add('form-control');\n newElementVal.name = 'goal[default_values][default][][value]';\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction addIntegerGoalFormElement() {\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('integer-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Integer ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'integer';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('input');\n newElementVal.setAttribute('type', 'number');\n newElementVal.required = true;\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'integer') {\n intVal = defaultValue.value;\n }\n }\n if (intVal === undefined) {\n newElementVal.value = 5;\n } else {\n newElementVal.value = intVal;\n }\n } else {\n newElementVal.value = 5;\n }\n newElementVal.classList.add('form-control');\n newElementVal.name = 'goal[default_values][default][][value]';\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPercentageGoalFormElement() {\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('percentage-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n const containerElementInputGroup = document.createElement('div');\n containerElementInputGroup.classList.add('input-group');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Percentage ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n containerElementInner.appendChild(containerElementInputGroup);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInputGroup.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'percentage';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInputGroup.appendChild(newElementName);\n\n const newElementVal = document.createElement('input');\n newElementVal.setAttribute('type', 'number');\n newElementVal.required = true;\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'percentage') {\n intVal = defaultValue.value;\n }\n }\n if (intVal === undefined) {\n newElementVal.value = 80;\n } else {\n newElementVal.value = intVal;\n }\n } else {\n newElementVal.value = 80;\n }\n newElementVal.classList.add('form-control');\n newElementVal.name = 'goal[default_values][default][][value]';\n containerElementInputGroup.appendChild(newElementVal);\n\n const newElementGroup = document.createElement('div');\n newElementGroup.classList.add('input-group-append');\n\n const newElementSpan = document.createElement('span');\n newElementSpan.classList.add('input-group-text');\n newElementSpan.innerHTML = '%';\n\n newElementGroup.appendChild(newElementSpan);\n containerElementInputGroup.appendChild(newElementGroup);\n}\n\nfunction addPatientNameGoalFormElement() {\n const dfElement = document.getElementById('default_fields_container');\n dfElement.classList.remove('d-none');\n\n const containerElement = document.createElement('div');\n containerElement.classList.add('form-row');\n containerElement.classList.add('flex-row');\n containerElement.classList.add('mb-2');\n containerElement.classList.add('patient-name-container');\n\n const containerElementInner = document.createElement('div');\n containerElementInner.classList.add('col-6');\n\n dfElement.appendChild(containerElement);\n containerElement.appendChild(containerElementInner);\n\n const newElementLabel = document.createElement('label');\n newElementLabel.innerHTML = 'Patient name ';\n const containerElementSpan = document.createElement('span');\n containerElementSpan.classList.add('required-field');\n containerElementSpan.innerHTML = '*';\n newElementLabel.appendChild(containerElementSpan);\n containerElementInner.appendChild(newElementLabel);\n\n const newElementPosition = document.createElement('input');\n newElementPosition.setAttribute('type', 'hidden');\n newElementPosition.value = goalPositionTracker;\n goalPositionTracker += 1;\n newElementPosition.name = 'goal[default_values][default][][position]';\n containerElementInner.appendChild(newElementPosition);\n\n const newElementName = document.createElement('input');\n newElementName.setAttribute('type', 'hidden');\n newElementName.value = 'patient_name';\n newElementName.name = 'goal[default_values][default][][name]';\n containerElementInner.appendChild(newElementName);\n\n const newElementVal = document.createElement('input');\n newElementVal.setAttribute('type', 'text');\n newElementVal.required = true;\n if (defaultValueData.default) {\n let intVal;\n for (let i = 0; i < defaultValueData.default.length; i += 1) {\n const defaultValue = defaultValueData.default[i];\n if (defaultValue.name === 'patient_name') {\n intVal = defaultValue.value;\n }\n }\n if (intVal === undefined) {\n newElementVal.value = 'Jane';\n } else {\n newElementVal.value = intVal;\n }\n } else {\n newElementVal.value = 'Jane';\n }\n newElementVal.classList.add('form-control');\n newElementVal.name = 'goal[default_values][default][][value]';\n containerElementInner.appendChild(newElementVal);\n}\n\nfunction selectAll(e) {\n const range = document.createRange();\n range.selectNode(e.target);\n window.getSelection().removeAllRanges();\n window.getSelection().addRange(range);\n}\n\nfunction setUpCustomTagListeners() {\n const customTags = document.querySelectorAll('gc-who, gc-skill ,gc-context, gc-measurable, gc-reason, gc-timeframe');\n for (let i = 0; i < customTags.length; i += 1) {\n const tag = customTags[i];\n tag.removeEventListener('click', selectAll);\n tag.addEventListener('click', selectAll);\n }\n}\n\nexport function rebuildDynamicElements() {\n if (!defaultValueData) setDefaultDataValue();\n const dfElement = document.getElementById('default_fields_container');\n while (dfElement.firstChild) {\n dfElement.removeChild(dfElement.firstChild);\n }\n const containerElement = document.createElement('h4');\n containerElement.textContent = 'Default values';\n dfElement.appendChild(containerElement);\n\n const element = document.querySelector('trix-editor');\n const trixDocument = element.editor.getDocument();\n const trixString = trixDocument.toString();\n const matches = trixString.match(/{{[^{]*}}/g);\n\n if (matches !== null) {\n for (let i = 0; i < matches.length; i += 1) {\n if (matches[i] === '{{patient_name}}') {\n addPatientNameGoalFormElement();\n } else if (matches[i] === '{{percentage}}') {\n addPercentageGoalFormElement();\n } else if (matches[i] === '{{integer}}') {\n addIntegerGoalFormElement();\n } else if (matches[i] === '{{string}}') {\n addStringGoalFormElement();\n } else if (matches[i] === '{{phoneme}}') {\n addPhonemeGoalFormElement();\n } else if (matches[i] === '{{phoneme_category}}') {\n addPhonemeCategoryGoalFormElement();\n } else if (matches[i] === '{{phoneme_group}}') {\n addPhonemeGroupGoalFormElement();\n } else if (matches[i] === '{{blend}}') {\n addBlendGoalFormElement();\n } else if (matches[i] === '{{blend_group}}') {\n addBlendGroupGoalFormElement();\n } else if (matches[i] === '{{target_level}}') {\n addTargetLevelGoalFormElement();\n } else if (matches[i] === '{{position_in_word}}') {\n addPositionInWordGoalFormElement();\n } else if (matches[i] === '{{possessive_pronoun}}') {\n addPossessivePronounGoalFormElement();\n } else if (matches[i] === '{{object_pronoun}}') {\n addObjectPronounGoalFormElement();\n }\n }\n }\n resetGoalFormPositions();\n}\n\nexport function goalsTrixInitialize(event) {\n if (!defaultValueData) setDefaultDataValue();\n const editor = event.target;\n const toolbar = editor.toolbarElement;\n const ttools = toolbar.querySelector('.trix-button-group--text-tools');\n const btools = toolbar.querySelector('.trix-button-group--block-tools');\n const ftools = toolbar.querySelector('.trix-button-group--file-tools');\n\n const goals = `\n <span class=\"trix-button-group trix-button-group--goal-tools\" data-trix-button-group=\"goal-tools\">\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-patient\" data-trix-action=\"x-patient\" title=\"Add patient name\" tabindex=\"-1\">Patient name</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-percentage\" data-trix-action=\"x-percentage\" title=\"Add number blank (percentage)\" tabindex=\"-1\">Percentage</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-integer\" data-trix-action=\"x-integer\" title=\"Add number blank (integer)\" tabindex=\"-1\">Integer</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-string\" data-trix-action=\"x-string\" title=\"Add text blank\" tabindex=\"-1\">String</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-possessive-pronoun\" data-trix-action=\"x-possessive-pronoun\" title=\"Add possessive pronoun (e.g. her, his, their)\" tabindex=\"-1\">Possessive pronoun</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-object-pronoun\" data-trix-action=\"x-object-pronoun\" title=\"Add object pronoun (e.g. she, he, they)\" tabindex=\"-1\">Object pronoun</button>\n </span>\n `;\n\n const speechGoals = `\n <span class=\"trix-button-group trix-button-group--speech-goal-tools\" data-trix-button-group=\"speech-goal-tools\">\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-phoneme\" data-trix-action=\"x-phoneme\" title=\"Add phoneme\" tabindex=\"-1\">Phoneme</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-phoneme-category\" data-trix-action=\"x-phoneme-category\" title=\"Add phoneme category\" tabindex=\"-1\">Phoneme category</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-phoneme-group\" data-trix-action=\"x-phoneme-group\" title=\"Add phoneme group\" tabindex=\"-1\">Phoneme group</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-blend\" data-trix-action=\"x-blend\" title=\"Add blend\" tabindex=\"-1\">Blend</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-blend-group\" data-trix-action=\"x-blend-group\" title=\"Add blend group\" tabindex=\"-1\">Blend group</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-target-level\" data-trix-action=\"x-target-level\" title=\"Add target level\" tabindex=\"-1\">Target level</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-position-in-word\" data-trix-action=\"x-position-in-word\" title=\"Add position in word of phoneme/blend\" tabindex=\"-1\">Position in word</button>\n </span>\n `;\n\n const components = `\n <span class=\"trix-button-group trix-button-group--component-tools\" data-trix-button-group=\"component-tools\">\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-who\" data-trix-action=\"x-gcwho\" title=\"Goal component - Who\" tabindex=\"-1\">Who</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-skill\" data-trix-action=\"x-gcimpairment\" title=\"Goal component - Skill / impairment\" tabindex=\"-1\">Skill</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-context\" data-trix-action=\"x-gccontext\" title=\"Goal component - Context\" tabindex=\"-1\">Context</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-measurable\" data-trix-action=\"x-gcmeasurable\" title=\"Goal component - Measurable\" tabindex=\"-1\">Measurable</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-reason\" data-trix-action=\"x-gcreason\" title=\"Goal component - Reason\" tabindex=\"-1\">Reason</button>\n <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-timeframe\" data-trix-action=\"x-gctimeframe\" title=\"Goal component - Time frame\" tabindex=\"-1\">Time frame</button>\n </span>\n `;\n\n ttools.insertAdjacentHTML('beforebegin', goals);\n ttools.insertAdjacentHTML('beforebegin', speechGoals);\n ttools.insertAdjacentHTML('beforebegin', components);\n ttools.remove();\n btools.remove();\n ftools.remove();\n\n const element = document.querySelector('trix-editor');\n const trixDocument = element.editor.getDocument();\n const trixString = trixDocument.toString();\n const matches = trixString.match(/{{[^{]*}}/g);\n\n if (matches !== null) {\n for (let i = 0; i < matches.length; i += 1) {\n if (matches[i] === '{{patient_name}}') {\n addPatientNameGoalFormElement();\n } else if (matches[i] === '{{percentage}}') {\n addPercentageGoalFormElement();\n } else if (matches[i] === '{{integer}}') {\n addIntegerGoalFormElement();\n } else if (matches[i] === '{{string}}') {\n addStringGoalFormElement();\n } else if (matches[i] === '{{phoneme}}') {\n addPhonemeGoalFormElement();\n } else if (matches[i] === '{{phoneme_category}}') {\n addPhonemeCategoryGoalFormElement();\n } else if (matches[i] === '{{phoneme_group}}') {\n addPhonemeGroupGoalFormElement();\n } else if (matches[i] === '{{blend}}') {\n addBlendGoalFormElement();\n } else if (matches[i] === '{{blend_group}}') {\n addBlendGroupGoalFormElement();\n } else if (matches[i] === '{{target_level}}') {\n addTargetLevelGoalFormElement();\n } else if (matches[i] === '{{position_in_word}}') {\n addPositionInWordGoalFormElement();\n } else if (matches[i] === '{{possessive_pronoun}}') {\n addPossessivePronounGoalFormElement();\n } else if (matches[i] === '{{object_pronoun}}') {\n addObjectPronounGoalFormElement();\n }\n }\n }\n resetGoalFormPositions();\n setUpCustomTagListeners();\n\n if (document.getElementsByTagName('gc-who').length > 0) {\n const tfElement = document.getElementById('goal-who');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Who');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n }\n\n if (document.getElementsByTagName('gc-skill').length > 0) {\n const tfElement = document.getElementById('goal-skill');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Skill');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n }\n\n if (document.getElementsByTagName('gc-context').length > 0) {\n const tfElement = document.getElementById('goal-context');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Context');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n }\n\n if (document.getElementsByTagName('gc-measurable').length > 0) {\n const tfElement = document.getElementById('goal-measurable');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Measurable');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n }\n\n if (document.getElementsByTagName('gc-reason').length > 0) {\n const tfElement = document.getElementById('goal-function');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Reason');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n }\n\n if (document.getElementsByTagName('gc-timeframe').length > 0) {\n const tfElement = document.getElementById('goal-timeframe');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Time Frame');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n }\n\n document.addEventListener('trix-action-invoke', (e) => {\n setUpCustomTagListeners();\n if (e.actionName === 'x-gcwho') {\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const tfCount = document.getElementsByTagName('gc-who').length;\n if (tfCount > 0) {\n const tfElement = document.getElementById('goal-who');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Who');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n } else {\n const tfElement = document.getElementById('goal-who');\n const tfText = tfElement.textContent;\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n tfElement.textContent = 'Who';\n }\n }, 1);\n }\n\n if (e.actionName === 'x-gcimpairment') {\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const tfCount = document.getElementsByTagName('gc-skill').length;\n if (tfCount > 0) {\n const tfElement = document.getElementById('goal-skill');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Skill');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n } else {\n const tfElement = document.getElementById('goal-skill');\n const tfText = tfElement.textContent;\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n tfElement.textContent = 'Skill';\n }\n }, 1);\n }\n\n if (e.actionName === 'x-gccontext') {\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const tfCount = document.getElementsByTagName('gc-context').length;\n if (tfCount > 0) {\n const tfElement = document.getElementById('goal-context');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Context');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n } else {\n const tfElement = document.getElementById('goal-context');\n const tfText = tfElement.textContent;\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n tfElement.textContent = 'Context';\n }\n }, 1);\n }\n\n if (e.actionName === 'x-gcmeasurable') {\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const tfCount = document.getElementsByTagName('gc-measurable').length;\n if (tfCount > 0) {\n const tfElement = document.getElementById('goal-measurable');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Measurable');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n } else {\n const tfElement = document.getElementById('goal-measurable');\n const tfText = tfElement.textContent;\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n tfElement.textContent = 'Measurable';\n }\n }, 1);\n }\n\n if (e.actionName === 'x-gcreason') {\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const tfCount = document.getElementsByTagName('gc-reason').length;\n if (tfCount > 0) {\n const tfElement = document.getElementById('goal-function');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Reason');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n } else {\n const tfElement = document.getElementById('goal-function');\n const tfText = tfElement.textContent;\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n tfElement.textContent = 'Reason';\n }\n }, 1);\n }\n\n if (e.actionName === 'x-gctimeframe') {\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const tfCount = document.getElementsByTagName('gc-timeframe').length;\n if (tfCount > 0) {\n const tfElement = document.getElementById('goal-timeframe');\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n const newElement = document.createElement('s');\n const newContent = document.createTextNode('Time Frame');\n newElement.classList.add('text-muted');\n newElement.appendChild(newContent);\n tfElement.appendChild(newElement);\n } else {\n const tfElement = document.getElementById('goal-timeframe');\n const tfText = tfElement.textContent;\n while (tfElement.firstChild) {\n tfElement.removeChild(tfElement.firstChild);\n }\n tfElement.textContent = 'Time Frame';\n }\n }, 1);\n }\n\n if (e.actionName === 'x-patient') {\n element.editor.insertString('{{patient_name}} ');\n\n addPatientNameGoalFormElement();\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-percentage') {\n element.editor.insertString('{{percentage}}% ');\n addPercentageGoalFormElement();\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-integer') {\n element.editor.insertString('{{integer}} ');\n addIntegerGoalFormElement();\n\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-string') {\n element.editor.insertString('{{string}} ');\n addStringGoalFormElement();\n\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-phoneme') {\n element.editor.insertString('/{{phoneme}}/ ');\n addPhonemeGoalFormElement();\n\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-phoneme-category') {\n element.editor.insertString('{{phoneme_category}} ');\n addPhonemeCategoryGoalFormElement();\n\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-phoneme-group') {\n element.editor.insertString('{{phoneme_group}} ');\n addPhonemeGroupGoalFormElement();\n\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-blend') {\n element.editor.insertString('{{blend}} ');\n addBlendGoalFormElement();\n\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-blend-group') {\n element.editor.insertString('{{blend_group}} ');\n addBlendGroupGoalFormElement();\n\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-target-level') {\n element.editor.insertString('{{target_level}} ');\n addTargetLevelGoalFormElement();\n\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-position-in-word') {\n element.editor.insertString('{{position_in_word}} ');\n addPositionInWordGoalFormElement();\n\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-possessive-pronoun') {\n element.editor.insertString('{{possessive_pronoun}} ');\n addPossessivePronounGoalFormElement();\n\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n\n if (e.actionName === 'x-object-pronoun') {\n element.editor.insertString('{{object_pronoun}} ');\n addObjectPronounGoalFormElement();\n\n // I can't find an event that fires after trix-active is added, so we'll have\n // to settle for a hacky setTimeout for now.\n setTimeout(() => {\n const els = document.getElementsByClassName('trix-active');\n for (let i = 0; i < els.length; i += 1) {\n els[i].classList.remove('trix-active');\n }\n }, 1);\n }\n });\n\n document.addEventListener('trix-change', () => {\n setUpCustomTagListeners();\n\n const trixDocument = element.editor.getDocument();\n const trixString = trixDocument.toString();\n const patientNameCount = (trixString.match(/{{patient_name}}/g) || []).length;\n const percentageCount = (trixString.match(/{{percentage}}/g) || []).length;\n const integerCount = (trixString.match(/{{integer}}/g) || []).length;\n const stringCount = (trixString.match(/{{string}}/g) || []).length;\n const possessivePronounCount = (trixString.match(/{{possessive_pronoun}}/g) || []).length;\n const objectPronounCount = (trixString.match(/{{object_pronoun}}/g) || []).length;\n const phonemeCategoryCount = (trixString.match(/{{phoneme_category}}/g) || []).length;\n const phonemeGroupCount = (trixString.match(/{{phoneme_group}}/g) || []).length;\n const blendCount = (trixString.match(/{{blend}}/g) || []).length;\n const blendGroupCount = (trixString.match(/{{blend_group}}/g) || []).length;\n const phonemeCount = (trixString.match(/{{phoneme}}/g) || []).length;\n const targetLevelCount = (trixString.match(/{{target_level}}/g) || []).length;\n const positionInWordCount = (trixString.match(/{{position_in_word}}/g) || []).length;\n\n const array1 = previousString.match(/{{[^{]*}}/g);\n let patientNameIndices1;\n let percentageIndices1;\n let integerIndices1;\n let stringIndices1;\n let possessivePronounIndices1;\n let objectPronounIndices1;\n let phonemeCategoryIndices1;\n let phonemeGroupIndices1;\n let blendIndices1;\n let blendGroupIndices1;\n let phonemeIndices1;\n let targetLevelIndices1;\n let positionInWordIndices1;\n if (array1) {\n patientNameIndices1 = getAllIndexes(array1, '{{patient_name}}');\n percentageIndices1 = getAllIndexes(array1, '{{percentage}}');\n integerIndices1 = getAllIndexes(array1, '{{integer}}');\n stringIndices1 = getAllIndexes(array1, '{{string}}');\n possessivePronounIndices1 = getAllIndexes(array1, '{{possessive_pronoun}}');\n objectPronounIndices1 = getAllIndexes(array1, '{{object_pronoun}}');\n phonemeCategoryIndices1 = getAllIndexes(array1, '{{phoneme_category}}');\n phonemeGroupIndices1 = getAllIndexes(array1, '{{phoneme_group}}');\n blendIndices1 = getAllIndexes(array1, '{{blend}}');\n blendGroupIndices1 = getAllIndexes(array1, '{{blend_group}}');\n phonemeIndices1 = getAllIndexes(array1, '{{phoneme}}');\n targetLevelIndices1 = getAllIndexes(array1, '{{target_level}}');\n positionInWordIndices1 = getAllIndexes(array1, '{{position_in_word}}');\n }\n\n const array2 = trixString.match(/{{[^{]*}}/g);\n let patientNameIndices2;\n let percentageIndices2;\n let integerIndices2;\n let stringIndices2;\n let possessivePronounIndices2;\n let objectPronounIndices2;\n let phonemeCategoryIndices2;\n let phonemeGroupIndices2;\n let blendIndices2;\n let blendGroupIndices2;\n let phonemeIndices2;\n let targetLevelIndices2;\n let positionInWordIndices2;\n if (array2) {\n patientNameIndices2 = getAllIndexes(array2, '{{patient_name}}');\n percentageIndices2 = getAllIndexes(array2, '{{percentage}}');\n integerIndices2 = getAllIndexes(array2, '{{integer}}');\n stringIndices2 = getAllIndexes(array2, '{{string}}');\n possessivePronounIndices2 = getAllIndexes(array2, '{{possessive_pronoun}}');\n objectPronounIndices2 = getAllIndexes(array2, '{{object_pronoun}}');\n phonemeCategoryIndices2 = getAllIndexes(array2, '{{phoneme_category}}');\n phonemeGroupIndices2 = getAllIndexes(array2, '{{phoneme_group}}');\n blendIndices2 = getAllIndexes(array2, '{{blend}}');\n blendGroupIndices2 = getAllIndexes(array2, '{{blend_group}}');\n phonemeIndices2 = getAllIndexes(array2, '{{phoneme}}');\n targetLevelIndices2 = getAllIndexes(array2, '{{target_level}}');\n positionInWordIndices2 = getAllIndexes(array2, '{{position_in_word}}');\n }\n\n const elements = document.getElementsByName('goal[default_values][default][][name]');\n let patientNameCounter = 0;\n let percentageCounter = 0;\n let integerCounter = 0;\n let stringCounter = 0;\n let possessivePronounCounter = 0;\n let objectPronounCounter = 0;\n let phonemeCategoryCounter = 0;\n let phonemeGroupCounter = 0;\n let blendCounter = 0;\n let blendGroupCounter = 0;\n let phonemeCounter = 0;\n let targetLevelCounter = 0;\n let positionInWordCounter = 0;\n setTimeout(() => {\n for (let i = 0; i < elements.length; i += 1) {\n if (elements[i].value === 'patient_name') {\n patientNameCounter += 1;\n }\n if (elements[i].value === 'percentage') {\n percentageCounter += 1;\n }\n if (elements[i].value === 'integer') {\n integerCounter += 1;\n }\n if (elements[i].value === 'string') {\n stringCounter += 1;\n }\n if (elements[i].value === 'possessive_pronoun') {\n possessivePronounCounter += 1;\n }\n if (elements[i].value === 'object_pronoun') {\n objectPronounCounter += 1;\n }\n if (elements[i].value === 'phoneme_category') {\n phonemeCategoryCounter += 1;\n }\n if (elements[i].value === 'phoneme_group') {\n phonemeGroupCounter += 1;\n }\n if (elements[i].value === 'blend') {\n blendCounter += 1;\n }\n if (elements[i].value === 'blend_group') {\n blendGroupCounter += 1;\n }\n if (elements[i].value === 'phoneme') {\n phonemeCounter += 1;\n }\n if (elements[i].value === 'target_level') {\n targetLevelCounter += 1;\n }\n if (elements[i].value === 'position_in_word') {\n positionInWordCounter += 1;\n }\n }\n if (\n patientNameCounter > patientNameCount ||\n percentageCounter > percentageCount ||\n integerCounter > integerCount ||\n stringCounter > stringCount ||\n possessivePronounCounter > possessivePronounCount ||\n objectPronounCounter > objectPronounCount ||\n phonemeCategoryCounter > phonemeCategoryCount ||\n phonemeGroupCounter > phonemeGroupCount ||\n blendCounter > blendCount ||\n blendGroupCounter > blendGroupCount ||\n phonemeCounter > phonemeCount ||\n targetLevelCounter > targetLevelCount ||\n positionInWordCounter > positionInWordCount\n ) {\n rebuildDynamicElements();\n }\n resetGoalFormPositions();\n }, 1);\n\n previousString = trixString;\n });\n}\n","/* eslint-disable consistent-return */\nimport initializeDatepickers from '../../lib/datepickers';\nimport { onDropdownClose } from '../selectize_helpers';\nimport computeDisciplines from '../credentials-disciplines';\nimport DiagnosisCodes from './diagnosisCodes';\n\nclass AddFields {\n // This executes when the function is instantiated.\n constructor(diagnosisCodeManager) {\n this.diagnosisCodesManager = diagnosisCodeManager;\n this.links = document.querySelectorAll('.add_fields');\n this.parsedHTML = '';\n this.iterateLinks();\n }\n\n iterateLinks() {\n // If there are no links on the page, stop the function from executing.\n if (this.links.length === 0) return;\n // Loop over each link on the page. A page could have multiple nested forms.\n this.links.forEach((link) => {\n const target = link.getAttribute('data-target');\n const relatedField = document.querySelector(`[data-fields=\"${target}\"]`);\n if (relatedField) {\n relatedField.setAttribute('data-nested', 'true');\n relatedField.id = `${target}_nested_field_container`;\n }\n // We want to set the EventListener for new elements added\n // to the DOM but not for elements already in the DOM\n if (link.dataset.addLinksListener !== 'set') {\n link.addEventListener('click', (e) => {\n this.handleClick(link, e);\n });\n }\n\n link.dataset.addLinksListener = 'set';\n });\n }\n\n appendFieldsWithoutUniqueId(link, target, newFieldsHtml) {\n // Add the new markup to the form if there are fields to add.\n if (link.closest('.nested-fields')) {\n // For cases where there is a nested form inside a nested form and there\n // are multiple items in the first nested form\n if (link.closest('.nested-fields').querySelector(`[data-fields='${target}']`)) {\n link.closest('.nested-fields').querySelector(`[data-fields='${target}']`).append(newFieldsHtml);\n } else {\n document.querySelector(`[data-fields='${target}']`).append(newFieldsHtml);\n }\n } else if (document.querySelector(`[data-fields='${target}']`)) {\n document.querySelector(`[data-fields='${target}']`).append(newFieldsHtml);\n } else {\n $(link).parent().find('.nested-wrapper').append(newFieldsHtml);\n }\n }\n\n handleClick(link, e) {\n // Run AddFields again for any new elements added to the DOM\n setTimeout(() => {\n // eslint-disable-next-line no-new\n new AddFields(this.diagnosisCodesManager);\n }, 100);\n\n initializeDatepickers();\n\n // Stop the function from executing if a link or event were not passed into the function.\n if (!link || !e) return;\n // Prevent the browser from following the URL.\n e.preventDefault();\n // Save a unique timestamp to ensure the key of the associated array is unique.\n const time = new Date().getTime();\n // Save the data id attribute into a variable. This corresponds to `new_object.object_id`.\n const linkId = link.dataset.id;\n // Create a new regular expression needed to find any instance of the `new_object.object_id` used in the fields data attribute if there's a value in `linkId`.\n const regexp = linkId ? new RegExp(linkId, 'g') : null;\n // Replace all instances of the `new_object.object_id` with `time`, and save markup into a variable if there's a value in `regexp`.\n const newFields = regexp ? link.dataset.fields.replace(regexp, time) : null;\n\n if (newFields) {\n const preservePlaceholder = (placeholderSelectize) => {\n const placeholder = placeholderSelectize.$input[0].getAttribute('placeholder');\n if (placeholder) {\n placeholderSelectize.$control_input[0].placeholder = placeholder;\n }\n };\n\n const newFieldsHtml = this.parseHTMLResponse(newFields);\n const selectize = newFieldsHtml.querySelectorAll('.select.filterable');\n const selectizeTreatability = newFieldsHtml.querySelectorAll('.select.treatability');\n const selectizeText = newFieldsHtml.querySelectorAll('.select.filterable-text');\n const selectizeDiagnosisCode = newFieldsHtml.querySelectorAll('.select.diagnosis-code-select');\n const selectizeNPI = newFieldsHtml.querySelectorAll('.select.npi-select');\n const selectizeGoal = newFieldsHtml.querySelectorAll('.select.goal-select');\n const selectizeWord = newFieldsHtml.querySelectorAll('.select.word-select');\n const selectizeWordGroup = newFieldsHtml.querySelectorAll('.select.word-group-select');\n const selectizeActivityList = newFieldsHtml.querySelectorAll('.select.activity-list-select');\n const selectizeActivityItem = newFieldsHtml.querySelectorAll('.select.activity-item-select');\n const selectizeResource = newFieldsHtml.querySelectorAll('.select.resource-select');\n const selectizeCredentials = newFieldsHtml.querySelectorAll('.select.credential-select');\n const selectizeMinimalPairs = newFieldsHtml.querySelectorAll('.select.minimal-pair-select');\n const selectizeSchool = newFieldsHtml.querySelectorAll('.select.school-select');\n const selectizeDistrict = newFieldsHtml.querySelectorAll('.select.district-select');\n const selectizeReferenceLink = newFieldsHtml.querySelectorAll('.select.reference-link-select');\n const patientForm = document.getElementById('patient_form');\n const billingSequence = newFieldsHtml.querySelectorAll('.form-control.billing-sequence');\n const increaseBillingSequence = link.id === 'add-dynamic-payment-method-link';\n if (increaseBillingSequence && billingSequence) {\n // Only run this on the \"Add payment method\" link click, not any others\n const lastSequence = parseInt($('.billing-sequence:visible').last().val(), 10) || 0;\n const newSequence = lastSequence + 1;\n setTimeout(() => {\n $('.billing-sequence:visible').last().val(newSequence);\n }, 100);\n }\n\n // Check if we will insert somewhere else\n const target = link.getAttribute('data-target');\n\n // Toggle button for has-one-relationship\n if (link.classList.contains('has-one-relationship')) {\n link.classList.toggle('d-none');\n }\n // Add the new markup to the form if there are fields to add.\n const { uniqueIdentifier } = link.dataset;\n\n if (uniqueIdentifier) {\n const targetContainer = document.querySelector(`[data-container-for='${uniqueIdentifier}']`);\n if (targetContainer) {\n targetContainer.append(newFieldsHtml);\n } else {\n this.appendFieldsWithoutUniqueId(link, target, newFieldsHtml);\n }\n } else {\n this.appendFieldsWithoutUniqueId(link, target, newFieldsHtml);\n }\n\n const dataElement = document.querySelector(`[data-fields='${target}']`);\n\n // STOP DELETE OPTION 2: START\n // We want to visually hide our delete item text if it's the first link\n // and our links contain the no_last_delete class.\n // In the removeFields.js file we disable the first links functionality.\n if (dataElement) {\n const removeLinks = dataElement.querySelectorAll('.remove_fields.no_last_delete');\n\n if (removeLinks.length > 0) {\n removeLinks[0].textContent = '';\n }\n }\n // STOP DELETE OPTION 2: START\n\n if (patientForm) {\n const patientFormValidationAlert = document.getElementById('patient_form_validation_error');\n\n Array.from(patientForm.elements).forEach((element) => {\n element.addEventListener(\n 'invalid',\n (event) => {\n let tabToDisplay = event.target.closest('div.tab-pane').dataset.name;\n if (tabToDisplay === undefined) {\n tabToDisplay = event.target.closest('div.modal').dataset.name;\n }\n patientFormValidationAlert.innerHTML = `There is a validation error with one of the fields on the \"${tabToDisplay}\" tab.`;\n patientFormValidationAlert.classList.remove('hide');\n document.body.scrollTop = 0;\n document.documentElement.scrollTop = 0;\n },\n true\n );\n });\n }\n // Selectize\n if (selectize) {\n $(selectize).selectize({\n create: false,\n onDropdownClose,\n });\n }\n\n if (selectizeText) {\n $(selectizeText).selectize({\n create: false,\n sortField: 'text',\n onDropdownClose,\n });\n }\n\n if (selectizeTreatability) {\n $(selectizeTreatability).selectize({\n create: false,\n sortField: 'id',\n onDropdownClose,\n render: {\n option(data, escape) {\n return `<div style=\"padding: 7px;\">${escape(data.text)}<br><small style=\"color:gray;\">${escape(\n data.description\n )}</small></div>`; // https://stackoverflow.com/a/36514076\n },\n },\n });\n }\n\n if (selectizeDiagnosisCode) {\n this.diagnosisCodesManager.addNewDiagnosisSelectComponent(selectizeDiagnosisCode);\n }\n\n if (selectizeNPI) {\n $(selectizeNPI).selectize({\n valueField: 'id',\n labelField: 'name',\n searchField: 'name',\n maxItems: 1,\n placeholder: 'Start typing to search for a provider...',\n options: [],\n preload: true,\n create: false,\n onDropdownClose,\n load(query, callback) {\n if (!query) return callback();\n $.ajax({\n url: '/api/v2/npi-search',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success: (res) => {\n callback(res);\n },\n });\n },\n onChange(value) {\n const select = this.$input[0];\n $.ajax({\n url: '/api/v2/npi-search',\n type: 'GET',\n dataType: 'json',\n data: {\n q: value,\n },\n error(err) {\n console.log(err);\n },\n success: (res) => {\n if (!res || !res[0]) return;\n const result = res[0];\n\n const delineationElement = select.closest('div').querySelector('.addressAttributeDelineation');\n let addressAttributeDelineation;\n\n if (delineationElement) {\n addressAttributeDelineation = delineationElement.dataset.delineation;\n }\n\n if (result.first_name)\n select.closest('div').querySelector('.provider_first_name').value = result.first_name;\n if (result.last_name)\n select.closest('div').querySelector('.provider_last_name').value = result.last_name;\n if (result.middle_name)\n select.closest('div').querySelector('.provider_middle_name').value = result.middle_name;\n if (result.organization_name)\n select.closest('div').querySelector('.provider_organization_name').value = result.organization_name;\n if (result.suffix) select.closest('div').querySelector('.provider_suffix').value = result.suffix;\n if (result.active) select.closest('div').querySelector('.provider_active').value = result.active;\n if (result.primary_taxonomy_name)\n select.closest('div').querySelector('.provider_primary_taxonomy_name').value =\n result.primary_taxonomy_name;\n if (result.primary_taxonomy_number)\n select.closest('div').querySelector('.provider_primary_taxonomy_number').value =\n result.primary_taxonomy_number;\n\n // do not set address attributes if there is no address attributes delineator\n if (!addressAttributeDelineation) {\n return;\n }\n\n const states = {\n AL: '792cb3da-b81d-4b84-9fe2-5eb2e8ba2fe1',\n AK: '9761b2a2-64e3-44b7-ade7-8048a005b464',\n AZ: '5a2065a2-ff3c-44a9-9700-27478430ca5a',\n AR: '79a51f67-061b-4ab8-bf0e-89803c848190',\n CA: 'f8304174-c9d1-426d-9fe8-ed8b8ccc111b',\n CO: 'f8a476d8-f08c-4edf-a899-17ed68012611',\n CT: '7bacf4b6-0333-4079-81b3-4a132e533cac',\n DE: '3020b27e-e1ee-4e00-8ddc-632c15e174b0',\n FL: '31aab059-4059-468e-8093-3d43ddf784f6',\n GA: '35c4d00d-12c4-454d-b07c-0ae6fa3cf07e',\n HI: '20b70c99-1e4d-4c31-b080-2eee352b25d4',\n ID: '7dc74aa6-7dba-41e4-81e4-00e70dc276f2',\n IL: 'e9520da2-4db6-4394-9267-42d36ac9d414',\n IN: '5fffbfda-9a70-41ce-adef-6744af74bd33',\n IA: '9ca6d9ee-f97c-4ae4-87c7-8c48406338ab',\n KS: '86439c19-917e-43fa-820c-ca275e10ab91',\n KY: 'b3724b8d-2661-4d7b-9cba-efb79b13a3c5',\n LA: '4d1e896f-ffbd-4e58-ae27-04e9a61b98e9',\n ME: '22a7dc8e-b87d-4992-b6c7-4cd4f3fe351f',\n MD: 'da24b130-4488-4c33-a6e4-c7f1eecec046',\n MA: 'edd0adb7-cbce-486d-bff7-b9022b784ca0',\n MI: 'aeda968a-ddbb-402a-9553-6f7625b78d60',\n MN: 'df15f16d-0c20-45ae-b9ba-61caa5793599',\n MS: 'dd164fcb-7e1f-4f60-ad09-a82cff9c8c83',\n MO: '74926e67-b6e0-4bf6-936f-fbfb901a3628',\n MT: 'cb15ecc7-e6bc-4cec-abce-ed9c67f20132',\n NE: 'fada5e0c-d1fc-4903-b692-656e1ff67e90',\n NV: 'b2084b65-cf73-4dd6-aff0-9c3e04af758c',\n NH: '8ea0d008-37b7-4f0a-ac0e-f9fd9dbc4e9b',\n NJ: 'f59d589f-1a76-43c6-b5cb-33e1b633c666',\n NM: 'fd639e11-14f2-4596-b771-ade4fe42641f',\n NY: 'cc87d550-2fff-4eb4-ada0-1ee7928f7ce9',\n NC: 'bb8e1276-f348-48bb-af1d-19e670289706',\n ND: '75e3b344-c84a-4087-ae05-15556b5188ba',\n OH: 'c97f229b-5ea2-4e72-94a0-b747863ed408',\n OK: '336758ff-ad13-41a4-80c2-7b812e6e34af',\n OR: 'f42355d8-1282-4241-b063-5d77ebe2d682',\n PA: '9e4547c7-be31-4ebe-8471-75647fa2e1cd',\n RI: '07cedcb1-71a3-4653-9f88-03e5f4e34632',\n SC: 'ada5b0f2-4e86-4b28-8a03-b4d954fe40f2',\n SD: '62e2edb0-5b96-41b8-a75f-5294c9fde059',\n TN: '3e9e112c-3954-4001-b180-aac3a71a334c',\n TX: '45c2200c-3d40-4d59-886d-69f95863bb93',\n UT: '693d1508-dea8-4227-b168-0f343390bb5a',\n VT: 'e4aba46b-6bf3-498f-b9fc-4d0156b3630a',\n VA: 'cd92b344-01ce-44ed-b27d-dc9b2dc53387',\n WA: '8417da33-6057-4607-8770-d3dc46acfd62',\n WV: 'a188df66-9d72-492e-a5d3-61af7c3b7b03',\n WI: '1a9a1b72-229f-433d-8ae1-c0aae33845b2',\n WY: '24792adb-2104-470e-b007-89941e449edc',\n DC: '2d568ff0-0456-48c8-9ff4-c04fb8836185',\n PR: '80ceb63b-928d-4112-9e12-67f9388c17f4',\n AS: 'f4a3b53d-dd70-41d3-96f8-5fb4f269c492',\n GU: '17297d90-6e71-437b-ad5c-7cdeb6fa0d59',\n VI: 'c09bb695-c2f2-4db7-b4b1-273eba209e5b',\n FM: '5da2e734-c0b8-4858-b6dc-3a5b6508c8a1',\n MH: '600bd931-29e6-4274-b356-c230390a49a3',\n MP: 'c6e554e0-4697-4e0e-8151-3c428456605c',\n PW: '828066ee-7ae4-4176-9087-2e752434998f',\n };\n\n const addressTypes = {\n 'LOCATION AND MAILING': 'f6749b20-b2e5-4992-bf11-6e5585b5df70',\n LOCATION: '319705a9-f58e-4da2-9dd7-dacdfb7a1e42',\n MAILING: 'ea876400-61b4-4bb9-a37e-b6a2171d88ab',\n };\n\n const phoneNumberTypes = {\n telephone_number: '80e9a6e6-14b5-4bff-9b48-bad20308eef6',\n fax_number: '31053637-ac84-4f96-8844-3bc829f3a251',\n };\n\n const fields = [\n 'address_1',\n 'address_2',\n 'address_purpose',\n 'address_type',\n 'city',\n 'country_code',\n 'country_name',\n 'fax_number',\n 'postal_code',\n 'state',\n 'telephone_number',\n ];\n\n const mapFields = {\n address_1: 'address',\n address_2: 'address_2',\n // purpose is what we call addresstype\n address_purpose: 'address_type_id',\n address_type: '',\n city: 'city',\n country_code: 'country_code',\n country_name: 'country_name',\n fax_number: 'fax_number',\n postal_code: 'zip_code',\n state: 'state_id',\n telephone_number: 'telephone_number',\n };\n\n if (result.first_name)\n select.closest('div').querySelector('.provider_first_name').value = result.first_name;\n if (result.last_name)\n select.closest('div').querySelector('.provider_last_name').value = result.last_name;\n if (result.middle_name)\n select.closest('div').querySelector('.provider_middle_name').value = result.middle_name;\n if (result.organization_name)\n select.closest('div').querySelector('.provider_organization_name').value = result.organization_name;\n if (result.suffix) select.closest('div').querySelector('.provider_suffix').value = result.suffix;\n if (result.active) select.closest('div').querySelector('.provider_active').value = result.active;\n if (result.primary_taxonomy_name)\n select.closest('div').querySelector('.provider_primary_taxonomy_name').value =\n result.primary_taxonomy_name;\n if (result.primary_taxonomy_number)\n select.closest('div').querySelector('.provider_primary_taxonomy_number').value =\n result.primary_taxonomy_number;\n\n for (let index = 0; index < result.addresses.length; index++) {\n const address = result.addresses[index];\n\n // set phone numbers(telephone and fax)\n const workPhoneElement = document.getElementById(\n `${addressAttributeDelineation}_${index}_phone_numbers_attributes_0_number`\n );\n const workPhoneTypeElement = document.getElementById(\n `${addressAttributeDelineation}_${index}_phone_numbers_attributes_0_phone_number_type_id`\n );\n const workFaxElement = document.getElementById(\n `${addressAttributeDelineation}_${index}_phone_numbers_attributes_1_number`\n );\n const workFaxTypeElement = document.getElementById(\n `${addressAttributeDelineation}_${index}_phone_numbers_attributes_1_phone_number_type_id`\n );\n\n if (workPhoneElement && workPhoneTypeElement && address.telephone_number) {\n workPhoneElement.value = address.telephone_number;\n workPhoneTypeElement.value = phoneNumberTypes.telephone_number;\n }\n\n if (workFaxElement && workFaxTypeElement && address.fax_number) {\n workFaxElement.value = address.fax_number;\n workFaxTypeElement.value = phoneNumberTypes.fax_number;\n }\n\n // set other address fields\n for (let idx = 0; idx < fields.length; idx++) {\n const field = fields[idx];\n const mappedField = mapFields[field];\n let fieldValue = address[field];\n const id = `${addressAttributeDelineation}_${index}_${mappedField}`;\n const fieldElement = document.getElementById(id);\n if (field === 'address_purpose') {\n fieldValue = addressTypes[fieldValue];\n } else if (field === 'state') {\n fieldValue = states[fieldValue];\n } else if (field === 'postal_code') {\n fieldValue =\n fieldValue && fieldValue.length > 5\n ? `${fieldValue.slice(0, 5)}-${fieldValue.slice(5)}`\n : fieldValue;\n }\n\n if (fieldValue && fieldElement) fieldElement.value = fieldValue;\n }\n }\n },\n });\n },\n onInitialize() {\n preservePlaceholder(this);\n },\n });\n }\n\n if (selectizeDistrict) {\n $(selectizeDistrict).selectize({\n valueField: 'id',\n labelField: 'name',\n searchField: 'name',\n maxItems: 1,\n placeholder: 'Start typing to search for a district...',\n options: [],\n preload: true,\n create: false,\n onDropdownClose,\n load(query, callback) {\n if (!query) return callback();\n $.ajax({\n url: '/api/v2/districts',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success(res) {\n callback(res);\n },\n });\n },\n onChange(value) {\n const select = this.$input[0];\n const option = select.options[0];\n option.value = value;\n select.value = value;\n },\n onInitialize() {\n preservePlaceholder(this);\n const select = this.$input[0].dataset;\n $.ajax({\n url: '/api/v2/districts',\n type: 'GET',\n dataType: 'json',\n data: {\n q: select.name,\n },\n error(err) {\n console.log(err);\n },\n success: (res) => {\n this.addOption(res);\n const selectedItems = [];\n selectedItems.push(select.id);\n this.addItem(selectedItems);\n },\n });\n },\n });\n }\n\n if (selectizeSchool) {\n $(selectizeSchool).selectize({\n valueField: 'id',\n labelField: 'name',\n searchField: 'name',\n maxItems: 1,\n placeholder: 'Start typing to search for a school...',\n options: [],\n preload: true,\n create: false,\n onDropdownClose,\n load(query, callback) {\n if (!query) return callback();\n $.ajax({\n url: '/api/v2/schools',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success(res) {\n callback(res);\n },\n });\n },\n onChange(value) {\n const select = this.$input[0];\n const option = select.options[0];\n option.value = value;\n select.value = value;\n },\n onInitialize() {\n preservePlaceholder(this);\n const select = this.$input[0].dataset;\n $.ajax({\n url: '/api/v2/schools',\n type: 'GET',\n dataType: 'json',\n data: {\n q: select.name,\n },\n error(err) {\n console.log(err);\n },\n success: (res) => {\n this.addOption(res);\n const selectedItems = [];\n selectedItems.push(select.id);\n this.addItem(selectedItems);\n },\n });\n },\n });\n }\n\n if (selectizeReferenceLink) {\n $(selectizeReferenceLink).selectize({\n valueField: 'id',\n labelField: 'title',\n searchField: 'title',\n dataAttr: 'description',\n placeholder: 'Start typing to search for a reference link...',\n options: [],\n create: false,\n onDropdownClose,\n render: {\n item(item, escape) {\n if (item.author !== null && item.author !== undefined) {\n return `<div class=\"p-1\">${item.title} <small>(${item.author})</small></div>`;\n }\n return `<div class=\"p-1\">${item.title}</div>`;\n },\n option(item, escape) {\n if (item.author !== null && item.author !== undefined) {\n return `<div class=\"p-1\">${item.title} <small>(${item.author})</small></div>`;\n }\n return `<div class=\"p-1\">${item.title}</div>`;\n },\n },\n load(query, callback) {\n if (!query.length) return callback();\n $.ajax({\n url: '/api/v2/reference-links',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success(res) {\n callback(res);\n },\n });\n },\n onChange(value) {\n const select = this.$input[0];\n const option = select.options[0];\n option.value = value;\n select.value = value;\n const data = this.options[value];\n if (data && data.description)\n select.closest('div').parentNode.querySelector('.description-field').value = data.description;\n },\n onInitialize() {\n preservePlaceholder(this);\n const select = this.$input[0].dataset;\n $.ajax({\n url: '/api/v2/reference-links',\n type: 'GET',\n dataType: 'json',\n data: {\n q: select.name,\n },\n error(err) {\n console.log(err);\n },\n success: (res) => {\n this.addOption(res);\n const selectedItems = [];\n selectedItems.push(select.id);\n this.addItem(selectedItems);\n },\n });\n },\n });\n }\n\n if (selectizeGoal) {\n $(selectizeGoal).selectize({\n valueField: 'id',\n labelField: 'goal',\n searchField: 'goal',\n placeholder: 'Start typing to search for a goal...',\n options: [],\n create: false,\n onDropdownClose,\n load(query, callback) {\n if (!query.length) return callback();\n $.ajax({\n url: '/api/v2/goals',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success(res) {\n callback(res);\n },\n });\n },\n });\n }\n\n if (selectizeWord) {\n $(selectizeWord).selectize({\n valueField: 'id',\n labelField: 'word',\n searchField: 'word',\n placeholder: 'Start typing to search for a word...',\n options: [],\n create: false,\n onDropdownClose,\n load(query, callback) {\n if (!query.length) return callback();\n $.ajax({\n url: '/api/v2/words',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success(res) {\n callback(res);\n },\n });\n },\n });\n }\n\n if (selectizeWordGroup) {\n $(selectizeWordGroup).selectize({\n valueField: 'id',\n labelField: 'name',\n searchField: 'name',\n placeholder: 'Start typing to search for a word group...',\n options: [],\n create: false,\n onDropdownClose,\n load(query, callback) {\n if (!query.length) return callback();\n $.ajax({\n url: '/api/v2/word-groups',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success(res) {\n callback(res);\n },\n });\n },\n });\n }\n\n if (selectizeActivityItem) {\n $(selectizeActivityItem).selectize({\n valueField: 'id',\n labelField: 'name',\n searchField: 'name',\n placeholder: 'Start typing to search for an item...',\n options: [],\n create: false,\n onDropdownClose,\n load(query, callback) {\n if (!query.length) return callback();\n $.ajax({\n url: '/api/v2/activity-items',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success(res) {\n callback(res);\n },\n });\n },\n });\n }\n\n if (selectizeActivityList) {\n $(selectizeActivityList).selectize({\n valueField: 'id',\n labelField: 'name',\n searchField: 'name',\n placeholder: 'Start typing to search for an activity list...',\n options: [],\n create: false,\n onDropdownClose,\n load(query, callback) {\n if (!query.length) return callback();\n $.ajax({\n url: '/api/v2/activity-lists',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success(res) {\n callback(res);\n },\n });\n },\n });\n }\n\n if (selectizeResource) {\n $(selectizeResource).selectize({\n valueField: 'id',\n labelField: 'name',\n searchField: 'name',\n placeholder: 'Start typing to search for a PDF resource...',\n options: [],\n create: false,\n onDropdownClose,\n load(query, callback) {\n if (!query.length) return callback();\n $.ajax({\n url: '/api/v2/resources',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success(res) {\n callback(res);\n },\n });\n },\n });\n }\n\n if (selectizeMinimalPairs) {\n $(selectizeMinimalPairs).selectize({\n valueField: 'id',\n labelField: 'name',\n searchField: 'name',\n placeholder: 'Start typing to search for a minimal pair...',\n options: [],\n create: false,\n onDropdownClose,\n load(query, callback) {\n if (!query.length) return callback();\n $.ajax({\n url: '/api/v2/minimal-pairs',\n type: 'GET',\n dataType: 'json',\n data: {\n q: query,\n },\n error() {\n callback();\n },\n success(res) {\n callback(res);\n },\n });\n },\n });\n }\n\n const credentialSelectHandler = () => {\n const credentialFields = document.querySelectorAll('.select.credential-select');\n const credentialFieldsValues = Array.from(credentialFields).map((field) => field.value);\n computeDisciplines(credentialFieldsValues);\n };\n\n if (selectizeCredentials) {\n $(selectizeCredentials)\n .selectize({\n create: false,\n sortField: 'id',\n onDropdownClose,\n })\n .on('change', credentialSelectHandler);\n }\n\n // Fire an event to tell other files. Useful when you need to re-run a query select all.\n const fieldAdded = new Event('fieldAdded');\n document.dispatchEvent(fieldAdded);\n\n // Show save button\n $('.nested-field-save').show();\n }\n }\n\n getNewIndexFromTimeString() {\n const now = new Date();\n return now.getHours().toString() + now.getMinutes().toString() + now.getSeconds().toString();\n }\n\n // From: https://stackoverflow.com/a/42658543/445724\n // using .innerHTML= is risky. Instead we need to convert the HTML received\n // into elements, then append them.\n // It's wrapped in a <template> tag to avoid invalid (e.g. a block starting with <tr>)\n // being mutated inappropriately.\n parseHTMLResponse(HTML) {\n // If the addFields is done through template injection then there will be a number of\n // {index} strings that need to be replaced. There represent the index of form fields names eg:\n // evaluation[some_time][{index}][the_field]\n const newFromFieldsIndex = this.getNewIndexFromTimeString();\n HTML = HTML.replace(/{index}/g, newFromFieldsIndex);\n\n const parser = new DOMParser();\n const responseDocument = parser.parseFromString(`<template>${HTML}</template>`, 'text/html');\n this.parsedHTML = responseDocument.head.firstElementChild.content;\n return this.parsedHTML;\n }\n}\n\n// Wait for turbolinks to load, otherwise `document.querySelectorAll()` won't work\nwindow.addEventListener('turbolinks:load', () => new AddFields(new DiagnosisCodes()));\n\nexport default AddFields;\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/*!\n * Bootstrap v4.6.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n})(this, function (exports, $, Popper) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && _typeof(e) === 'object' && 'default' in e ? e : {\n 'default': e\n };\n }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n /**\n * Private TransitionEnd Helpers\n */\n\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default[\"default\"](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $__default[\"default\"](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * Public Util API\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $__default[\"default\"](element).css('transition-duration');\n var transitionDelay = $__default[\"default\"](element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default[\"default\"](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $__default[\"default\"].fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n /**\n * Constants\n */\n\n var NAME$a = 'alert';\n var VERSION$a = '4.6.1';\n var DATA_KEY$a = 'bs.alert';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$a = $__default[\"default\"].fn[NAME$a];\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE$5 = 'fade';\n var CLASS_NAME_SHOW$7 = 'show';\n var EVENT_CLOSE = \"close\" + EVENT_KEY$a;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY$a;\n var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$a + DATA_API_KEY$7;\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n /**\n * Class definition\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype; // Public\n\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$a);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n $__default[\"default\"](element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW$7);\n\n if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE$5)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $__default[\"default\"](element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$a);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY$a, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }]);\n\n return Alert;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$a] = Alert._jQueryInterface;\n $__default[\"default\"].fn[NAME$a].Constructor = Alert;\n\n $__default[\"default\"].fn[NAME$a].noConflict = function () {\n $__default[\"default\"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Alert._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$9 = 'button';\n var VERSION$9 = '4.6.1';\n var DATA_KEY$9 = 'bs.button';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $__default[\"default\"].fn[NAME$9];\n var CLASS_NAME_ACTIVE$3 = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$6;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$9 + DATA_API_KEY$6 + \" \" + (\"blur\" + EVENT_KEY$9 + DATA_API_KEY$6);\n var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$9 + DATA_API_KEY$6;\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE$2 = '.active';\n var SELECTOR_BUTTON = '.btn';\n /**\n * Class definition\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n\n var _proto = Button.prototype; // Public\n\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);\n\n if (activeElement) {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);\n }\n\n if (!this.shouldAvoidTriggerChange) {\n $__default[\"default\"](input).trigger('change');\n }\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));\n }\n\n if (triggerChangeEvent) {\n $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$9);\n\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY$9, data);\n }\n\n data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n\n return Button;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n\n if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default[\"default\"](button).closest(SELECTOR_BUTTON)[0];\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$2, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$9] = Button._jQueryInterface;\n $__default[\"default\"].fn[NAME$9].Constructor = Button;\n\n $__default[\"default\"].fn[NAME$9].noConflict = function () {\n $__default[\"default\"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Button._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$8 = 'carousel';\n var VERSION$8 = '4.6.1';\n var DATA_KEY$8 = 'bs.carousel';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $__default[\"default\"].fn[NAME$8];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var CLASS_NAME_CAROUSEL = 'carousel';\n var CLASS_NAME_ACTIVE$2 = 'active';\n var CLASS_NAME_SLIDE = 'slide';\n var CLASS_NAME_RIGHT = 'carousel-item-right';\n var CLASS_NAME_LEFT = 'carousel-item-left';\n var CLASS_NAME_NEXT = 'carousel-item-next';\n var CLASS_NAME_PREV = 'carousel-item-prev';\n var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n var DIRECTION_NEXT = 'next';\n var DIRECTION_PREV = 'prev';\n var DIRECTION_LEFT = 'left';\n var DIRECTION_RIGHT = 'right';\n var EVENT_SLIDE = \"slide\" + EVENT_KEY$8;\n var EVENT_SLID = \"slid\" + EVENT_KEY$8;\n var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$8;\n var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$8;\n var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$8;\n var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$8;\n var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$8;\n var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$8;\n var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$8;\n var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$8;\n var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$5;\n var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$8 + DATA_API_KEY$5;\n var SELECTOR_ACTIVE$1 = '.active';\n var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n var SELECTOR_ITEM = '.carousel-item';\n var SELECTOR_ITEM_IMG = '.carousel-item img';\n var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n var SELECTOR_INDICATORS = '.carousel-indicators';\n var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n var Default$7 = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType$7 = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * Class definition\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype; // Public\n\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n var $element = $__default[\"default\"](this._element); // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n\n if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval();\n\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $__default[\"default\"](this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"](this._element).off(EVENT_KEY$8);\n $__default[\"default\"].removeData(this._element, DATA_KEY$8);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$7, config);\n Util.typeCheckConfig(NAME$8, config, DefaultType$7);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $__default[\"default\"](this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $__default[\"default\"](this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $__default[\"default\"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $__default[\"default\"](this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $__default[\"default\"](this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $__default[\"default\"](this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $__default[\"default\"](this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $__default[\"default\"](this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n var slideEvent = $__default[\"default\"].Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $__default[\"default\"](this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $__default[\"default\"](indicators).removeClass(CLASS_NAME_ACTIVE$2);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $__default[\"default\"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);\n }\n }\n };\n\n _proto._updateInterval = function _updateInterval() {\n var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n if (!element) {\n return;\n }\n\n var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n\n if (nextElement && $__default[\"default\"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n this._activeElement = nextElement;\n var slidEvent = $__default[\"default\"].Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SLIDE)) {\n $__default[\"default\"](nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $__default[\"default\"](activeElement).addClass(directionalClassName);\n $__default[\"default\"](nextElement).addClass(directionalClassName);\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $__default[\"default\"](activeElement).one(Util.TRANSITION_END, function () {\n $__default[\"default\"](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$2);\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $__default[\"default\"](_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);\n $__default[\"default\"](nextElement).addClass(CLASS_NAME_ACTIVE$2);\n this._isSliding = false;\n $__default[\"default\"](this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$8);\n\n var _config = _extends({}, Default$7, $__default[\"default\"](this).data());\n\n if (_typeof(config) === 'object') {\n _config = _extends({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$8, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $__default[\"default\"](selector)[0];\n\n if (!target || !$__default[\"default\"](target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n var config = _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($__default[\"default\"](target), config);\n\n if (slideIndex) {\n $__default[\"default\"](target).data(DATA_KEY$8).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $__default[\"default\"](carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$8] = Carousel._jQueryInterface;\n $__default[\"default\"].fn[NAME$8].Constructor = Carousel;\n\n $__default[\"default\"].fn[NAME$8].noConflict = function () {\n $__default[\"default\"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return Carousel._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$7 = 'collapse';\n var VERSION$7 = '4.6.1';\n var DATA_KEY$7 = 'bs.collapse';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$7 = $__default[\"default\"].fn[NAME$7];\n var CLASS_NAME_SHOW$6 = 'show';\n var CLASS_NAME_COLLAPSE = 'collapse';\n var CLASS_NAME_COLLAPSING = 'collapsing';\n var CLASS_NAME_COLLAPSED = 'collapsed';\n var DIMENSION_WIDTH = 'width';\n var DIMENSION_HEIGHT = 'height';\n var EVENT_SHOW$4 = \"show\" + EVENT_KEY$7;\n var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$7;\n var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$7;\n var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$7;\n var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$7 + DATA_API_KEY$4;\n var SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"collapse\"]';\n var Default$6 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$6 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n /**\n * Class definition\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype; // Public\n\n _proto.toggle = function toggle() {\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $__default[\"default\"](actives).not(this._selector).data(DATA_KEY$7);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $__default[\"default\"].Event(EVENT_SHOW$4);\n $__default[\"default\"](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($__default[\"default\"](actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $__default[\"default\"](actives).data(DATA_KEY$7, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $__default[\"default\"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $__default[\"default\"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $__default[\"default\"](_this._element).trigger(EVENT_SHOWN$4);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n\n var startEvent = $__default[\"default\"].Event(EVENT_HIDE$4);\n $__default[\"default\"](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $__default[\"default\"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $__default[\"default\"]([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {\n $__default[\"default\"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $__default[\"default\"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$7);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$6, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$7, config, DefaultType$6);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $__default[\"default\"](this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $__default[\"default\"](children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $__default[\"default\"](element).hasClass(CLASS_NAME_SHOW$6);\n\n if (triggerArray.length) {\n $__default[\"default\"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$7);\n\n var _config = _extends({}, Default$6, $element.data(), _typeof(config) === 'object' && config ? config : {});\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $element.data(DATA_KEY$7, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $__default[\"default\"](this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $__default[\"default\"](selectors).each(function () {\n var $target = $__default[\"default\"](this);\n var data = $target.data(DATA_KEY$7);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$7] = Collapse._jQueryInterface;\n $__default[\"default\"].fn[NAME$7].Constructor = Collapse;\n\n $__default[\"default\"].fn[NAME$7].noConflict = function () {\n $__default[\"default\"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Collapse._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$6 = 'dropdown';\n var VERSION$6 = '4.6.1';\n var DATA_KEY$6 = 'bs.dropdown';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$6 = $__default[\"default\"].fn[NAME$6];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE$1);\n var CLASS_NAME_DISABLED$1 = 'disabled';\n var CLASS_NAME_SHOW$5 = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$6;\n var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$6;\n var EVENT_SHOW$3 = \"show\" + EVENT_KEY$6;\n var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$6;\n var EVENT_CLICK = \"click\" + EVENT_KEY$6;\n var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default$5 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$5 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * Class definition\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype; // Public\n\n _proto.toggle = function toggle() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var isActive = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n this.show(true);\n };\n\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$3, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default[\"default\"](parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n\n if (!this._inNavbar && usePopper) {\n // Check for Popper dependency\n if (typeof Popper__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n\n this._popper = new Popper__default[\"default\"](referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_SHOWN$3, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default[\"default\"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$6);\n $__default[\"default\"](this._element).off(EVENT_KEY$6);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $__default[\"default\"](this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $__default[\"default\"](this._element).data(), config);\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $__default[\"default\"](this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $__default[\"default\"](this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$6);\n\n var _config = _typeof(config) === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$6, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $__default[\"default\"](toggles[i]).data(DATA_KEY$6);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n $__default[\"default\"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n\n if (context._popper) {\n context._popper.destroy();\n }\n\n $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5);\n\n if (!isActive && event.which === ESCAPE_KEYCODE$1) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {\n if (event.which === ESCAPE_KEYCODE$1) {\n $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n }\n\n $__default[\"default\"](this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $__default[\"default\"](item).is(':visible');\n });\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$6] = Dropdown._jQueryInterface;\n $__default[\"default\"].fn[NAME$6].Constructor = Dropdown;\n\n $__default[\"default\"].fn[NAME$6].noConflict = function () {\n $__default[\"default\"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Dropdown._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.6.1';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $__default[\"default\"].fn[NAME$5];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE$4 = 'fade';\n var CLASS_NAME_SHOW$4 = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$2;\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n var Default$4 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$4 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n /**\n * Class definition\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype; // Public\n\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $__default[\"default\"](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n this._isTransitioning = true;\n }\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {\n return _this.hide(event);\n });\n $__default[\"default\"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $__default[\"default\"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($__default[\"default\"](event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$2);\n $__default[\"default\"](this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_SHOW$4);\n $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS$1);\n $__default[\"default\"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $__default[\"default\"](htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"].removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$4, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$4);\n return config;\n };\n\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n\n var hideEventPrevented = $__default[\"default\"].Event(EVENT_HIDE_PREVENTED);\n $__default[\"default\"](this._element).trigger(hideEventPrevented);\n\n if (hideEventPrevented.isDefaultPrevented()) {\n return;\n }\n\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._element).off(Util.TRANSITION_END);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n $__default[\"default\"](_this3._element).one(Util.TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n\n this._element.focus();\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n if ($__default[\"default\"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $__default[\"default\"](this._element).addClass(CLASS_NAME_SHOW$4);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$2, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n\n _this4._isTransitioning = false;\n $__default[\"default\"](_this4._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $__default[\"default\"](_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $__default[\"default\"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault();\n\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $__default[\"default\"](this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n\n if (this._isShown) {\n $__default[\"default\"](window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $__default[\"default\"](window).off(EVENT_RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $__default[\"default\"](document.body).removeClass(CLASS_NAME_OPEN);\n\n _this8._resetAdjustments();\n\n _this8._resetScrollbar();\n\n $__default[\"default\"](_this8._element).trigger(EVENT_HIDDEN$2);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $__default[\"default\"](this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n\n var animate = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $__default[\"default\"](this._backdrop).appendTo(document.body);\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this9._config.backdrop === 'static') {\n _this9._triggerBackdropTransition();\n } else {\n _this9.hide();\n }\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $__default[\"default\"](this._backdrop).addClass(CLASS_NAME_SHOW$4);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default[\"default\"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);\n\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](element).css('padding-right');\n $__default[\"default\"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $__default[\"default\"](stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $__default[\"default\"](element).css('margin-right');\n $__default[\"default\"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](document.body).css('padding-right');\n $__default[\"default\"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $__default[\"default\"](document.body).addClass(CLASS_NAME_OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var padding = $__default[\"default\"](element).data('padding-right');\n $__default[\"default\"](element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $__default[\"default\"](elements).each(function (index, element) {\n var margin = $__default[\"default\"](element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $__default[\"default\"](element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $__default[\"default\"](document.body).data('padding-right');\n $__default[\"default\"](document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$5);\n\n var _config = _extends({}, Default$4, $__default[\"default\"](this).data(), _typeof(config) === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }]);\n\n return Modal;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $__default[\"default\"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $__default[\"default\"](target).one(EVENT_SHOW$2, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(EVENT_HIDDEN$2, function () {\n if ($__default[\"default\"](_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($__default[\"default\"](target), config, this);\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$5] = Modal._jQueryInterface;\n $__default[\"default\"].fn[NAME$5].Constructor = Modal;\n\n $__default[\"default\"].fn[NAME$5].noConflict = function () {\n $__default[\"default\"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread\n\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n /**\n * Constants\n */\n\n\n var NAME$4 = 'tooltip';\n var VERSION$4 = '4.6.1';\n var DATA_KEY$4 = 'bs.tooltip';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var JQUERY_NO_CONFLICT$4 = $__default[\"default\"].fn[NAME$4];\n var CLASS_PREFIX$1 = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var CLASS_NAME_FADE$3 = 'fade';\n var CLASS_NAME_SHOW$3 = 'show';\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$3 = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var DefaultType$3 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var Event$1 = {\n HIDE: \"hide\" + EVENT_KEY$4,\n HIDDEN: \"hidden\" + EVENT_KEY$4,\n SHOW: \"show\" + EVENT_KEY$4,\n SHOWN: \"shown\" + EVENT_KEY$4,\n INSERTED: \"inserted\" + EVENT_KEY$4,\n CLICK: \"click\" + EVENT_KEY$4,\n FOCUSIN: \"focusin\" + EVENT_KEY$4,\n FOCUSOUT: \"focusout\" + EVENT_KEY$4,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$4,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$4\n };\n /**\n * Class definition\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n } // Private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype; // Public\n\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $__default[\"default\"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($__default[\"default\"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $__default[\"default\"].removeData(this.element, this.constructor.DATA_KEY);\n $__default[\"default\"](this.element).off(this.constructor.EVENT_KEY);\n $__default[\"default\"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n if (this.tip) {\n $__default[\"default\"](this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($__default[\"default\"](this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $__default[\"default\"].Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $__default[\"default\"](this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $__default[\"default\"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $__default[\"default\"](tip).addClass(CLASS_NAME_FADE$3);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $__default[\"default\"](tip).data(this.constructor.DATA_KEY, this);\n\n if (!$__default[\"default\"].contains(this.element.ownerDocument.documentElement, this.tip)) {\n $__default[\"default\"](tip).appendTo(container);\n }\n\n $__default[\"default\"](this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper__default[\"default\"](this.element, tip, this._getPopperConfig(attachment));\n $__default[\"default\"](tip).addClass(CLASS_NAME_SHOW$3);\n $__default[\"default\"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $__default[\"default\"](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $__default[\"default\"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $__default[\"default\"].Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $__default[\"default\"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $__default[\"default\"](this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $__default[\"default\"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n\n if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $__default[\"default\"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($__default[\"default\"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$3);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (_typeof(content) === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$__default[\"default\"](content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($__default[\"default\"](content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $__default[\"default\"](this.config.container);\n }\n\n return $__default[\"default\"](document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $__default[\"default\"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $__default[\"default\"](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n\n $__default[\"default\"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = _typeof(this.element.getAttribute('data-original-title'));\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n\n if ($__default[\"default\"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $__default[\"default\"](this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, _typeof(config) === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default[\"default\"](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$4);\n\n var _config = _typeof(config) === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $element.data(DATA_KEY$4, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$4;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$4;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$1;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$4;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$3;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * jQuery\n */\n\n\n $__default[\"default\"].fn[NAME$4] = Tooltip._jQueryInterface;\n $__default[\"default\"].fn[NAME$4].Constructor = Tooltip;\n\n $__default[\"default\"].fn[NAME$4].noConflict = function () {\n $__default[\"default\"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Tooltip._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$3 = 'popover';\n var VERSION$3 = '4.6.1';\n var DATA_KEY$3 = 'bs.popover';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var JQUERY_NO_CONFLICT$3 = $__default[\"default\"].fn[NAME$3];\n var CLASS_PREFIX = 'bs-popover';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var CLASS_NAME_FADE$2 = 'fade';\n var CLASS_NAME_SHOW$2 = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n\n var Default$2 = _extends({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n });\n\n var DefaultType$2 = _extends({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var Event = {\n HIDE: \"hide\" + EVENT_KEY$3,\n HIDDEN: \"hidden\" + EVENT_KEY$3,\n SHOW: \"show\" + EVENT_KEY$3,\n SHOWN: \"shown\" + EVENT_KEY$3,\n INSERTED: \"inserted\" + EVENT_KEY$3,\n CLICK: \"click\" + EVENT_KEY$3,\n FOCUSIN: \"focusin\" + EVENT_KEY$3,\n FOCUSOUT: \"focusout\" + EVENT_KEY$3,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$3,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$3\n };\n /**\n * Class definition\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype; // Overrides\n\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $__default[\"default\"](this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$2);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default[\"default\"](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$3);\n\n var _config = _typeof(config) === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$3, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n get: // Getters\n function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$3;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$3;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$3;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * jQuery\n */\n\n\n $__default[\"default\"].fn[NAME$3] = Popover._jQueryInterface;\n $__default[\"default\"].fn[NAME$3].Constructor = Popover;\n\n $__default[\"default\"].fn[NAME$3].noConflict = function () {\n $__default[\"default\"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Popover._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$2 = 'scrollspy';\n var VERSION$2 = '4.6.1';\n var DATA_KEY$2 = 'bs.scrollspy';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $__default[\"default\"].fn[NAME$2];\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE$1 = 'active';\n var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$2;\n var EVENT_SCROLL = \"scroll\" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$2 + DATA_API_KEY$1;\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN$1 = '.dropdown';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n var Default$1 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$1 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n /**\n * Class definition\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $__default[\"default\"](this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype; // Public\n\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$__default[\"default\"](target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$2);\n $__default[\"default\"](this._scrollElement).off(EVENT_KEY$2);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$1, _typeof(config) === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n var id = $__default[\"default\"](config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$2);\n $__default[\"default\"](config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$2, config, DefaultType$1);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $__default[\"default\"]([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);\n $link.addClass(CLASS_NAME_ACTIVE$1);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$1); // Handle special case when .nav-link is inside .nav-item\n\n $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$1);\n }\n\n $__default[\"default\"](this._scrollElement).trigger(EVENT_ACTIVATE, {\n relatedTarget: target\n });\n };\n\n _proto._clear = function _clear() {\n [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n return node.classList.contains(CLASS_NAME_ACTIVE$1);\n }).forEach(function (node) {\n return node.classList.remove(CLASS_NAME_ACTIVE$1);\n });\n } // Static\n ;\n\n ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$2);\n\n var _config = _typeof(config) === 'object' && config;\n\n if (!data) {\n data = new ScrollSpy(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$2, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(ScrollSpy, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n\n return ScrollSpy;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API, function () {\n var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n var scrollSpysLength = scrollSpys.length;\n\n for (var i = scrollSpysLength; i--;) {\n var $spy = $__default[\"default\"](scrollSpys[i]);\n\n ScrollSpy._jQueryInterface.call($spy, $spy.data());\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$2] = ScrollSpy._jQueryInterface;\n $__default[\"default\"].fn[NAME$2].Constructor = ScrollSpy;\n\n $__default[\"default\"].fn[NAME$2].noConflict = function () {\n $__default[\"default\"].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return ScrollSpy._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$1 = 'tab';\n var VERSION$1 = '4.6.1';\n var DATA_KEY$1 = 'bs.tab';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $__default[\"default\"].fn[NAME$1];\n var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_FADE$1 = 'fade';\n var CLASS_NAME_SHOW$1 = 'show';\n var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$1;\n var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$1;\n var EVENT_SHOW$1 = \"show\" + EVENT_KEY$1;\n var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$1;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY$1 + DATA_API_KEY;\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_ACTIVE_UL = '> li > .active';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n /**\n * Class definition\n */\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype; // Public\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default[\"default\"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $__default[\"default\"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];\n var selector = Util.getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n previous = $__default[\"default\"].makeArray($__default[\"default\"](listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$1, {\n relatedTarget: this._element\n });\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$1, {\n relatedTarget: previous\n });\n\n if (previous) {\n $__default[\"default\"](previous).trigger(hideEvent);\n }\n\n $__default[\"default\"](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $__default[\"default\"].Event(EVENT_HIDDEN$1, {\n relatedTarget: _this._element\n });\n var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$1, {\n relatedTarget: previous\n });\n $__default[\"default\"](previous).trigger(hiddenEvent);\n $__default[\"default\"](_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$1);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default[\"default\"](container).find(SELECTOR_ACTIVE_UL) : $__default[\"default\"](container).children(SELECTOR_ACTIVE);\n var active = activeElements[0];\n var isTransitioning = callback && active && $__default[\"default\"](active).hasClass(CLASS_NAME_FADE$1);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util.getTransitionDurationFromElement(active);\n $__default[\"default\"](active).removeClass(CLASS_NAME_SHOW$1).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $__default[\"default\"](active).removeClass(CLASS_NAME_ACTIVE);\n var dropdownChild = $__default[\"default\"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $__default[\"default\"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $__default[\"default\"](element).addClass(CLASS_NAME_ACTIVE);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util.reflow(element);\n\n if (element.classList.contains(CLASS_NAME_FADE$1)) {\n element.classList.add(CLASS_NAME_SHOW$1);\n }\n\n var parent = element.parentNode;\n\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode;\n }\n\n if (parent && $__default[\"default\"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n var dropdownElement = $__default[\"default\"](element).closest(SELECTOR_DROPDOWN)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));\n $__default[\"default\"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $__default[\"default\"](this);\n var data = $this.data(DATA_KEY$1);\n\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY$1, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n\n return Tab;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($__default[\"default\"](this), 'show');\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$1] = Tab._jQueryInterface;\n $__default[\"default\"].fn[NAME$1].Constructor = Tab;\n\n $__default[\"default\"].fn[NAME$1].noConflict = function () {\n $__default[\"default\"].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Tab._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME = 'toast';\n var VERSION = '4.6.1';\n var DATA_KEY = 'bs.toast';\n var EVENT_KEY = \".\" + DATA_KEY;\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_HIDE = 'hide';\n var CLASS_NAME_SHOW = 'show';\n var CLASS_NAME_SHOWING = 'showing';\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY;\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]';\n var Default = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n /**\n * Class definition\n */\n\n var Toast = /*#__PURE__*/function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Toast.prototype; // Public\n\n _proto.show = function show() {\n var _this = this;\n\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW);\n $__default[\"default\"](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n\n var complete = function complete() {\n _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n _this._element.classList.add(CLASS_NAME_SHOW);\n\n $__default[\"default\"](_this._element).trigger(EVENT_SHOWN);\n\n if (_this._config.autohide) {\n _this._timeout = setTimeout(function () {\n _this.hide();\n }, _this._config.delay);\n }\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE);\n\n Util.reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto.hide = function hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return;\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE);\n $__default[\"default\"](this._element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._close();\n };\n\n _proto.dispose = function dispose() {\n this._clearTimeout();\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n\n $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS);\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._element = null;\n this._config = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, $__default[\"default\"](this._element).data(), _typeof(config) === 'object' && config ? config : {});\n Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._setListeners = function _setListeners() {\n var _this2 = this;\n\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {\n return _this2.hide();\n });\n };\n\n _proto._close = function _close() {\n var _this3 = this;\n\n var complete = function complete() {\n _this3._element.classList.add(CLASS_NAME_HIDE);\n\n $__default[\"default\"](_this3._element).trigger(EVENT_HIDDEN);\n };\n\n this._element.classList.remove(CLASS_NAME_SHOW);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._clearTimeout = function _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n ;\n\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY);\n\n var _config = _typeof(config) === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](this);\n }\n });\n };\n\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Toast;\n }();\n /**\n * jQuery\n */\n\n\n $__default[\"default\"].fn[NAME] = Toast._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Toast;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Toast._jQueryInterface;\n };\n\n exports.Alert = Alert;\n exports.Button = Button;\n exports.Carousel = Carousel;\n exports.Collapse = Collapse;\n exports.Dropdown = Dropdown;\n exports.Modal = Modal;\n exports.Popover = Popover;\n exports.Scrollspy = ScrollSpy;\n exports.Tab = Tab;\n exports.Toast = Toast;\n exports.Tooltip = Tooltip;\n exports.Util = Util;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});","function _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\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 _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get.bind(); } 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 _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\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(_e59) { throw _e59; }, 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(_e60) { didErr = true; err = _e60; }, 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\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 ? Object.setPrototypeOf.bind() : 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.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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\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\n/*\nTrix 2.1.12\nCopyright © 2024 37signals, LLC\n */\nvar t = \"2.1.12\";\n\nvar e = \"[data-trix-attachment]\",\n i = {\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 n = {\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 htmlAttributes: [\"language\"],\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(t) {\n return r(t.parentNode) === n[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(t) {\n return r(t.parentNode) === n[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 r = function r(t) {\n var e;\n return null == t || null === (e = t.tagName) || void 0 === e ? void 0 : e.toLowerCase();\n},\n o = navigator.userAgent.match(/android\\s([0-9]+.*Chrome)/i),\n s = o && parseInt(o[1]);\n\nvar a = {\n composesExistingText: /Android.*Chrome/.test(navigator.userAgent),\n recentAndroid: s && s > 12,\n samsungAndroid: s && navigator.userAgent.match(/Android.*SM-/),\n forcesObjectResizing: /Trident.*rv:11/.test(navigator.userAgent),\n supportsInputEvents: \"undefined\" != typeof InputEvent && [\"data\", \"getTargetRanges\", \"inputType\"].every(function (t) {\n return t in InputEvent.prototype;\n })\n},\n l = {\n ADD_ATTR: [\"language\"],\n SAFE_FOR_XML: !1,\n RETURN_DOM: !0\n},\n c = {\n attachFiles: \"Attach Files\",\n bold: \"Bold\",\n bullets: \"Bullets\",\n byte: \"Byte\",\n bytes: \"Bytes\",\n captionPlaceholder: \"Add a caption…\",\n code: \"Code\",\n heading1: \"Heading\",\n indent: \"Increase Level\",\n italic: \"Italic\",\n link: \"Link\",\n numbers: \"Numbers\",\n outdent: \"Decrease Level\",\n quote: \"Quote\",\n redo: \"Redo\",\n remove: \"Remove\",\n strike: \"Strikethrough\",\n undo: \"Undo\",\n unlink: \"Unlink\",\n url: \"URL\",\n urlPlaceholder: \"Enter a URL…\",\n GB: \"GB\",\n KB: \"KB\",\n MB: \"MB\",\n PB: \"PB\",\n TB: \"TB\"\n};\nvar u = [c.bytes, c.KB, c.MB, c.GB, c.TB, c.PB];\nvar h = {\n prefix: \"IEC\",\n precision: 2,\n formatter: function formatter(t) {\n switch (t) {\n case 0:\n return \"0 \".concat(c.bytes);\n\n case 1:\n return \"1 \".concat(c.byte);\n\n default:\n var _e2;\n\n \"SI\" === this.prefix ? _e2 = 1e3 : \"IEC\" === this.prefix && (_e2 = 1024);\n\n var _i2 = Math.floor(Math.log(t) / Math.log(_e2)),\n _n2 = (t / Math.pow(_e2, _i2)).toFixed(this.precision).replace(/0*$/, \"\").replace(/\\.$/, \"\");\n\n return \"\".concat(_n2, \" \").concat(u[_i2]);\n }\n }\n};\n\nvar d = \"\\uFEFF\",\n g = \" \",\n m = function m(t) {\n for (var _e3 in t) {\n var _i3 = t[_e3];\n this[_e3] = _i3;\n }\n\n return this;\n},\n p = document.documentElement,\n f = p.matches,\n b = function b(t) {\n var _ref = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref.onElement,\n i = _ref.matchingSelector,\n n = _ref.withCallback,\n r = _ref.inPhase,\n o = _ref.preventDefault,\n s = _ref.times;\n\n var a = e || p,\n l = i,\n c = \"capturing\" === r,\n u = function u(t) {\n null != s && 0 == --s && u.destroy();\n var e = y(t.target, {\n matchingSelector: l\n });\n null != e && (null == n || n.call(e, t, e), o && t.preventDefault());\n };\n\n return u.destroy = function () {\n return a.removeEventListener(t, u, c);\n }, a.addEventListener(t, u, c), u;\n},\n v = function v(t) {\n var _ref2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref2.onElement,\n i = _ref2.bubbles,\n n = _ref2.cancelable,\n r = _ref2.attributes;\n\n var o = null != e ? e : p;\n i = !1 !== i, n = !1 !== n;\n var s = document.createEvent(\"Events\");\n return s.initEvent(t, i, n), null != r && m.call(s, r), o.dispatchEvent(s);\n},\n A = function A(t, e) {\n if (1 === (null == t ? void 0 : t.nodeType)) return f.call(t, e);\n},\n y = function y(t) {\n var _ref3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref3.matchingSelector,\n i = _ref3.untilNode;\n\n for (; t && t.nodeType !== Node.ELEMENT_NODE;) {\n t = t.parentNode;\n }\n\n if (null != t) {\n if (null == e) return t;\n if (t.closest && null == i) return t.closest(e);\n\n for (; t && t !== i;) {\n if (A(t, e)) return t;\n t = t.parentNode;\n }\n }\n},\n x = function x(t) {\n return document.activeElement !== t && C(t, document.activeElement);\n},\n C = function C(t, e) {\n if (t && e) for (; e;) {\n if (e === t) return !0;\n e = e.parentNode;\n }\n},\n E = function E(t) {\n var e;\n if (null === (e = t) || void 0 === e || !e.parentNode) return;\n var i = 0;\n\n for (t = t.previousSibling; t;) {\n i++, t = t.previousSibling;\n }\n\n return i;\n},\n S = function S(t) {\n var e;\n return null == t || null === (e = t.parentNode) || void 0 === e ? void 0 : e.removeChild(t);\n},\n R = function R(t) {\n var _ref4 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref4.onlyNodesOfType,\n i = _ref4.usingFilter,\n n = _ref4.expandEntityReferences;\n\n var r = function () {\n switch (e) {\n case \"element\":\n return NodeFilter.SHOW_ELEMENT;\n\n case \"text\":\n return NodeFilter.SHOW_TEXT;\n\n case \"comment\":\n return NodeFilter.SHOW_COMMENT;\n\n default:\n return NodeFilter.SHOW_ALL;\n }\n }();\n\n return document.createTreeWalker(t, r, null != i ? i : null, !0 === n);\n},\n k = function k(t) {\n var e;\n return null == t || null === (e = t.tagName) || void 0 === e ? void 0 : e.toLowerCase();\n},\n T = function T(t) {\n var e,\n i,\n n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n \"object\" == _typeof(t) ? (n = t, t = n.tagName) : n = {\n attributes: n\n };\n var r = document.createElement(t);\n if (null != n.editable && (null == n.attributes && (n.attributes = {}), n.attributes.contenteditable = n.editable), n.attributes) for (e in n.attributes) {\n i = n.attributes[e], r.setAttribute(e, i);\n }\n if (n.style) for (e in n.style) {\n i = n.style[e], r.style[e] = i;\n }\n if (n.data) for (e in n.data) {\n i = n.data[e], r.dataset[e] = i;\n }\n return n.className && n.className.split(\" \").forEach(function (t) {\n r.classList.add(t);\n }), n.textContent && (r.textContent = n.textContent), n.childNodes && [].concat(n.childNodes).forEach(function (t) {\n r.appendChild(t);\n }), r;\n};\n\nvar w;\n\nvar L = function L() {\n if (null != w) return w;\n w = [];\n\n for (var _t2 in n) {\n var _e4 = n[_t2];\n _e4.tagName && w.push(_e4.tagName);\n }\n\n return w;\n},\n D = function D(t) {\n return I(null == t ? void 0 : t.firstChild);\n},\n N = function N(t) {\n var _ref5 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n strict: !0\n },\n e = _ref5.strict;\n\n return e ? I(t) : I(t) || !I(t.firstChild) && function (t) {\n return L().includes(k(t)) && !L().includes(k(t.firstChild));\n }(t);\n},\n I = function I(t) {\n return O(t) && \"block\" === (null == t ? void 0 : t.data);\n},\n O = function O(t) {\n return (null == t ? void 0 : t.nodeType) === Node.COMMENT_NODE;\n},\n F = function F(t) {\n var _ref6 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref6.name;\n\n if (t) return B(t) ? t.data === d ? !e || t.parentNode.dataset.trixCursorTarget === e : void 0 : F(t.firstChild);\n},\n P = function P(t) {\n return A(t, e);\n},\n M = function M(t) {\n return B(t) && \"\" === (null == t ? void 0 : t.data);\n},\n B = function B(t) {\n return (null == t ? void 0 : t.nodeType) === Node.TEXT_NODE;\n},\n _ = {\n level2Enabled: !0,\n getLevel: function getLevel() {\n return this.level2Enabled && a.supportsInputEvents ? 2 : 0;\n },\n pickFiles: function pickFiles(t) {\n var e = T(\"input\", {\n type: \"file\",\n multiple: !0,\n hidden: !0,\n id: this.fileInputId\n });\n e.addEventListener(\"change\", function () {\n t(e.files), S(e);\n }), S(document.getElementById(this.fileInputId)), document.body.appendChild(e), e.click();\n }\n};\n\nvar j = {\n removeBlankTableCells: !1,\n tableCellSeparator: \" | \",\n tableRowSeparator: \"\\n\"\n},\n W = {\n bold: {\n tagName: \"strong\",\n inheritable: !0,\n parser: function parser(t) {\n var e = window.getComputedStyle(t);\n return \"bold\" === e.fontWeight || e.fontWeight >= 600;\n }\n },\n italic: {\n tagName: \"em\",\n inheritable: !0,\n parser: function parser(t) {\n return \"italic\" === window.getComputedStyle(t).fontStyle;\n }\n },\n href: {\n groupTagName: \"a\",\n parser: function parser(t) {\n var i = \"a:not(\".concat(e, \")\"),\n n = t.closest(i);\n if (n) return n.getAttribute(\"href\");\n }\n },\n strike: {\n tagName: \"del\",\n inheritable: !0\n },\n frozen: {\n style: {\n backgroundColor: \"highlight\"\n }\n }\n},\n U = {\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=\"'.concat(c.bold, '\" tabindex=\"-1\">').concat(c.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=\"').concat(c.italic, '\" tabindex=\"-1\">').concat(c.italic, '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"').concat(c.strike, '\" tabindex=\"-1\">').concat(c.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=\"').concat(c.link, '\" tabindex=\"-1\">').concat(c.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=\"').concat(c.heading1, '\" tabindex=\"-1\">').concat(c.heading1, '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"').concat(c.quote, '\" tabindex=\"-1\">').concat(c.quote, '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"').concat(c.code, '\" tabindex=\"-1\">').concat(c.code, '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"').concat(c.bullets, '\" tabindex=\"-1\">').concat(c.bullets, '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"').concat(c.numbers, '\" tabindex=\"-1\">').concat(c.numbers, '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"').concat(c.outdent, '\" tabindex=\"-1\">').concat(c.outdent, '</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"').concat(c.indent, '\" tabindex=\"-1\">').concat(c.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=\"').concat(c.attachFiles, '\" tabindex=\"-1\">').concat(c.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=\"').concat(c.undo, '\" tabindex=\"-1\">').concat(c.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=\"').concat(c.redo, '\" tabindex=\"-1\">').concat(c.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=\"').concat(c.urlPlaceholder, '\" aria-label=\"').concat(c.url, '\" data-trix-validate-href required data-trix-input>\\n <div class=\"trix-button-group\">\\n <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"').concat(c.link, '\" data-trix-method=\"setAttribute\">\\n <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"').concat(c.unlink, '\" data-trix-method=\"removeAttribute\">\\n </div>\\n </div>\\n </div>\\n </div>');\n }\n};\nvar V = {\n interval: 5e3\n};\nvar z = Object.freeze({\n __proto__: null,\n attachments: i,\n blockAttributes: n,\n browser: a,\n 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 dompurify: l,\n fileSize: h,\n input: _,\n 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 lang: c,\n parser: j,\n textAttributes: W,\n toolbar: U,\n undo: V\n});\n\nvar q = /*#__PURE__*/function () {\n function q() {\n _classCallCheck(this, q);\n }\n\n _createClass(q, null, [{\n key: \"proxyMethod\",\n value: function proxyMethod(t) {\n var _H = H(t),\n e = _H.name,\n i = _H.toMethod,\n n = _H.toProperty,\n r = _H.optional;\n\n this.prototype[e] = function () {\n var t, o;\n var s, a;\n i ? o = r ? null === (s = this[i]) || void 0 === s ? void 0 : s.call(this) : this[i]() : n && (o = this[n]);\n return r ? (t = null === (a = o) || void 0 === a ? void 0 : a[e], t ? J.call(t, o, arguments) : void 0) : (t = o[e], J.call(t, o, arguments));\n };\n }\n }]);\n\n return q;\n}();\n\nvar H = function H(t) {\n var e = t.match(K);\n if (!e) throw new Error(\"can't parse @proxyMethod expression: \".concat(t));\n var i = {\n name: e[4]\n };\n return null != e[2] ? i.toMethod = e[1] : i.toProperty = e[1], null != e[3] && (i.optional = !0), i;\n},\n J = Function.prototype.apply,\n K = new RegExp(\"^(.+?)(\\\\(\\\\))?(\\\\?)?\\\\.(.+?)$\");\n\nvar G, Y, $;\n\nvar X = /*#__PURE__*/function (_q) {\n _inherits(X, _q);\n\n var _super = _createSuper(X);\n\n function X(t, e) {\n var _this;\n\n _classCallCheck(this, X);\n\n _this = _super.apply(this, arguments), _this.ucs2String = t, _this.codepoints = e, _this.length = _this.codepoints.length, _this.ucs2Length = _this.ucs2String.length;\n return _this;\n }\n\n _createClass(X, [{\n key: \"offsetToUCS2Offset\",\n value: function offsetToUCS2Offset(t) {\n return it(this.codepoints.slice(0, Math.max(0, t))).length;\n }\n }, {\n key: \"offsetFromUCS2Offset\",\n value: function offsetFromUCS2Offset(t) {\n return et(this.ucs2String.slice(0, Math.max(0, t))).length;\n }\n }, {\n key: \"slice\",\n value: function slice() {\n var _this$codepoints;\n\n return this.constructor.fromCodepoints((_this$codepoints = this.codepoints).slice.apply(_this$codepoints, arguments));\n }\n }, {\n key: \"charAt\",\n value: function charAt(t) {\n return this.slice(t, t + 1);\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(t) {\n return this.constructor.box(t).ucs2String === this.ucs2String;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.ucs2String;\n }\n }, {\n key: \"getCacheKey\",\n value: function getCacheKey() {\n return this.ucs2String;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.ucs2String;\n }\n }], [{\n key: \"box\",\n value: function box() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\";\n return t instanceof this ? t : this.fromUCS2String(null == t ? void 0 : t.toString());\n }\n }, {\n key: \"fromUCS2String\",\n value: function fromUCS2String(t) {\n return new this(t, et(t));\n }\n }, {\n key: \"fromCodepoints\",\n value: function fromCodepoints(t) {\n return new this(it(t), t);\n }\n }]);\n\n return X;\n}(q);\n\nvar Z = 1 === (null === (G = Array.from) || void 0 === G ? void 0 : G.call(Array, \"👼\").length),\n Q = null != (null === (Y = \" \".codePointAt) || void 0 === Y ? void 0 : Y.call(\" \", 0)),\n tt = \" 👼\" === (null === ($ = String.fromCodePoint) || void 0 === $ ? void 0 : $.call(String, 32, 128124));\nvar et, it;\net = Z && Q ? function (t) {\n return Array.from(t).map(function (t) {\n return t.codePointAt(0);\n });\n} : function (t) {\n var e = [];\n var i = 0;\n var n = t.length;\n\n for (; i < n;) {\n var _r2 = t.charCodeAt(i++);\n\n if (55296 <= _r2 && _r2 <= 56319 && i < n) {\n var _e5 = t.charCodeAt(i++);\n\n 56320 == (64512 & _e5) ? _r2 = ((1023 & _r2) << 10) + (1023 & _e5) + 65536 : i--;\n }\n\n e.push(_r2);\n }\n\n return e;\n}, it = tt ? function (t) {\n return String.fromCodePoint.apply(String, _toConsumableArray(Array.from(t || [])));\n} : function (t) {\n return function () {\n var e = [];\n return Array.from(t).forEach(function (t) {\n var i = \"\";\n t > 65535 && (t -= 65536, i += String.fromCharCode(t >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), e.push(i + String.fromCharCode(t));\n }), e;\n }().join(\"\");\n};\nvar nt = 0;\n\nvar rt = /*#__PURE__*/function (_q2) {\n _inherits(rt, _q2);\n\n var _super2 = _createSuper(rt);\n\n function rt() {\n var _this2;\n\n _classCallCheck(this, rt);\n\n _this2 = _super2.apply(this, arguments), _this2.id = ++nt;\n return _this2;\n }\n\n _createClass(rt, [{\n key: \"hasSameConstructorAs\",\n value: function hasSameConstructorAs(t) {\n return this.constructor === (null == t ? void 0 : t.constructor);\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(t) {\n return this === t;\n }\n }, {\n key: \"inspect\",\n value: function inspect() {\n var t = [],\n e = this.contentsForInspection() || {};\n\n for (var _i4 in e) {\n var _n3 = e[_i4];\n t.push(\"\".concat(_i4, \"=\").concat(_n3));\n }\n\n return \"#<\".concat(this.constructor.name, \":\").concat(this.id).concat(t.length ? \" \".concat(t.join(\", \")) : \"\", \">\");\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {}\n }, {\n key: \"toJSONString\",\n value: function toJSONString() {\n return JSON.stringify(this);\n }\n }, {\n key: \"toUTF16String\",\n value: function toUTF16String() {\n return X.box(this);\n }\n }, {\n key: \"getCacheKey\",\n value: function getCacheKey() {\n return this.id.toString();\n }\n }], [{\n key: \"fromJSONString\",\n value: function fromJSONString(t) {\n return this.fromJSON(JSON.parse(t));\n }\n }]);\n\n return rt;\n}(q);\n\nvar ot = function ot() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];\n if (t.length !== e.length) return !1;\n\n for (var _i5 = 0; _i5 < t.length; _i5++) {\n if (t[_i5] !== e[_i5]) return !1;\n }\n\n return !0;\n},\n st = function st(t) {\n var e = t.slice(0);\n\n for (var i = arguments.length, n = new Array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) {\n n[r - 1] = arguments[r];\n }\n\n return e.splice.apply(e, n), e;\n},\n at = /[\\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 lt = function () {\n var t = T(\"input\", {\n dir: \"auto\",\n name: \"x\",\n dirName: \"x.dir\"\n }),\n e = T(\"textarea\", {\n dir: \"auto\",\n name: \"y\",\n dirName: \"y.dir\"\n }),\n i = T(\"form\");\n i.appendChild(t), i.appendChild(e);\n\n var n = function () {\n try {\n return new FormData(i).has(e.dirName);\n } catch (t) {\n return !1;\n }\n }(),\n r = function () {\n try {\n return t.matches(\":dir(ltr),:dir(rtl)\");\n } catch (t) {\n return !1;\n }\n }();\n\n return n ? function (t) {\n return e.value = t, new FormData(i).get(e.dirName);\n } : r ? function (e) {\n return t.value = e, t.matches(\":dir(rtl)\") ? \"rtl\" : \"ltr\";\n } : function (t) {\n var e = t.trim().charAt(0);\n return at.test(e) ? \"rtl\" : \"ltr\";\n };\n}();\n\nvar ct = null,\n ut = null,\n ht = null,\n dt = null;\n\nvar gt = function gt() {\n return ct || (ct = bt().concat(pt())), ct;\n},\n mt = function mt(t) {\n return n[t];\n},\n pt = function pt() {\n return ut || (ut = Object.keys(n)), ut;\n},\n ft = function ft(t) {\n return W[t];\n},\n bt = function bt() {\n return ht || (ht = Object.keys(W)), ht;\n},\n vt = function vt(t, e) {\n At(t).textContent = e.replace(/%t/g, t);\n},\n At = function At(t) {\n var e = document.createElement(\"style\");\n e.setAttribute(\"type\", \"text/css\"), e.setAttribute(\"data-tag-name\", t.toLowerCase());\n var i = yt();\n return i && e.setAttribute(\"nonce\", i), document.head.insertBefore(e, document.head.firstChild), e;\n},\n yt = function yt() {\n var t = xt(\"trix-csp-nonce\") || xt(\"csp-nonce\");\n\n if (t) {\n var _e6 = t.nonce,\n _i6 = t.content;\n return \"\" == _e6 ? _i6 : _e6;\n }\n},\n xt = function xt(t) {\n return document.head.querySelector(\"meta[name=\".concat(t, \"]\"));\n},\n Ct = {\n \"application/x-trix-feature-detection\": \"test\"\n},\n Et = function Et(t) {\n var e = t.getData(\"text/plain\"),\n i = t.getData(\"text/html\");\n if (!e || !i) return null == e ? void 0 : e.length;\n {\n var _DOMParser$parseFromS = new DOMParser().parseFromString(i, \"text/html\"),\n _t3 = _DOMParser$parseFromS.body;\n\n if (_t3.textContent === e) return !_t3.querySelector(\"*\");\n }\n},\n St = /Mac|^iP/.test(navigator.platform) ? function (t) {\n return t.metaKey;\n} : function (t) {\n return t.ctrlKey;\n};\n\nvar Rt = function Rt(t) {\n return setTimeout(t, 1);\n},\n kt = function kt() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n var e = {};\n\n for (var _i7 in t) {\n var _n4 = t[_i7];\n e[_i7] = _n4;\n }\n\n return e;\n},\n Tt = function Tt() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n if (Object.keys(t).length !== Object.keys(e).length) return !1;\n\n for (var _i8 in t) {\n if (t[_i8] !== e[_i8]) return !1;\n }\n\n return !0;\n},\n wt = function wt(t) {\n if (null != t) return Array.isArray(t) || (t = [t, t]), [Nt(t[0]), Nt(null != t[1] ? t[1] : t[0])];\n},\n Lt = function Lt(t) {\n if (null == t) return;\n\n var _wt = wt(t),\n _wt2 = _slicedToArray(_wt, 2),\n e = _wt2[0],\n i = _wt2[1];\n\n return It(e, i);\n},\n Dt = function Dt(t, e) {\n if (null == t || null == e) return;\n\n var _wt3 = wt(t),\n _wt4 = _slicedToArray(_wt3, 2),\n i = _wt4[0],\n n = _wt4[1],\n _wt5 = wt(e),\n _wt6 = _slicedToArray(_wt5, 2),\n r = _wt6[0],\n o = _wt6[1];\n\n return It(i, r) && It(n, o);\n},\n Nt = function Nt(t) {\n return \"number\" == typeof t ? t : kt(t);\n},\n It = function It(t, e) {\n return \"number\" == typeof t ? t === e : Tt(t, e);\n};\n\nvar Ot = /*#__PURE__*/function (_q3) {\n _inherits(Ot, _q3);\n\n var _super3 = _createSuper(Ot);\n\n function Ot() {\n var _this3;\n\n _classCallCheck(this, Ot);\n\n _this3 = _super3.apply(this, arguments), _this3.update = _this3.update.bind(_assertThisInitialized(_this3)), _this3.selectionManagers = [];\n return _this3;\n }\n\n _createClass(Ot, [{\n key: \"start\",\n value: function start() {\n this.started || (this.started = !0, document.addEventListener(\"selectionchange\", this.update, !0));\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) return this.started = !1, document.removeEventListener(\"selectionchange\", this.update, !0);\n }\n }, {\n key: \"registerSelectionManager\",\n value: function registerSelectionManager(t) {\n if (!this.selectionManagers.includes(t)) return this.selectionManagers.push(t), this.start();\n }\n }, {\n key: \"unregisterSelectionManager\",\n value: function unregisterSelectionManager(t) {\n if (this.selectionManagers = this.selectionManagers.filter(function (e) {\n return e !== t;\n }), 0 === this.selectionManagers.length) return this.stop();\n }\n }, {\n key: \"notifySelectionManagersOfSelectionChange\",\n value: function notifySelectionManagersOfSelectionChange() {\n return this.selectionManagers.map(function (t) {\n return t.selectionDidChange();\n });\n }\n }, {\n key: \"update\",\n value: function update() {\n this.notifySelectionManagersOfSelectionChange();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.update();\n }\n }]);\n\n return Ot;\n}(q);\n\nvar Ft = new Ot(),\n Pt = function Pt() {\n var t = window.getSelection();\n if (t.rangeCount > 0) return t;\n},\n Mt = function Mt() {\n var t;\n var e = null === (t = Pt()) || void 0 === t ? void 0 : t.getRangeAt(0);\n if (e && !_t(e)) return e;\n},\n Bt = function Bt(t) {\n var e = window.getSelection();\n return e.removeAllRanges(), e.addRange(t), Ft.update();\n},\n _t = function _t(t) {\n return jt(t.startContainer) || jt(t.endContainer);\n},\n jt = function jt(t) {\n return !Object.getPrototypeOf(t);\n},\n Wt = function Wt(t) {\n return t.replace(new RegExp(\"\".concat(d), \"g\"), \"\").replace(new RegExp(\"\".concat(g), \"g\"), \" \");\n},\n Ut = new RegExp(\"[^\\\\S\".concat(g, \"]\")),\n Vt = function Vt(t) {\n return t.replace(new RegExp(\"\".concat(Ut.source), \"g\"), \" \").replace(/\\ {2,}/g, \" \");\n},\n zt = function zt(t, e) {\n if (t.isEqualTo(e)) return [\"\", \"\"];\n var i = qt(t, e),\n n = i.utf16String.length;\n var r;\n\n if (n) {\n var _o = i.offset,\n _s2 = t.codepoints.slice(0, _o).concat(t.codepoints.slice(_o + n));\n\n r = qt(e, X.fromCodepoints(_s2));\n } else r = qt(e, t);\n\n return [i.utf16String.toString(), r.utf16String.toString()];\n},\n qt = function qt(t, e) {\n var i = 0,\n n = t.length,\n r = e.length;\n\n for (; i < n && t.charAt(i).isEqualTo(e.charAt(i));) {\n i++;\n }\n\n for (; n > i + 1 && t.charAt(n - 1).isEqualTo(e.charAt(r - 1));) {\n n--, r--;\n }\n\n return {\n utf16String: t.slice(i, n),\n offset: i\n };\n};\n\nvar Ht = /*#__PURE__*/function (_rt) {\n _inherits(Ht, _rt);\n\n var _super4 = _createSuper(Ht);\n\n function Ht() {\n var _this4;\n\n _classCallCheck(this, Ht);\n\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n _this4 = _super4.apply(this, arguments), _this4.values = Gt(t);\n return _this4;\n }\n\n _createClass(Ht, [{\n key: \"add\",\n value: function add(t, e) {\n return this.merge(Jt(t, e));\n }\n }, {\n key: \"remove\",\n value: function remove(t) {\n return new Ht(Gt(this.values, t));\n }\n }, {\n key: \"get\",\n value: function get(t) {\n return this.values[t];\n }\n }, {\n key: \"has\",\n value: function has(t) {\n return t in this.values;\n }\n }, {\n key: \"merge\",\n value: function merge(t) {\n return new Ht(Kt(this.values, $t(t)));\n }\n }, {\n key: \"slice\",\n value: function slice(t) {\n var _this5 = this;\n\n var e = {};\n return Array.from(t).forEach(function (t) {\n _this5.has(t) && (e[t] = _this5.values[t]);\n }), new Ht(e);\n }\n }, {\n key: \"getKeys\",\n value: function getKeys() {\n return Object.keys(this.values);\n }\n }, {\n key: \"getKeysCommonToHash\",\n value: function getKeysCommonToHash(t) {\n var _this6 = this;\n\n return t = Yt(t), this.getKeys().filter(function (e) {\n return _this6.values[e] === t.values[e];\n });\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(t) {\n return ot(this.toArray(), Yt(t).toArray());\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n return 0 === this.getKeys().length;\n }\n }, {\n key: \"toArray\",\n value: function toArray() {\n if (!this.array) {\n var _t4 = [];\n\n for (var _e7 in this.values) {\n var _i9 = this.values[_e7];\n\n _t4.push(_t4.push(_e7, _i9));\n }\n\n this.array = _t4.slice(0);\n }\n\n return this.array;\n }\n }, {\n key: \"toObject\",\n value: function toObject() {\n return Gt(this.values);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.toObject();\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {\n return {\n values: JSON.stringify(this.values)\n };\n }\n }], [{\n key: \"fromCommonAttributesOfObjects\",\n value: function fromCommonAttributesOfObjects() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n if (!t.length) return new this();\n var e = Yt(t[0]),\n i = e.getKeys();\n return t.slice(1).forEach(function (t) {\n i = e.getKeysCommonToHash(Yt(t)), e = e.slice(i);\n }), e;\n }\n }, {\n key: \"box\",\n value: function box(t) {\n return Yt(t);\n }\n }]);\n\n return Ht;\n}(rt);\n\nvar Jt = function Jt(t, e) {\n var i = {};\n return i[t] = e, i;\n},\n Kt = function Kt(t, e) {\n var i = Gt(t);\n\n for (var _t5 in e) {\n var _n5 = e[_t5];\n i[_t5] = _n5;\n }\n\n return i;\n},\n Gt = function Gt(t, e) {\n var i = {};\n return Object.keys(t).sort().forEach(function (n) {\n n !== e && (i[n] = t[n]);\n }), i;\n},\n Yt = function Yt(t) {\n return t instanceof Ht ? t : new Ht(t);\n},\n $t = function $t(t) {\n return t instanceof Ht ? t.values : t;\n};\n\nvar Xt = /*#__PURE__*/function () {\n function Xt() {\n _classCallCheck(this, Xt);\n\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],\n _ref7 = arguments.length > 1 ? arguments[1] : void 0,\n e = _ref7.depth,\n i = _ref7.asTree;\n\n this.objects = t, i && (this.depth = e, this.objects = this.constructor.groupObjects(this.objects, {\n asTree: i,\n depth: this.depth + 1\n }));\n }\n\n _createClass(Xt, [{\n key: \"getObjects\",\n value: function getObjects() {\n return this.objects;\n }\n }, {\n key: \"getDepth\",\n value: function getDepth() {\n return this.depth;\n }\n }, {\n key: \"getCacheKey\",\n value: function getCacheKey() {\n var t = [\"objectGroup\"];\n return Array.from(this.getObjects()).forEach(function (e) {\n t.push(e.getCacheKey());\n }), t.join(\"/\");\n }\n }], [{\n key: \"groupObjects\",\n value: function groupObjects() {\n var _this7 = this;\n\n var t,\n e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],\n _ref8 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n i = _ref8.depth,\n n = _ref8.asTree;\n\n n && null == i && (i = 0);\n var r = [];\n return Array.from(e).forEach(function (e) {\n var o;\n\n if (t) {\n var s, a, l;\n if (null !== (s = e.canBeGrouped) && void 0 !== s && s.call(e, i) && null !== (a = (l = t[t.length - 1]).canBeGroupedWith) && void 0 !== a && a.call(l, e, i)) return void t.push(e);\n r.push(new _this7(t, {\n depth: i,\n asTree: n\n })), t = null;\n }\n\n null !== (o = e.canBeGrouped) && void 0 !== o && o.call(e, i) ? t = [e] : r.push(e);\n }), t && r.push(new this(t, {\n depth: i,\n asTree: n\n })), r;\n }\n }]);\n\n return Xt;\n}();\n\nvar Zt = /*#__PURE__*/function (_q4) {\n _inherits(Zt, _q4);\n\n var _super5 = _createSuper(Zt);\n\n function Zt() {\n var _this8;\n\n _classCallCheck(this, Zt);\n\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n _this8 = _super5.apply(this, arguments), _this8.objects = {}, Array.from(t).forEach(function (t) {\n var e = JSON.stringify(t);\n null == _this8.objects[e] && (_this8.objects[e] = t);\n });\n return _this8;\n }\n\n _createClass(Zt, [{\n key: \"find\",\n value: function find(t) {\n var e = JSON.stringify(t);\n return this.objects[e];\n }\n }]);\n\n return Zt;\n}(q);\n\nvar Qt = /*#__PURE__*/function () {\n function Qt(t) {\n _classCallCheck(this, Qt);\n\n this.reset(t);\n }\n\n _createClass(Qt, [{\n key: \"add\",\n value: function add(t) {\n var e = te(t);\n this.elements[e] = t;\n }\n }, {\n key: \"remove\",\n value: function remove(t) {\n var e = te(t),\n i = this.elements[e];\n if (i) return delete this.elements[e], i;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n var _this9 = this;\n\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n return this.elements = {}, Array.from(t).forEach(function (t) {\n _this9.add(t);\n }), t;\n }\n }]);\n\n return Qt;\n}();\n\nvar te = function te(t) {\n return t.dataset.trixStoreKey;\n};\n\nvar ee = /*#__PURE__*/function (_q5) {\n _inherits(ee, _q5);\n\n var _super6 = _createSuper(ee);\n\n function ee() {\n _classCallCheck(this, ee);\n\n return _super6.apply(this, arguments);\n }\n\n _createClass(ee, [{\n key: \"isPerforming\",\n value: function isPerforming() {\n return !0 === this.performing;\n }\n }, {\n key: \"hasPerformed\",\n value: function hasPerformed() {\n return !0 === this.performed;\n }\n }, {\n key: \"hasSucceeded\",\n value: function hasSucceeded() {\n return this.performed && this.succeeded;\n }\n }, {\n key: \"hasFailed\",\n value: function hasFailed() {\n return this.performed && !this.succeeded;\n }\n }, {\n key: \"getPromise\",\n value: function getPromise() {\n var _this10 = this;\n\n return this.promise || (this.promise = new Promise(function (t, e) {\n return _this10.performing = !0, _this10.perform(function (i, n) {\n _this10.succeeded = i, _this10.performing = !1, _this10.performed = !0, _this10.succeeded ? t(n) : e(n);\n });\n })), this.promise;\n }\n }, {\n key: \"perform\",\n value: function perform(t) {\n return t(!1);\n }\n }, {\n key: \"release\",\n value: function release() {\n var t, e;\n null === (t = this.promise) || void 0 === t || null === (e = t.cancel) || void 0 === e || e.call(t), this.promise = null, this.performing = null, this.performed = null, this.succeeded = null;\n }\n }]);\n\n return ee;\n}(q);\n\nee.proxyMethod(\"getPromise().then\"), ee.proxyMethod(\"getPromise().catch\");\n\nvar ie = /*#__PURE__*/function (_q6) {\n _inherits(ie, _q6);\n\n var _super7 = _createSuper(ie);\n\n function ie(t) {\n var _this11;\n\n _classCallCheck(this, ie);\n\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n _this11 = _super7.apply(this, arguments), _this11.object = t, _this11.options = e, _this11.childViews = [], _this11.rootView = _assertThisInitialized(_this11);\n return _this11;\n }\n\n _createClass(ie, [{\n key: \"getNodes\",\n value: function getNodes() {\n return this.nodes || (this.nodes = this.createNodes()), this.nodes.map(function (t) {\n return t.cloneNode(!0);\n });\n }\n }, {\n key: \"invalidate\",\n value: function invalidate() {\n var t;\n return this.nodes = null, this.childViews = [], null === (t = this.parentView) || void 0 === t ? void 0 : t.invalidate();\n }\n }, {\n key: \"invalidateViewForObject\",\n value: function invalidateViewForObject(t) {\n var e;\n return null === (e = this.findViewForObject(t)) || void 0 === e ? void 0 : e.invalidate();\n }\n }, {\n key: \"findOrCreateCachedChildView\",\n value: function findOrCreateCachedChildView(t, e, i) {\n var n = this.getCachedViewForObject(e);\n return n ? this.recordChildView(n) : (n = this.createChildView.apply(this, arguments), this.cacheViewForObject(n, e)), n;\n }\n }, {\n key: \"createChildView\",\n value: function createChildView(t, e) {\n var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\n e instanceof Xt && (i.viewClass = t, t = ne);\n var n = new t(e, i);\n return this.recordChildView(n);\n }\n }, {\n key: \"recordChildView\",\n value: function recordChildView(t) {\n return t.parentView = this, t.rootView = this.rootView, this.childViews.push(t), t;\n }\n }, {\n key: \"getAllChildViews\",\n value: function getAllChildViews() {\n var t = [];\n return this.childViews.forEach(function (e) {\n t.push(e), t = t.concat(e.getAllChildViews());\n }), t;\n }\n }, {\n key: \"findElement\",\n value: function findElement() {\n return this.findElementForObject(this.object);\n }\n }, {\n key: \"findElementForObject\",\n value: function findElementForObject(t) {\n var e = null == t ? void 0 : t.id;\n if (e) return this.rootView.element.querySelector(\"[data-trix-id='\".concat(e, \"']\"));\n }\n }, {\n key: \"findViewForObject\",\n value: function findViewForObject(t) {\n var _iterator = _createForOfIteratorHelper(this.getAllChildViews()),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _e8 = _step.value;\n if (_e8.object === t) return _e8;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"getViewCache\",\n value: function getViewCache() {\n return this.rootView !== this ? this.rootView.getViewCache() : this.isViewCachingEnabled() ? (this.viewCache || (this.viewCache = {}), this.viewCache) : void 0;\n }\n }, {\n key: \"isViewCachingEnabled\",\n value: function isViewCachingEnabled() {\n return !1 !== this.shouldCacheViews;\n }\n }, {\n key: \"enableViewCaching\",\n value: function enableViewCaching() {\n this.shouldCacheViews = !0;\n }\n }, {\n key: \"disableViewCaching\",\n value: function disableViewCaching() {\n this.shouldCacheViews = !1;\n }\n }, {\n key: \"getCachedViewForObject\",\n value: function getCachedViewForObject(t) {\n var e;\n return null === (e = this.getViewCache()) || void 0 === e ? void 0 : e[t.getCacheKey()];\n }\n }, {\n key: \"cacheViewForObject\",\n value: function cacheViewForObject(t, e) {\n var i = this.getViewCache();\n i && (i[e.getCacheKey()] = t);\n }\n }, {\n key: \"garbageCollectCachedViews\",\n value: function garbageCollectCachedViews() {\n var t = this.getViewCache();\n\n if (t) {\n var _e9 = this.getAllChildViews().concat(this).map(function (t) {\n return t.object.getCacheKey();\n });\n\n for (var _i10 in t) {\n _e9.includes(_i10) || delete t[_i10];\n }\n }\n }\n }]);\n\n return ie;\n}(q);\n\nvar ne = /*#__PURE__*/function (_ie) {\n _inherits(ne, _ie);\n\n var _super8 = _createSuper(ne);\n\n function ne() {\n var _this12;\n\n _classCallCheck(this, ne);\n\n _this12 = _super8.apply(this, arguments), _this12.objectGroup = _this12.object, _this12.viewClass = _this12.options.viewClass, delete _this12.options.viewClass;\n return _this12;\n }\n\n _createClass(ne, [{\n key: \"getChildViews\",\n value: function getChildViews() {\n var _this13 = this;\n\n return this.childViews.length || Array.from(this.objectGroup.getObjects()).forEach(function (t) {\n _this13.findOrCreateCachedChildView(_this13.viewClass, t, _this13.options);\n }), this.childViews;\n }\n }, {\n key: \"createNodes\",\n value: function createNodes() {\n var t = this.createContainerElement();\n return this.getChildViews().forEach(function (e) {\n Array.from(e.getNodes()).forEach(function (e) {\n t.appendChild(e);\n });\n }), [t];\n }\n }, {\n key: \"createContainerElement\",\n value: function createContainerElement() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.objectGroup.getDepth();\n return this.getChildViews()[0].createContainerElement(t);\n }\n }]);\n\n return ne;\n}(ie);\n/*! @license DOMPurify 3.2.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.3/LICENSE */\n\n\nvar re = Object.entries,\n oe = Object.setPrototypeOf,\n se = Object.isFrozen,\n ae = Object.getPrototypeOf,\n le = Object.getOwnPropertyDescriptor;\n\nvar ce = Object.freeze,\n ue = Object.seal,\n he = Object.create,\n _ref9 = \"undefined\" != typeof Reflect && Reflect,\n de = _ref9.apply,\n ge = _ref9.construct;\n\nce || (ce = function ce(t) {\n return t;\n}), ue || (ue = function ue(t) {\n return t;\n}), de || (de = function de(t, e, i) {\n return t.apply(e, i);\n}), ge || (ge = function ge(t, e) {\n return _construct(t, _toConsumableArray(e));\n});\nvar me = Te(Array.prototype.forEach),\n pe = Te(Array.prototype.pop),\n fe = Te(Array.prototype.push),\n be = Te(String.prototype.toLowerCase),\n ve = Te(String.prototype.toString),\n Ae = Te(String.prototype.match),\n ye = Te(String.prototype.replace),\n xe = Te(String.prototype.indexOf),\n Ce = Te(String.prototype.trim),\n Ee = Te(Object.prototype.hasOwnProperty),\n Se = Te(RegExp.prototype.test),\n Re = (ke = TypeError, function () {\n for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) {\n e[i] = arguments[i];\n }\n\n return ge(ke, e);\n});\nvar ke;\n\nfunction Te(t) {\n return function (e) {\n for (var i = arguments.length, n = new Array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) {\n n[r - 1] = arguments[r];\n }\n\n return de(t, e, n);\n };\n}\n\nfunction we(t, e) {\n var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : be;\n oe && oe(t, null);\n var n = e.length;\n\n for (; n--;) {\n var _r3 = e[n];\n\n if (\"string\" == typeof _r3) {\n var _t6 = i(_r3);\n\n _t6 !== _r3 && (se(e) || (e[n] = _t6), _r3 = _t6);\n }\n\n t[_r3] = !0;\n }\n\n return t;\n}\n\nfunction Le(t) {\n for (var _e10 = 0; _e10 < t.length; _e10++) {\n Ee(t, _e10) || (t[_e10] = null);\n }\n\n return t;\n}\n\nfunction De(t) {\n var e = he(null);\n\n var _iterator2 = _createForOfIteratorHelper(re(t)),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _ref12 = _step2.value;\n\n var _ref11 = _slicedToArray(_ref12, 2);\n\n var _i11 = _ref11[0];\n var _n6 = _ref11[1];\n Ee(t, _i11) && (Array.isArray(_n6) ? e[_i11] = Le(_n6) : _n6 && \"object\" == _typeof(_n6) && _n6.constructor === Object ? e[_i11] = De(_n6) : e[_i11] = _n6);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return e;\n}\n\nfunction Ne(t, e) {\n for (; null !== t;) {\n var _i12 = le(t, e);\n\n if (_i12) {\n if (_i12.get) return Te(_i12.get);\n if (\"function\" == typeof _i12.value) return Te(_i12.value);\n }\n\n t = ae(t);\n }\n\n return function () {\n return null;\n };\n}\n\nvar Ie = ce([\"a\", \"abbr\", \"acronym\", \"address\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"bdi\", \"bdo\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"decorator\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"element\", \"em\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"img\", \"input\", \"ins\", \"kbd\", \"label\", \"legend\", \"li\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meter\", \"nav\", \"nobr\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"picture\", \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"section\", \"select\", \"shadow\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\"]),\n Oe = ce([\"svg\", \"a\", \"altglyph\", \"altglyphdef\", \"altglyphitem\", \"animatecolor\", \"animatemotion\", \"animatetransform\", \"circle\", \"clippath\", \"defs\", \"desc\", \"ellipse\", \"filter\", \"font\", \"g\", \"glyph\", \"glyphref\", \"hkern\", \"image\", \"line\", \"lineargradient\", \"marker\", \"mask\", \"metadata\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialgradient\", \"rect\", \"stop\", \"style\", \"switch\", \"symbol\", \"text\", \"textpath\", \"title\", \"tref\", \"tspan\", \"view\", \"vkern\"]),\n Fe = ce([\"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feDropShadow\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\"]),\n Pe = ce([\"animate\", \"color-profile\", \"cursor\", \"discard\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignobject\", \"hatch\", \"hatchpath\", \"mesh\", \"meshgradient\", \"meshpatch\", \"meshrow\", \"missing-glyph\", \"script\", \"set\", \"solidcolor\", \"unknown\", \"use\"]),\n Me = ce([\"math\", \"menclose\", \"merror\", \"mfenced\", \"mfrac\", \"mglyph\", \"mi\", \"mlabeledtr\", \"mmultiscripts\", \"mn\", \"mo\", \"mover\", \"mpadded\", \"mphantom\", \"mroot\", \"mrow\", \"ms\", \"mspace\", \"msqrt\", \"mstyle\", \"msub\", \"msup\", \"msubsup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\", \"mprescripts\"]),\n Be = ce([\"maction\", \"maligngroup\", \"malignmark\", \"mlongdiv\", \"mscarries\", \"mscarry\", \"msgroup\", \"mstack\", \"msline\", \"msrow\", \"semantics\", \"annotation\", \"annotation-xml\", \"mprescripts\", \"none\"]),\n _e = ce([\"#text\"]),\n je = ce([\"accept\", \"action\", \"align\", \"alt\", \"autocapitalize\", \"autocomplete\", \"autopictureinpicture\", \"autoplay\", \"background\", \"bgcolor\", \"border\", \"capture\", \"cellpadding\", \"cellspacing\", \"checked\", \"cite\", \"class\", \"clear\", \"color\", \"cols\", \"colspan\", \"controls\", \"controlslist\", \"coords\", \"crossorigin\", \"datetime\", \"decoding\", \"default\", \"dir\", \"disabled\", \"disablepictureinpicture\", \"disableremoteplayback\", \"download\", \"draggable\", \"enctype\", \"enterkeyhint\", \"face\", \"for\", \"headers\", \"height\", \"hidden\", \"high\", \"href\", \"hreflang\", \"id\", \"inputmode\", \"integrity\", \"ismap\", \"kind\", \"label\", \"lang\", \"list\", \"loading\", \"loop\", \"low\", \"max\", \"maxlength\", \"media\", \"method\", \"min\", \"minlength\", \"multiple\", \"muted\", \"name\", \"nonce\", \"noshade\", \"novalidate\", \"nowrap\", \"open\", \"optimum\", \"pattern\", \"placeholder\", \"playsinline\", \"popover\", \"popovertarget\", \"popovertargetaction\", \"poster\", \"preload\", \"pubdate\", \"radiogroup\", \"readonly\", \"rel\", \"required\", \"rev\", \"reversed\", \"role\", \"rows\", \"rowspan\", \"spellcheck\", \"scope\", \"selected\", \"shape\", \"size\", \"sizes\", \"span\", \"srclang\", \"start\", \"src\", \"srcset\", \"step\", \"style\", \"summary\", \"tabindex\", \"title\", \"translate\", \"type\", \"usemap\", \"valign\", \"value\", \"width\", \"wrap\", \"xmlns\", \"slot\"]),\n We = ce([\"accent-height\", \"accumulate\", \"additive\", \"alignment-baseline\", \"amplitude\", \"ascent\", \"attributename\", \"attributetype\", \"azimuth\", \"basefrequency\", \"baseline-shift\", \"begin\", \"bias\", \"by\", \"class\", \"clip\", \"clippathunits\", \"clip-path\", \"clip-rule\", \"color\", \"color-interpolation\", \"color-interpolation-filters\", \"color-profile\", \"color-rendering\", \"cx\", \"cy\", \"d\", \"dx\", \"dy\", \"diffuseconstant\", \"direction\", \"display\", \"divisor\", \"dur\", \"edgemode\", \"elevation\", \"end\", \"exponent\", \"fill\", \"fill-opacity\", \"fill-rule\", \"filter\", \"filterunits\", \"flood-color\", \"flood-opacity\", \"font-family\", \"font-size\", \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-variant\", \"font-weight\", \"fx\", \"fy\", \"g1\", \"g2\", \"glyph-name\", \"glyphref\", \"gradientunits\", \"gradienttransform\", \"height\", \"href\", \"id\", \"image-rendering\", \"in\", \"in2\", \"intercept\", \"k\", \"k1\", \"k2\", \"k3\", \"k4\", \"kerning\", \"keypoints\", \"keysplines\", \"keytimes\", \"lang\", \"lengthadjust\", \"letter-spacing\", \"kernelmatrix\", \"kernelunitlength\", \"lighting-color\", \"local\", \"marker-end\", \"marker-mid\", \"marker-start\", \"markerheight\", \"markerunits\", \"markerwidth\", \"maskcontentunits\", \"maskunits\", \"max\", \"mask\", \"media\", \"method\", \"mode\", \"min\", \"name\", \"numoctaves\", \"offset\", \"operator\", \"opacity\", \"order\", \"orient\", \"orientation\", \"origin\", \"overflow\", \"paint-order\", \"path\", \"pathlength\", \"patterncontentunits\", \"patterntransform\", \"patternunits\", \"points\", \"preservealpha\", \"preserveaspectratio\", \"primitiveunits\", \"r\", \"rx\", \"ry\", \"radius\", \"refx\", \"refy\", \"repeatcount\", \"repeatdur\", \"restart\", \"result\", \"rotate\", \"scale\", \"seed\", \"shape-rendering\", \"slope\", \"specularconstant\", \"specularexponent\", \"spreadmethod\", \"startoffset\", \"stddeviation\", \"stitchtiles\", \"stop-color\", \"stop-opacity\", \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\", \"stroke-miterlimit\", \"stroke-opacity\", \"stroke\", \"stroke-width\", \"style\", \"surfacescale\", \"systemlanguage\", \"tabindex\", \"tablevalues\", \"targetx\", \"targety\", \"transform\", \"transform-origin\", \"text-anchor\", \"text-decoration\", \"text-rendering\", \"textlength\", \"type\", \"u1\", \"u2\", \"unicode\", \"values\", \"viewbox\", \"visibility\", \"version\", \"vert-adv-y\", \"vert-origin-x\", \"vert-origin-y\", \"width\", \"word-spacing\", \"wrap\", \"writing-mode\", \"xchannelselector\", \"ychannelselector\", \"x\", \"x1\", \"x2\", \"xmlns\", \"y\", \"y1\", \"y2\", \"z\", \"zoomandpan\"]),\n Ue = ce([\"accent\", \"accentunder\", \"align\", \"bevelled\", \"close\", \"columnsalign\", \"columnlines\", \"columnspan\", \"denomalign\", \"depth\", \"dir\", \"display\", \"displaystyle\", \"encoding\", \"fence\", \"frame\", \"height\", \"href\", \"id\", \"largeop\", \"length\", \"linethickness\", \"lspace\", \"lquote\", \"mathbackground\", \"mathcolor\", \"mathsize\", \"mathvariant\", \"maxsize\", \"minsize\", \"movablelimits\", \"notation\", \"numalign\", \"open\", \"rowalign\", \"rowlines\", \"rowspacing\", \"rowspan\", \"rspace\", \"rquote\", \"scriptlevel\", \"scriptminsize\", \"scriptsizemultiplier\", \"selection\", \"separator\", \"separators\", \"stretchy\", \"subscriptshift\", \"supscriptshift\", \"symmetric\", \"voffset\", \"width\", \"xmlns\"]),\n Ve = ce([\"xlink:href\", \"xml:id\", \"xlink:title\", \"xml:space\", \"xmlns:xlink\"]),\n ze = ue(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm),\n qe = ue(/<%[\\w\\W]*|[\\w\\W]*%>/gm),\n He = ue(/\\$\\{[\\w\\W]*}/gm),\n Je = ue(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/),\n Ke = ue(/^aria-[\\-\\w]+$/),\n Ge = ue(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i),\n Ye = ue(/^(?:\\w+script|data):/i),\n $e = ue(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g),\n Xe = ue(/^html$/i),\n Ze = ue(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar Qe = Object.freeze({\n __proto__: null,\n ARIA_ATTR: Ke,\n ATTR_WHITESPACE: $e,\n CUSTOM_ELEMENT: Ze,\n DATA_ATTR: Je,\n DOCTYPE_NAME: Xe,\n ERB_EXPR: qe,\n IS_ALLOWED_URI: Ge,\n IS_SCRIPT_OR_DATA: Ye,\n MUSTACHE_EXPR: ze,\n TMPLIT_EXPR: He\n});\n\nvar ti = 1,\n ei = 3,\n ii = 7,\n ni = 8,\n ri = 9,\n oi = function oi() {\n return \"undefined\" == typeof window ? null : window;\n};\n\nvar si = function t() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : oi();\n\n var i = function i(e) {\n return t(e);\n };\n\n if (i.version = \"3.2.3\", i.removed = [], !e || !e.document || e.document.nodeType !== ri) return i.isSupported = !1, i;\n var n = e.document;\n var r = n,\n o = r.currentScript,\n s = e.DocumentFragment,\n a = e.HTMLTemplateElement,\n l = e.Node,\n c = e.Element,\n u = e.NodeFilter,\n _e$NamedNodeMap = e.NamedNodeMap,\n h = _e$NamedNodeMap === void 0 ? e.NamedNodeMap || e.MozNamedAttrMap : _e$NamedNodeMap,\n d = e.HTMLFormElement,\n g = e.DOMParser,\n m = e.trustedTypes,\n p = c.prototype,\n f = Ne(p, \"cloneNode\"),\n b = Ne(p, \"remove\"),\n v = Ne(p, \"nextSibling\"),\n A = Ne(p, \"childNodes\"),\n y = Ne(p, \"parentNode\");\n\n if (\"function\" == typeof a) {\n var _t7 = n.createElement(\"template\");\n\n _t7.content && _t7.content.ownerDocument && (n = _t7.content.ownerDocument);\n }\n\n var x,\n C = \"\";\n var _n7 = n,\n E = _n7.implementation,\n S = _n7.createNodeIterator,\n R = _n7.createDocumentFragment,\n k = _n7.getElementsByTagName,\n T = r.importNode;\n var w = {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n i.isSupported = \"function\" == typeof re && \"function\" == typeof y && E && void 0 !== E.createHTMLDocument;\n var L = Qe.MUSTACHE_EXPR,\n D = Qe.ERB_EXPR,\n N = Qe.TMPLIT_EXPR,\n I = Qe.DATA_ATTR,\n O = Qe.ARIA_ATTR,\n F = Qe.IS_SCRIPT_OR_DATA,\n P = Qe.ATTR_WHITESPACE,\n M = Qe.CUSTOM_ELEMENT;\n var B = Qe.IS_ALLOWED_URI,\n _ = null;\n var j = we({}, [].concat(_toConsumableArray(Ie), _toConsumableArray(Oe), _toConsumableArray(Fe), _toConsumableArray(Me), _toConsumableArray(_e)));\n var W = null;\n var U = we({}, [].concat(_toConsumableArray(je), _toConsumableArray(We), _toConsumableArray(Ue), _toConsumableArray(Ve)));\n var V = Object.seal(he(null, {\n tagNameCheck: {\n writable: !0,\n configurable: !1,\n enumerable: !0,\n value: null\n },\n attributeNameCheck: {\n writable: !0,\n configurable: !1,\n enumerable: !0,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: !0,\n configurable: !1,\n enumerable: !0,\n value: !1\n }\n })),\n z = null,\n q = null,\n H = !0,\n J = !0,\n K = !1,\n G = !0,\n Y = !1,\n $ = !0,\n X = !1,\n Z = !1,\n Q = !1,\n tt = !1,\n et = !1,\n it = !1,\n nt = !0,\n rt = !1,\n ot = !0,\n st = !1,\n at = {},\n lt = null;\n var ct = we({}, [\"annotation-xml\", \"audio\", \"colgroup\", \"desc\", \"foreignobject\", \"head\", \"iframe\", \"math\", \"mi\", \"mn\", \"mo\", \"ms\", \"mtext\", \"noembed\", \"noframes\", \"noscript\", \"plaintext\", \"script\", \"style\", \"svg\", \"template\", \"thead\", \"title\", \"video\", \"xmp\"]);\n var ut = null;\n var ht = we({}, [\"audio\", \"video\", \"img\", \"source\", \"image\", \"track\"]);\n var dt = null;\n var gt = we({}, [\"alt\", \"class\", \"for\", \"id\", \"label\", \"name\", \"pattern\", \"placeholder\", \"role\", \"summary\", \"title\", \"value\", \"style\", \"xmlns\"]),\n mt = \"http://www.w3.org/1998/Math/MathML\",\n pt = \"http://www.w3.org/2000/svg\",\n ft = \"http://www.w3.org/1999/xhtml\";\n var bt = ft,\n vt = !1,\n At = null;\n var yt = we({}, [mt, pt, ft], ve);\n var xt = we({}, [\"mi\", \"mo\", \"mn\", \"ms\", \"mtext\"]),\n Ct = we({}, [\"annotation-xml\"]);\n var Et = we({}, [\"title\", \"style\", \"font\", \"a\", \"script\"]);\n var St = null;\n var Rt = [\"application/xhtml+xml\", \"text/html\"];\n var kt = null,\n Tt = null;\n\n var wt = n.createElement(\"form\"),\n Lt = function Lt(t) {\n return t instanceof RegExp || t instanceof Function;\n },\n Dt = function Dt() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n\n if (!Tt || Tt !== t) {\n if (t && \"object\" == _typeof(t) || (t = {}), t = De(t), St = -1 === Rt.indexOf(t.PARSER_MEDIA_TYPE) ? \"text/html\" : t.PARSER_MEDIA_TYPE, kt = \"application/xhtml+xml\" === St ? ve : be, _ = Ee(t, \"ALLOWED_TAGS\") ? we({}, t.ALLOWED_TAGS, kt) : j, W = Ee(t, \"ALLOWED_ATTR\") ? we({}, t.ALLOWED_ATTR, kt) : U, At = Ee(t, \"ALLOWED_NAMESPACES\") ? we({}, t.ALLOWED_NAMESPACES, ve) : yt, dt = Ee(t, \"ADD_URI_SAFE_ATTR\") ? we(De(gt), t.ADD_URI_SAFE_ATTR, kt) : gt, ut = Ee(t, \"ADD_DATA_URI_TAGS\") ? we(De(ht), t.ADD_DATA_URI_TAGS, kt) : ht, lt = Ee(t, \"FORBID_CONTENTS\") ? we({}, t.FORBID_CONTENTS, kt) : ct, z = Ee(t, \"FORBID_TAGS\") ? we({}, t.FORBID_TAGS, kt) : {}, q = Ee(t, \"FORBID_ATTR\") ? we({}, t.FORBID_ATTR, kt) : {}, at = !!Ee(t, \"USE_PROFILES\") && t.USE_PROFILES, H = !1 !== t.ALLOW_ARIA_ATTR, J = !1 !== t.ALLOW_DATA_ATTR, K = t.ALLOW_UNKNOWN_PROTOCOLS || !1, G = !1 !== t.ALLOW_SELF_CLOSE_IN_ATTR, Y = t.SAFE_FOR_TEMPLATES || !1, $ = !1 !== t.SAFE_FOR_XML, X = t.WHOLE_DOCUMENT || !1, tt = t.RETURN_DOM || !1, et = t.RETURN_DOM_FRAGMENT || !1, it = t.RETURN_TRUSTED_TYPE || !1, Q = t.FORCE_BODY || !1, nt = !1 !== t.SANITIZE_DOM, rt = t.SANITIZE_NAMED_PROPS || !1, ot = !1 !== t.KEEP_CONTENT, st = t.IN_PLACE || !1, B = t.ALLOWED_URI_REGEXP || Ge, bt = t.NAMESPACE || ft, xt = t.MATHML_TEXT_INTEGRATION_POINTS || xt, Ct = t.HTML_INTEGRATION_POINTS || Ct, V = t.CUSTOM_ELEMENT_HANDLING || {}, t.CUSTOM_ELEMENT_HANDLING && Lt(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck) && (V.tagNameCheck = t.CUSTOM_ELEMENT_HANDLING.tagNameCheck), t.CUSTOM_ELEMENT_HANDLING && Lt(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) && (V.attributeNameCheck = t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck), t.CUSTOM_ELEMENT_HANDLING && \"boolean\" == typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (V.allowCustomizedBuiltInElements = t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements), Y && (J = !1), et && (tt = !0), at && (_ = we({}, _e), W = [], !0 === at.html && (we(_, Ie), we(W, je)), !0 === at.svg && (we(_, Oe), we(W, We), we(W, Ve)), !0 === at.svgFilters && (we(_, Fe), we(W, We), we(W, Ve)), !0 === at.mathMl && (we(_, Me), we(W, Ue), we(W, Ve))), t.ADD_TAGS && (_ === j && (_ = De(_)), we(_, t.ADD_TAGS, kt)), t.ADD_ATTR && (W === U && (W = De(W)), we(W, t.ADD_ATTR, kt)), t.ADD_URI_SAFE_ATTR && we(dt, t.ADD_URI_SAFE_ATTR, kt), t.FORBID_CONTENTS && (lt === ct && (lt = De(lt)), we(lt, t.FORBID_CONTENTS, kt)), ot && (_[\"#text\"] = !0), X && we(_, [\"html\", \"head\", \"body\"]), _.table && (we(_, [\"tbody\"]), delete z.tbody), t.TRUSTED_TYPES_POLICY) {\n if (\"function\" != typeof t.TRUSTED_TYPES_POLICY.createHTML) throw Re('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n if (\"function\" != typeof t.TRUSTED_TYPES_POLICY.createScriptURL) throw Re('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n x = t.TRUSTED_TYPES_POLICY, C = x.createHTML(\"\");\n } else void 0 === x && (x = function (t, e) {\n if (\"object\" != _typeof(t) || \"function\" != typeof t.createPolicy) return null;\n var i = null;\n var n = \"data-tt-policy-suffix\";\n e && e.hasAttribute(n) && (i = e.getAttribute(n));\n var r = \"dompurify\" + (i ? \"#\" + i : \"\");\n\n try {\n return t.createPolicy(r, {\n createHTML: function createHTML(t) {\n return t;\n },\n createScriptURL: function createScriptURL(t) {\n return t;\n }\n });\n } catch (t) {\n return console.warn(\"TrustedTypes policy \" + r + \" could not be created.\"), null;\n }\n }(m, o)), null !== x && \"string\" == typeof C && (C = x.createHTML(\"\"));\n\n ce && ce(t), Tt = t;\n }\n },\n Nt = we({}, [].concat(_toConsumableArray(Oe), _toConsumableArray(Fe), _toConsumableArray(Pe))),\n It = we({}, [].concat(_toConsumableArray(Me), _toConsumableArray(Be))),\n Ot = function Ot(t) {\n fe(i.removed, {\n element: t\n });\n\n try {\n y(t).removeChild(t);\n } catch (e) {\n b(t);\n }\n },\n Ft = function Ft(t, e) {\n try {\n fe(i.removed, {\n attribute: e.getAttributeNode(t),\n from: e\n });\n } catch (t) {\n fe(i.removed, {\n attribute: null,\n from: e\n });\n }\n\n if (e.removeAttribute(t), \"is\" === t) if (tt || et) try {\n Ot(e);\n } catch (t) {} else try {\n e.setAttribute(t, \"\");\n } catch (t) {}\n },\n Pt = function Pt(t) {\n var e = null,\n i = null;\n if (Q) t = \"<remove></remove>\" + t;else {\n var _e11 = Ae(t, /^[\\r\\n\\t ]+/);\n\n i = _e11 && _e11[0];\n }\n \"application/xhtml+xml\" === St && bt === ft && (t = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + t + \"</body></html>\");\n var r = x ? x.createHTML(t) : t;\n if (bt === ft) try {\n e = new g().parseFromString(r, St);\n } catch (t) {}\n\n if (!e || !e.documentElement) {\n e = E.createDocument(bt, \"template\", null);\n\n try {\n e.documentElement.innerHTML = vt ? C : r;\n } catch (t) {}\n }\n\n var o = e.body || e.documentElement;\n return t && i && o.insertBefore(n.createTextNode(i), o.childNodes[0] || null), bt === ft ? k.call(e, X ? \"html\" : \"body\")[0] : X ? e.documentElement : o;\n },\n Mt = function Mt(t) {\n return S.call(t.ownerDocument || t, t, u.SHOW_ELEMENT | u.SHOW_COMMENT | u.SHOW_TEXT | u.SHOW_PROCESSING_INSTRUCTION | u.SHOW_CDATA_SECTION, null);\n },\n Bt = function Bt(t) {\n return t instanceof d && (\"string\" != typeof t.nodeName || \"string\" != typeof t.textContent || \"function\" != typeof t.removeChild || !(t.attributes instanceof h) || \"function\" != typeof t.removeAttribute || \"function\" != typeof t.setAttribute || \"string\" != typeof t.namespaceURI || \"function\" != typeof t.insertBefore || \"function\" != typeof t.hasChildNodes);\n },\n _t = function _t(t) {\n return \"function\" == typeof l && t instanceof l;\n };\n\n function jt(t, e, n) {\n me(t, function (t) {\n t.call(i, e, n, Tt);\n });\n }\n\n var Wt = function Wt(t) {\n var e = null;\n if (jt(w.beforeSanitizeElements, t, null), Bt(t)) return Ot(t), !0;\n var n = kt(t.nodeName);\n if (jt(w.uponSanitizeElement, t, {\n tagName: n,\n allowedTags: _\n }), t.hasChildNodes() && !_t(t.firstElementChild) && Se(/<[/\\w]/g, t.innerHTML) && Se(/<[/\\w]/g, t.textContent)) return Ot(t), !0;\n if (t.nodeType === ii) return Ot(t), !0;\n if ($ && t.nodeType === ni && Se(/<[/\\w]/g, t.data)) return Ot(t), !0;\n\n if (!_[n] || z[n]) {\n if (!z[n] && Vt(n)) {\n if (V.tagNameCheck instanceof RegExp && Se(V.tagNameCheck, n)) return !1;\n if (V.tagNameCheck instanceof Function && V.tagNameCheck(n)) return !1;\n }\n\n if (ot && !lt[n]) {\n var _e12 = y(t) || t.parentNode,\n _i13 = A(t) || t.childNodes;\n\n if (_i13 && _e12) {\n for (var _n8 = _i13.length - 1; _n8 >= 0; --_n8) {\n var _r4 = f(_i13[_n8], !0);\n\n _r4.__removalCount = (t.__removalCount || 0) + 1, _e12.insertBefore(_r4, v(t));\n }\n }\n }\n\n return Ot(t), !0;\n }\n\n return t instanceof c && !function (t) {\n var e = y(t);\n e && e.tagName || (e = {\n namespaceURI: bt,\n tagName: \"template\"\n });\n var i = be(t.tagName),\n n = be(e.tagName);\n return !!At[t.namespaceURI] && (t.namespaceURI === pt ? e.namespaceURI === ft ? \"svg\" === i : e.namespaceURI === mt ? \"svg\" === i && (\"annotation-xml\" === n || xt[n]) : Boolean(Nt[i]) : t.namespaceURI === mt ? e.namespaceURI === ft ? \"math\" === i : e.namespaceURI === pt ? \"math\" === i && Ct[n] : Boolean(It[i]) : t.namespaceURI === ft ? !(e.namespaceURI === pt && !Ct[n]) && !(e.namespaceURI === mt && !xt[n]) && !It[i] && (Et[i] || !Nt[i]) : !(\"application/xhtml+xml\" !== St || !At[t.namespaceURI]));\n }(t) ? (Ot(t), !0) : \"noscript\" !== n && \"noembed\" !== n && \"noframes\" !== n || !Se(/<\\/no(script|embed|frames)/i, t.innerHTML) ? (Y && t.nodeType === ei && (e = t.textContent, me([L, D, N], function (t) {\n e = ye(e, t, \" \");\n }), t.textContent !== e && (fe(i.removed, {\n element: t.cloneNode()\n }), t.textContent = e)), jt(w.afterSanitizeElements, t, null), !1) : (Ot(t), !0);\n },\n Ut = function Ut(t, e, i) {\n if (nt && (\"id\" === e || \"name\" === e) && (i in n || i in wt)) return !1;\n if (J && !q[e] && Se(I, e)) ;else if (H && Se(O, e)) ;else if (!W[e] || q[e]) {\n if (!(Vt(t) && (V.tagNameCheck instanceof RegExp && Se(V.tagNameCheck, t) || V.tagNameCheck instanceof Function && V.tagNameCheck(t)) && (V.attributeNameCheck instanceof RegExp && Se(V.attributeNameCheck, e) || V.attributeNameCheck instanceof Function && V.attributeNameCheck(e)) || \"is\" === e && V.allowCustomizedBuiltInElements && (V.tagNameCheck instanceof RegExp && Se(V.tagNameCheck, i) || V.tagNameCheck instanceof Function && V.tagNameCheck(i)))) return !1;\n } else if (dt[e]) ;else if (Se(B, ye(i, P, \"\"))) ;else if (\"src\" !== e && \"xlink:href\" !== e && \"href\" !== e || \"script\" === t || 0 !== xe(i, \"data:\") || !ut[t]) {\n if (K && !Se(F, ye(i, P, \"\"))) ;else if (i) return !1;\n } else ;\n return !0;\n },\n Vt = function Vt(t) {\n return \"annotation-xml\" !== t && Ae(t, M);\n },\n zt = function zt(t) {\n jt(w.beforeSanitizeAttributes, t, null);\n var e = t.attributes;\n if (!e || Bt(t)) return;\n var n = {\n attrName: \"\",\n attrValue: \"\",\n keepAttr: !0,\n allowedAttributes: W,\n forceKeepAttr: void 0\n };\n var r = e.length;\n\n var _loop = function _loop() {\n var o = e[r],\n s = o.name,\n a = o.namespaceURI,\n l = o.value,\n c = kt(s);\n var u = \"value\" === s ? l : Ce(l);\n\n if (n.attrName = c, n.attrValue = u, n.keepAttr = !0, n.forceKeepAttr = void 0, jt(w.uponSanitizeAttribute, t, n), u = n.attrValue, !rt || \"id\" !== c && \"name\" !== c || (Ft(s, t), u = \"user-content-\" + u), $ && Se(/((--!?|])>)|<\\/(style|title)/i, u)) {\n Ft(s, t);\n return \"continue\";\n }\n\n if (n.forceKeepAttr) return \"continue\";\n if (Ft(s, t), !n.keepAttr) return \"continue\";\n\n if (!G && Se(/\\/>/i, u)) {\n Ft(s, t);\n return \"continue\";\n }\n\n Y && me([L, D, N], function (t) {\n u = ye(u, t, \" \");\n });\n var h = kt(t.nodeName);\n\n if (Ut(h, c, u)) {\n if (x && \"object\" == _typeof(m) && \"function\" == typeof m.getAttributeType) if (a) ;else switch (m.getAttributeType(h, c)) {\n case \"TrustedHTML\":\n u = x.createHTML(u);\n break;\n\n case \"TrustedScriptURL\":\n u = x.createScriptURL(u);\n }\n\n try {\n a ? t.setAttributeNS(a, s, u) : t.setAttribute(s, u), Bt(t) ? Ot(t) : pe(i.removed);\n } catch (t) {}\n }\n };\n\n for (; r--;) {\n var _ret = _loop();\n\n if (_ret === \"continue\") continue;\n }\n\n jt(w.afterSanitizeAttributes, t, null);\n },\n qt = function t(e) {\n var i = null;\n var n = Mt(e);\n\n for (jt(w.beforeSanitizeShadowDOM, e, null); i = n.nextNode();) {\n jt(w.uponSanitizeShadowNode, i, null), Wt(i), zt(i), i.content instanceof s && t(i.content);\n }\n\n jt(w.afterSanitizeShadowDOM, e, null);\n };\n\n return i.sanitize = function (t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n n = null,\n o = null,\n a = null,\n c = null;\n\n if (vt = !t, vt && (t = \"\\x3c!--\\x3e\"), \"string\" != typeof t && !_t(t)) {\n if (\"function\" != typeof t.toString) throw Re(\"toString is not a function\");\n if (\"string\" != typeof (t = t.toString())) throw Re(\"dirty is not a string, aborting\");\n }\n\n if (!i.isSupported) return t;\n\n if (Z || Dt(e), i.removed = [], \"string\" == typeof t && (st = !1), st) {\n if (t.nodeName) {\n var _e13 = kt(t.nodeName);\n\n if (!_[_e13] || z[_e13]) throw Re(\"root node is forbidden and cannot be sanitized in-place\");\n }\n } else if (t instanceof l) n = Pt(\"\\x3c!----\\x3e\"), o = n.ownerDocument.importNode(t, !0), o.nodeType === ti && \"BODY\" === o.nodeName || \"HTML\" === o.nodeName ? n = o : n.appendChild(o);else {\n if (!tt && !Y && !X && -1 === t.indexOf(\"<\")) return x && it ? x.createHTML(t) : t;\n if (n = Pt(t), !n) return tt ? null : it ? C : \"\";\n }\n\n n && Q && Ot(n.firstChild);\n var u = Mt(st ? t : n);\n\n for (; a = u.nextNode();) {\n Wt(a), zt(a), a.content instanceof s && qt(a.content);\n }\n\n if (st) return t;\n\n if (tt) {\n if (et) for (c = R.call(n.ownerDocument); n.firstChild;) {\n c.appendChild(n.firstChild);\n } else c = n;\n return (W.shadowroot || W.shadowrootmode) && (c = T.call(r, c, !0)), c;\n }\n\n var h = X ? n.outerHTML : n.innerHTML;\n return X && _[\"!doctype\"] && n.ownerDocument && n.ownerDocument.doctype && n.ownerDocument.doctype.name && Se(Xe, n.ownerDocument.doctype.name) && (h = \"<!DOCTYPE \" + n.ownerDocument.doctype.name + \">\\n\" + h), Y && me([L, D, N], function (t) {\n h = ye(h, t, \" \");\n }), x && it ? x.createHTML(h) : h;\n }, i.setConfig = function () {\n Dt(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}), Z = !0;\n }, i.clearConfig = function () {\n Tt = null, Z = !1;\n }, i.isValidAttribute = function (t, e, i) {\n Tt || Dt({});\n var n = kt(t),\n r = kt(e);\n return Ut(n, r, i);\n }, i.addHook = function (t, e) {\n \"function\" == typeof e && fe(w[t], e);\n }, i.removeHook = function (t) {\n return pe(w[t]);\n }, i.removeHooks = function (t) {\n w[t] = [];\n }, i.removeAllHooks = function () {\n w = {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n }, i;\n}();\n\nsi.addHook(\"uponSanitizeAttribute\", function (t, e) {\n /^data-trix-/.test(e.attrName) && (e.forceKeepAttr = !0);\n});\nvar ai = \"style href src width height language class\".split(\" \"),\n li = \"javascript:\".split(\" \"),\n ci = \"script iframe form noscript\".split(\" \");\n\nvar ui = /*#__PURE__*/function (_q7) {\n _inherits(ui, _q7);\n\n var _super9 = _createSuper(ui);\n\n function ui(t) {\n var _this14;\n\n _classCallCheck(this, ui);\n\n var _ref13 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref13.allowedAttributes,\n i = _ref13.forbiddenProtocols,\n n = _ref13.forbiddenElements;\n\n _this14 = _super9.apply(this, arguments), _this14.allowedAttributes = e || ai, _this14.forbiddenProtocols = i || li, _this14.forbiddenElements = n || ci, _this14.body = hi(t);\n return _this14;\n }\n\n _createClass(ui, [{\n key: \"sanitize\",\n value: function sanitize() {\n return this.sanitizeElements(), this.normalizeListElementNesting(), si.setConfig(l), this.body = si.sanitize(this.body), this.body;\n }\n }, {\n key: \"getHTML\",\n value: function getHTML() {\n return this.body.innerHTML;\n }\n }, {\n key: \"getBody\",\n value: function getBody() {\n return this.body;\n }\n }, {\n key: \"sanitizeElements\",\n value: function sanitizeElements() {\n var t = R(this.body),\n e = [];\n\n for (; t.nextNode();) {\n var _i14 = t.currentNode;\n\n switch (_i14.nodeType) {\n case Node.ELEMENT_NODE:\n this.elementIsRemovable(_i14) ? e.push(_i14) : this.sanitizeElement(_i14);\n break;\n\n case Node.COMMENT_NODE:\n e.push(_i14);\n }\n }\n\n return e.forEach(function (t) {\n return S(t);\n }), this.body;\n }\n }, {\n key: \"sanitizeElement\",\n value: function sanitizeElement(t) {\n var _this15 = this;\n\n return t.hasAttribute(\"href\") && this.forbiddenProtocols.includes(t.protocol) && t.removeAttribute(\"href\"), Array.from(t.attributes).forEach(function (e) {\n var i = e.name;\n _this15.allowedAttributes.includes(i) || 0 === i.indexOf(\"data-trix\") || t.removeAttribute(i);\n }), t;\n }\n }, {\n key: \"normalizeListElementNesting\",\n value: function normalizeListElementNesting() {\n return Array.from(this.body.querySelectorAll(\"ul,ol\")).forEach(function (t) {\n var e = t.previousElementSibling;\n e && \"li\" === k(e) && e.appendChild(t);\n }), this.body;\n }\n }, {\n key: \"elementIsRemovable\",\n value: function elementIsRemovable(t) {\n if ((null == t ? void 0 : t.nodeType) === Node.ELEMENT_NODE) return this.elementIsForbidden(t) || this.elementIsntSerializable(t);\n }\n }, {\n key: \"elementIsForbidden\",\n value: function elementIsForbidden(t) {\n return this.forbiddenElements.includes(k(t));\n }\n }, {\n key: \"elementIsntSerializable\",\n value: function elementIsntSerializable(t) {\n return \"false\" === t.getAttribute(\"data-trix-serialize\") && !P(t);\n }\n }], [{\n key: \"setHTML\",\n value: function setHTML(t, e) {\n var i = new this(e).sanitize(),\n n = i.getHTML ? i.getHTML() : i.outerHTML;\n t.innerHTML = n;\n }\n }, {\n key: \"sanitize\",\n value: function sanitize(t, e) {\n var i = new this(t, e);\n return i.sanitize(), i;\n }\n }]);\n\n return ui;\n}(q);\n\nvar hi = function hi() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\";\n t = t.replace(/<\\/html[^>]*>[^]*$/i, \"</html>\");\n var e = document.implementation.createHTMLDocument(\"\");\n return e.documentElement.innerHTML = t, Array.from(e.head.querySelectorAll(\"style\")).forEach(function (t) {\n e.body.appendChild(t);\n }), e.body;\n},\n di = z.css;\n\nvar gi = /*#__PURE__*/function (_ie2) {\n _inherits(gi, _ie2);\n\n var _super10 = _createSuper(gi);\n\n function gi() {\n var _this16;\n\n _classCallCheck(this, gi);\n\n _this16 = _super10.apply(this, arguments), _this16.attachment = _this16.object, _this16.attachment.uploadProgressDelegate = _assertThisInitialized(_this16), _this16.attachmentPiece = _this16.options.piece;\n return _this16;\n }\n\n _createClass(gi, [{\n key: \"createContentNodes\",\n value: function createContentNodes() {\n return [];\n }\n }, {\n key: \"createNodes\",\n value: function createNodes() {\n var t;\n var e = t = T({\n tagName: \"figure\",\n className: this.getClassName(),\n data: this.getData(),\n editable: !1\n }),\n i = this.getHref();\n return i && (t = T({\n tagName: \"a\",\n editable: !1,\n attributes: {\n href: i,\n tabindex: -1\n }\n }), e.appendChild(t)), this.attachment.hasContent() ? ui.setHTML(t, this.attachment.getContent()) : this.createContentNodes().forEach(function (e) {\n t.appendChild(e);\n }), t.appendChild(this.createCaptionElement()), this.attachment.isPending() && (this.progressElement = T({\n tagName: \"progress\",\n attributes: {\n class: di.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)), [mi(\"left\"), e, mi(\"right\")];\n }\n }, {\n key: \"createCaptionElement\",\n value: function createCaptionElement() {\n var t = T({\n tagName: \"figcaption\",\n className: di.attachmentCaption\n }),\n e = this.attachmentPiece.getCaption();\n if (e) t.classList.add(\"\".concat(di.attachmentCaption, \"--edited\")), t.textContent = e;else {\n var _e14, _i15;\n\n var _n9 = this.getCaptionConfig();\n\n if (_n9.name && (_e14 = this.attachment.getFilename()), _n9.size && (_i15 = this.attachment.getFormattedFilesize()), _e14) {\n var _i16 = T({\n tagName: \"span\",\n className: di.attachmentName,\n textContent: _e14\n });\n\n t.appendChild(_i16);\n }\n\n if (_i15) {\n _e14 && t.appendChild(document.createTextNode(\" \"));\n\n var _n10 = T({\n tagName: \"span\",\n className: di.attachmentSize,\n textContent: _i15\n });\n\n t.appendChild(_n10);\n }\n }\n return t;\n }\n }, {\n key: \"getClassName\",\n value: function getClassName() {\n var t = [di.attachment, \"\".concat(di.attachment, \"--\").concat(this.attachment.getType())],\n e = this.attachment.getExtension();\n return e && t.push(\"\".concat(di.attachment, \"--\").concat(e)), t.join(\" \");\n }\n }, {\n key: \"getData\",\n value: function getData() {\n var t = {\n trixAttachment: JSON.stringify(this.attachment),\n trixContentType: this.attachment.getContentType(),\n trixId: this.attachment.id\n },\n e = this.attachmentPiece.attributes;\n return e.isEmpty() || (t.trixAttributes = JSON.stringify(e)), this.attachment.isPending() && (t.trixSerialize = !1), t;\n }\n }, {\n key: \"getHref\",\n value: function getHref() {\n if (!pi(this.attachment.getContent(), \"a\")) return this.attachment.getHref();\n }\n }, {\n key: \"getCaptionConfig\",\n value: function getCaptionConfig() {\n var t;\n var e = this.attachment.getType(),\n n = kt(null === (t = i[e]) || void 0 === t ? void 0 : t.caption);\n return \"file\" === e && (n.name = !0), n;\n }\n }, {\n key: \"findProgressElement\",\n value: function findProgressElement() {\n var t;\n return null === (t = this.findElement()) || void 0 === t ? void 0 : t.querySelector(\"progress\");\n }\n }, {\n key: \"attachmentDidChangeUploadProgress\",\n value: function attachmentDidChangeUploadProgress() {\n var t = this.attachment.getUploadProgress(),\n e = this.findProgressElement();\n e && (e.value = t);\n }\n }]);\n\n return gi;\n}(ie);\n\nvar mi = function mi(t) {\n return T({\n tagName: \"span\",\n textContent: d,\n data: {\n trixCursorTarget: t,\n trixSerialize: !1\n }\n });\n},\n pi = function pi(t, e) {\n var i = T(\"div\");\n return ui.setHTML(i, t || \"\"), i.querySelector(e);\n};\n\nvar fi = /*#__PURE__*/function (_gi) {\n _inherits(fi, _gi);\n\n var _super11 = _createSuper(fi);\n\n function fi() {\n var _this17;\n\n _classCallCheck(this, fi);\n\n _this17 = _super11.apply(this, arguments), _this17.attachment.previewDelegate = _assertThisInitialized(_this17);\n return _this17;\n }\n\n _createClass(fi, [{\n key: \"createContentNodes\",\n value: function createContentNodes() {\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 }\n }, {\n key: \"createCaptionElement\",\n value: function createCaptionElement() {\n var t = _get(_getPrototypeOf(fi.prototype), \"createCaptionElement\", this).apply(this, arguments);\n\n return t.textContent || t.setAttribute(\"data-trix-placeholder\", c.captionPlaceholder), t;\n }\n }, {\n key: \"refresh\",\n value: function refresh(t) {\n var e;\n t || (t = null === (e = this.findElement()) || void 0 === e ? void 0 : e.querySelector(\"img\"));\n if (t) return this.updateAttributesForImage(t);\n }\n }, {\n key: \"updateAttributesForImage\",\n value: function updateAttributesForImage(t) {\n var e = this.attachment.getURL(),\n i = this.attachment.getPreviewURL();\n if (t.src = i || e, i === e) t.removeAttribute(\"data-trix-serialized-attributes\");else {\n var _i17 = JSON.stringify({\n src: e\n });\n\n t.setAttribute(\"data-trix-serialized-attributes\", _i17);\n }\n var n = this.attachment.getWidth(),\n r = this.attachment.getHeight();\n null != n && (t.width = n), null != r && (t.height = r);\n var o = [\"imageElement\", this.attachment.id, t.src, t.width, t.height].join(\"/\");\n t.dataset.trixStoreKey = o;\n }\n }, {\n key: \"attachmentDidChangeAttributes\",\n value: function attachmentDidChangeAttributes() {\n return this.refresh(this.image), this.refresh();\n }\n }]);\n\n return fi;\n}(gi);\n\nvar bi = /*#__PURE__*/function (_ie3) {\n _inherits(bi, _ie3);\n\n var _super12 = _createSuper(bi);\n\n function bi() {\n var _this18;\n\n _classCallCheck(this, bi);\n\n _this18 = _super12.apply(this, arguments), _this18.piece = _this18.object, _this18.attributes = _this18.piece.getAttributes(), _this18.textConfig = _this18.options.textConfig, _this18.context = _this18.options.context, _this18.piece.attachment ? _this18.attachment = _this18.piece.attachment : _this18.string = _this18.piece.toString();\n return _this18;\n }\n\n _createClass(bi, [{\n key: \"createNodes\",\n value: function createNodes() {\n var t = this.attachment ? this.createAttachmentNodes() : this.createStringNodes();\n var e = this.createElement();\n\n if (e) {\n var _i18 = function (t) {\n for (; null !== (e = t) && void 0 !== e && e.firstElementChild;) {\n var e;\n t = t.firstElementChild;\n }\n\n return t;\n }(e);\n\n Array.from(t).forEach(function (t) {\n _i18.appendChild(t);\n }), t = [e];\n }\n\n return t;\n }\n }, {\n key: \"createAttachmentNodes\",\n value: function createAttachmentNodes() {\n var t = this.attachment.isPreviewable() ? fi : gi;\n return this.createChildView(t, this.piece.attachment, {\n piece: this.piece\n }).getNodes();\n }\n }, {\n key: \"createStringNodes\",\n value: function createStringNodes() {\n var t;\n if (null !== (t = this.textConfig) && void 0 !== t && t.plaintext) return [document.createTextNode(this.string)];\n {\n var _t8 = [],\n _e15 = this.string.split(\"\\n\");\n\n for (var _i19 = 0; _i19 < _e15.length; _i19++) {\n var _n11 = _e15[_i19];\n\n if (_i19 > 0) {\n var _e16 = T(\"br\");\n\n _t8.push(_e16);\n }\n\n if (_n11.length) {\n var _e17 = document.createTextNode(this.preserveSpaces(_n11));\n\n _t8.push(_e17);\n }\n }\n\n return _t8;\n }\n }\n }, {\n key: \"createElement\",\n value: function createElement() {\n var t, e, i;\n var n = {};\n\n for (e in this.attributes) {\n i = this.attributes[e];\n\n var _o2 = ft(e);\n\n if (_o2) {\n if (_o2.tagName) {\n var r;\n\n var _e18 = T(_o2.tagName);\n\n r ? (r.appendChild(_e18), r = _e18) : t = r = _e18;\n }\n\n if (_o2.styleProperty && (n[_o2.styleProperty] = i), _o2.style) for (e in _o2.style) {\n i = _o2.style[e], n[e] = i;\n }\n }\n }\n\n if (Object.keys(n).length) for (e in t || (t = T(\"span\")), n) {\n i = n[e], t.style[e] = i;\n }\n return t;\n }\n }, {\n key: \"createContainerElement\",\n value: function createContainerElement() {\n for (var _t9 in this.attributes) {\n var _e19 = this.attributes[_t9],\n _i20 = ft(_t9);\n\n if (_i20 && _i20.groupTagName) {\n var _n12 = {};\n return _n12[_t9] = _e19, T(_i20.groupTagName, _n12);\n }\n }\n }\n }, {\n key: \"preserveSpaces\",\n value: function preserveSpaces(t) {\n return this.context.isLast && (t = t.replace(/\\ $/, g)), t = t.replace(/(\\S)\\ {3}(\\S)/g, \"$1 \".concat(g, \" $2\")).replace(/\\ {2}/g, \"\".concat(g, \" \")).replace(/\\ {2}/g, \" \".concat(g)), (this.context.isFirst || this.context.followsWhitespace) && (t = t.replace(/^\\ /, g)), t;\n }\n }]);\n\n return bi;\n}(ie);\n\nvar vi = /*#__PURE__*/function (_ie4) {\n _inherits(vi, _ie4);\n\n var _super13 = _createSuper(vi);\n\n function vi() {\n var _this19;\n\n _classCallCheck(this, vi);\n\n _this19 = _super13.apply(this, arguments), _this19.text = _this19.object, _this19.textConfig = _this19.options.textConfig;\n return _this19;\n }\n\n _createClass(vi, [{\n key: \"createNodes\",\n value: function createNodes() {\n var t = [],\n e = Xt.groupObjects(this.getPieces()),\n i = e.length - 1;\n\n for (var _r5 = 0; _r5 < e.length; _r5++) {\n var _o3 = e[_r5],\n _s3 = {};\n 0 === _r5 && (_s3.isFirst = !0), _r5 === i && (_s3.isLast = !0), Ai(n) && (_s3.followsWhitespace = !0);\n\n var _a = this.findOrCreateCachedChildView(bi, _o3, {\n textConfig: this.textConfig,\n context: _s3\n });\n\n t.push.apply(t, _toConsumableArray(Array.from(_a.getNodes() || [])));\n var n = _o3;\n }\n\n return t;\n }\n }, {\n key: \"getPieces\",\n value: function getPieces() {\n return Array.from(this.text.getPieces()).filter(function (t) {\n return !t.hasAttribute(\"blockBreak\");\n });\n }\n }]);\n\n return vi;\n}(ie);\n\nvar Ai = function Ai(t) {\n return /\\s$/.test(null == t ? void 0 : t.toString());\n},\n yi = z.css;\n\nvar xi = /*#__PURE__*/function (_ie5) {\n _inherits(xi, _ie5);\n\n var _super14 = _createSuper(xi);\n\n function xi() {\n var _this20;\n\n _classCallCheck(this, xi);\n\n _this20 = _super14.apply(this, arguments), _this20.block = _this20.object, _this20.attributes = _this20.block.getAttributes();\n return _this20;\n }\n\n _createClass(xi, [{\n key: \"createNodes\",\n value: function createNodes() {\n var t = [document.createComment(\"block\")];\n if (this.block.isEmpty()) t.push(T(\"br\"));else {\n var e;\n\n var _i21 = null === (e = mt(this.block.getLastAttribute())) || void 0 === e ? void 0 : e.text,\n _n13 = this.findOrCreateCachedChildView(vi, this.block.text, {\n textConfig: _i21\n });\n\n t.push.apply(t, _toConsumableArray(Array.from(_n13.getNodes() || []))), this.shouldAddExtraNewlineElement() && t.push(T(\"br\"));\n }\n if (this.attributes.length) return t;\n {\n var _e20;\n\n var _i22 = n.default.tagName;\n this.block.isRTL() && (_e20 = {\n dir: \"rtl\"\n });\n\n var _r6 = T({\n tagName: _i22,\n attributes: _e20\n });\n\n return t.forEach(function (t) {\n return _r6.appendChild(t);\n }), [_r6];\n }\n }\n }, {\n key: \"createContainerElement\",\n value: function createContainerElement(t) {\n var e = {};\n var i;\n\n var n = this.attributes[t],\n _mt = mt(n),\n r = _mt.tagName,\n _mt$htmlAttributes = _mt.htmlAttributes,\n o = _mt$htmlAttributes === void 0 ? [] : _mt$htmlAttributes;\n\n if (0 === t && this.block.isRTL() && Object.assign(e, {\n dir: \"rtl\"\n }), \"attachmentGallery\" === n) {\n var _t10 = this.block.getBlockBreakPosition();\n\n i = \"\".concat(yi.attachmentGallery, \" \").concat(yi.attachmentGallery, \"--\").concat(_t10);\n }\n\n return Object.entries(this.block.htmlAttributes).forEach(function (t) {\n var _t11 = _slicedToArray(t, 2),\n i = _t11[0],\n n = _t11[1];\n\n o.includes(i) && (e[i] = n);\n }), T({\n tagName: r,\n className: i,\n attributes: e\n });\n }\n }, {\n key: \"shouldAddExtraNewlineElement\",\n value: function shouldAddExtraNewlineElement() {\n return /\\n\\n$/.test(this.block.toString());\n }\n }]);\n\n return xi;\n}(ie);\n\nvar Ci = /*#__PURE__*/function (_ie6) {\n _inherits(Ci, _ie6);\n\n var _super15 = _createSuper(Ci);\n\n function Ci() {\n var _this21;\n\n _classCallCheck(this, Ci);\n\n _this21 = _super15.apply(this, arguments), _this21.element = _this21.options.element, _this21.elementStore = new Qt(), _this21.setDocument(_this21.object);\n return _this21;\n }\n\n _createClass(Ci, [{\n key: \"setDocument\",\n value: function setDocument(t) {\n t.isEqualTo(this.document) || (this.document = this.object = t);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this22 = this;\n\n if (this.childViews = [], this.shadowElement = T(\"div\"), !this.document.isEmpty()) {\n var _t12 = Xt.groupObjects(this.document.getBlocks(), {\n asTree: !0\n });\n\n Array.from(_t12).forEach(function (t) {\n var e = _this22.findOrCreateCachedChildView(xi, t);\n\n Array.from(e.getNodes()).map(function (t) {\n return _this22.shadowElement.appendChild(t);\n });\n });\n }\n }\n }, {\n key: \"isSynced\",\n value: function isSynced() {\n return Si(this.shadowElement, this.element);\n }\n }, {\n key: \"sync\",\n value: function sync() {\n var t = this.createDocumentFragmentForSync();\n\n for (; this.element.lastChild;) {\n this.element.removeChild(this.element.lastChild);\n }\n\n return this.element.appendChild(t), this.didSync();\n }\n }, {\n key: \"didSync\",\n value: function didSync() {\n var _this23 = this;\n\n return this.elementStore.reset(Ei(this.element)), Rt(function () {\n return _this23.garbageCollectCachedViews();\n });\n }\n }, {\n key: \"createDocumentFragmentForSync\",\n value: function createDocumentFragmentForSync() {\n var _this24 = this;\n\n var t = document.createDocumentFragment();\n return Array.from(this.shadowElement.childNodes).forEach(function (e) {\n t.appendChild(e.cloneNode(!0));\n }), Array.from(Ei(t)).forEach(function (t) {\n var e = _this24.elementStore.remove(t);\n\n e && t.parentNode.replaceChild(e, t);\n }), t;\n }\n }], [{\n key: \"render\",\n value: function render(t) {\n var e = T(\"div\"),\n i = new this(t, {\n element: e\n });\n return i.render(), i.sync(), e;\n }\n }]);\n\n return Ci;\n}(ie);\n\nvar Ei = function Ei(t) {\n return t.querySelectorAll(\"[data-trix-store-key]\");\n},\n Si = function Si(t, e) {\n return Ri(t.innerHTML) === Ri(e.innerHTML);\n},\n Ri = function Ri(t) {\n return t.replace(/ /g, \" \");\n};\n\nfunction ki(t) {\n var e, i;\n\n function n(e, i) {\n try {\n var o = t[e](i),\n s = o.value,\n a = s instanceof Ti;\n Promise.resolve(a ? s.v : s).then(function (i) {\n if (a) {\n var l = \"return\" === e ? \"return\" : \"next\";\n if (!s.k || i.done) return n(l, i);\n i = t[l](i).value;\n }\n\n r(o.done ? \"return\" : \"normal\", i);\n }, function (t) {\n n(\"throw\", t);\n });\n } catch (t) {\n r(\"throw\", t);\n }\n }\n\n function r(t, r) {\n switch (t) {\n case \"return\":\n e.resolve({\n value: r,\n done: !0\n });\n break;\n\n case \"throw\":\n e.reject(r);\n break;\n\n default:\n e.resolve({\n value: r,\n done: !1\n });\n }\n\n (e = e.next) ? n(e.key, e.arg) : i = null;\n }\n\n this._invoke = function (t, r) {\n return new Promise(function (o, s) {\n var a = {\n key: t,\n arg: r,\n resolve: o,\n reject: s,\n next: null\n };\n i ? i = i.next = a : (e = i = a, n(t, r));\n });\n }, \"function\" != typeof t.return && (this.return = void 0);\n}\n\nfunction Ti(t, e) {\n this.v = t, this.k = e;\n}\n\nfunction wi(t, e, i) {\n return (e = Li(e)) in t ? Object.defineProperty(t, e, {\n value: i,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = i, t;\n}\n\nfunction Li(t) {\n var e = function (t, e) {\n if (\"object\" != _typeof(t) || null === t) return t;\n var i = t[Symbol.toPrimitive];\n\n if (void 0 !== i) {\n var n = i.call(t, e || \"default\");\n if (\"object\" != _typeof(n)) return n;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (\"string\" === e ? String : Number)(t);\n }(t, \"string\");\n\n return \"symbol\" == _typeof(e) ? e : String(e);\n}\n\nki.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n}, ki.prototype.next = function (t) {\n return this._invoke(\"next\", t);\n}, ki.prototype.throw = function (t) {\n return this._invoke(\"throw\", t);\n}, ki.prototype.return = function (t) {\n return this._invoke(\"return\", t);\n};\n\nfunction Di(t, e) {\n return Oi(t, Ii(t, e, \"get\"));\n}\n\nfunction Ni(t, e, i) {\n return Fi(t, Ii(t, e, \"set\"), i), i;\n}\n\nfunction Ii(t, e, i) {\n if (!e.has(t)) throw new TypeError(\"attempted to \" + i + \" private field on non-instance\");\n return e.get(t);\n}\n\nfunction Oi(t, e) {\n return e.get ? e.get.call(t) : e.value;\n}\n\nfunction Fi(t, e, i) {\n if (e.set) e.set.call(t, i);else {\n if (!e.writable) throw new TypeError(\"attempted to set read only private field\");\n e.value = i;\n }\n}\n\nfunction Pi(t, e, i) {\n if (!e.has(t)) throw new TypeError(\"attempted to get private field on non-instance\");\n return i;\n}\n\nfunction Mi(t, e) {\n if (e.has(t)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n}\n\nfunction Bi(t, e, i) {\n Mi(t, e), e.set(t, i);\n}\n\nvar _i = /*#__PURE__*/function (_rt2) {\n _inherits(_i, _rt2);\n\n var _super16 = _createSuper(_i);\n\n function _i(t) {\n var _this25;\n\n _classCallCheck(this, _i);\n\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n _this25 = _super16.apply(this, arguments), _this25.attributes = Ht.box(e);\n return _this25;\n }\n\n _createClass(_i, [{\n key: \"copyWithAttributes\",\n value: function copyWithAttributes(t) {\n return new this.constructor(this.getValue(), t);\n }\n }, {\n key: \"copyWithAdditionalAttributes\",\n value: function copyWithAdditionalAttributes(t) {\n return this.copyWithAttributes(this.attributes.merge(t));\n }\n }, {\n key: \"copyWithoutAttribute\",\n value: function copyWithoutAttribute(t) {\n return this.copyWithAttributes(this.attributes.remove(t));\n }\n }, {\n key: \"copy\",\n value: function copy() {\n return this.copyWithAttributes(this.attributes);\n }\n }, {\n key: \"getAttribute\",\n value: function getAttribute(t) {\n return this.attributes.get(t);\n }\n }, {\n key: \"getAttributesHash\",\n value: function getAttributesHash() {\n return this.attributes;\n }\n }, {\n key: \"getAttributes\",\n value: function getAttributes() {\n return this.attributes.toObject();\n }\n }, {\n key: \"hasAttribute\",\n value: function hasAttribute(t) {\n return this.attributes.has(t);\n }\n }, {\n key: \"hasSameStringValueAsPiece\",\n value: function hasSameStringValueAsPiece(t) {\n return t && this.toString() === t.toString();\n }\n }, {\n key: \"hasSameAttributesAsPiece\",\n value: function hasSameAttributesAsPiece(t) {\n return t && (this.attributes === t.attributes || this.attributes.isEqualTo(t.attributes));\n }\n }, {\n key: \"isBlockBreak\",\n value: function isBlockBreak() {\n return !1;\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(t) {\n return _get(_getPrototypeOf(_i.prototype), \"isEqualTo\", this).apply(this, arguments) || this.hasSameConstructorAs(t) && this.hasSameStringValueAsPiece(t) && this.hasSameAttributesAsPiece(t);\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n return 0 === this.length;\n }\n }, {\n key: \"isSerializable\",\n value: function isSerializable() {\n return !0;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n type: this.constructor.type,\n attributes: this.getAttributes()\n };\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {\n return {\n type: this.constructor.type,\n attributes: this.attributes.inspect()\n };\n }\n }, {\n key: \"canBeGrouped\",\n value: function canBeGrouped() {\n return this.hasAttribute(\"href\");\n }\n }, {\n key: \"canBeGroupedWith\",\n value: function canBeGroupedWith(t) {\n return this.getAttribute(\"href\") === t.getAttribute(\"href\");\n }\n }, {\n key: \"getLength\",\n value: function getLength() {\n return this.length;\n }\n }, {\n key: \"canBeConsolidatedWith\",\n value: function canBeConsolidatedWith(t) {\n return !1;\n }\n }], [{\n key: \"registerType\",\n value: function registerType(t, e) {\n e.type = t, this.types[t] = e;\n }\n }, {\n key: \"fromJSON\",\n value: function fromJSON(t) {\n var e = this.types[t.type];\n if (e) return e.fromJSON(t);\n }\n }]);\n\n return _i;\n}(rt);\n\nwi(_i, \"types\", {});\n\nvar ji = /*#__PURE__*/function (_ee) {\n _inherits(ji, _ee);\n\n var _super17 = _createSuper(ji);\n\n function ji(t) {\n var _this26;\n\n _classCallCheck(this, ji);\n\n _this26 = _super17.apply(this, arguments), _this26.url = t;\n return _this26;\n }\n\n _createClass(ji, [{\n key: \"perform\",\n value: function perform(t) {\n var _this27 = this;\n\n var e = new Image();\n e.onload = function () {\n return e.width = _this27.width = e.naturalWidth, e.height = _this27.height = e.naturalHeight, t(!0, e);\n }, e.onerror = function () {\n return t(!1);\n }, e.src = this.url;\n }\n }]);\n\n return ji;\n}(ee);\n\nvar Wi = /*#__PURE__*/function (_rt3) {\n _inherits(Wi, _rt3);\n\n var _super18 = _createSuper(Wi);\n\n function Wi() {\n var _this28;\n\n _classCallCheck(this, Wi);\n\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n _this28 = _super18.call(this, t), _this28.releaseFile = _this28.releaseFile.bind(_assertThisInitialized(_this28)), _this28.attributes = Ht.box(t), _this28.didChangeAttributes();\n return _this28;\n }\n\n _createClass(Wi, [{\n key: \"getAttribute\",\n value: function getAttribute(t) {\n return this.attributes.get(t);\n }\n }, {\n key: \"hasAttribute\",\n value: function hasAttribute(t) {\n return this.attributes.has(t);\n }\n }, {\n key: \"getAttributes\",\n value: function getAttributes() {\n return this.attributes.toObject();\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n var e = this.attributes.merge(t);\n var i, n, r, o;\n if (!this.attributes.isEqualTo(e)) return this.attributes = e, this.didChangeAttributes(), null === (i = this.previewDelegate) || void 0 === i || null === (n = i.attachmentDidChangeAttributes) || void 0 === n || n.call(i, this), null === (r = this.delegate) || void 0 === r || null === (o = r.attachmentDidChangeAttributes) || void 0 === o ? void 0 : o.call(r, this);\n }\n }, {\n key: \"didChangeAttributes\",\n value: function didChangeAttributes() {\n if (this.isPreviewable()) return this.preloadURL();\n }\n }, {\n key: \"isPending\",\n value: function isPending() {\n return null != this.file && !(this.getURL() || this.getHref());\n }\n }, {\n key: \"isPreviewable\",\n value: function isPreviewable() {\n return this.attributes.has(\"previewable\") ? this.attributes.get(\"previewable\") : Wi.previewablePattern.test(this.getContentType());\n }\n }, {\n key: \"getType\",\n value: function getType() {\n return this.hasContent() ? \"content\" : this.isPreviewable() ? \"preview\" : \"file\";\n }\n }, {\n key: \"getURL\",\n value: function getURL() {\n return this.attributes.get(\"url\");\n }\n }, {\n key: \"getHref\",\n value: function getHref() {\n return this.attributes.get(\"href\");\n }\n }, {\n key: \"getFilename\",\n value: function getFilename() {\n return this.attributes.get(\"filename\") || \"\";\n }\n }, {\n key: \"getFilesize\",\n value: function getFilesize() {\n return this.attributes.get(\"filesize\");\n }\n }, {\n key: \"getFormattedFilesize\",\n value: function getFormattedFilesize() {\n var t = this.attributes.get(\"filesize\");\n return \"number\" == typeof t ? h.formatter(t) : \"\";\n }\n }, {\n key: \"getExtension\",\n value: function getExtension() {\n var t;\n return null === (t = this.getFilename().match(/\\.(\\w+)$/)) || void 0 === t ? void 0 : t[1].toLowerCase();\n }\n }, {\n key: \"getContentType\",\n value: function getContentType() {\n return this.attributes.get(\"contentType\");\n }\n }, {\n key: \"hasContent\",\n value: function hasContent() {\n return this.attributes.has(\"content\");\n }\n }, {\n key: \"getContent\",\n value: function getContent() {\n return this.attributes.get(\"content\");\n }\n }, {\n key: \"getWidth\",\n value: function getWidth() {\n return this.attributes.get(\"width\");\n }\n }, {\n key: \"getHeight\",\n value: function getHeight() {\n return this.attributes.get(\"height\");\n }\n }, {\n key: \"getFile\",\n value: function getFile() {\n return this.file;\n }\n }, {\n key: \"setFile\",\n value: function setFile(t) {\n if (this.file = t, this.isPreviewable()) return this.preloadFile();\n }\n }, {\n key: \"releaseFile\",\n value: function releaseFile() {\n this.releasePreloadedFile(), this.file = null;\n }\n }, {\n key: \"getUploadProgress\",\n value: function getUploadProgress() {\n return null != this.uploadProgress ? this.uploadProgress : 0;\n }\n }, {\n key: \"setUploadProgress\",\n value: function setUploadProgress(t) {\n var e, i;\n if (this.uploadProgress !== t) return this.uploadProgress = t, null === (e = this.uploadProgressDelegate) || void 0 === e || null === (i = e.attachmentDidChangeUploadProgress) || void 0 === i ? void 0 : i.call(e, this);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.getAttributes();\n }\n }, {\n key: \"getCacheKey\",\n value: function getCacheKey() {\n return [_get(_getPrototypeOf(Wi.prototype), \"getCacheKey\", this).apply(this, arguments), this.attributes.getCacheKey(), this.getPreviewURL()].join(\"/\");\n }\n }, {\n key: \"getPreviewURL\",\n value: function getPreviewURL() {\n return this.previewURL || this.preloadingURL;\n }\n }, {\n key: \"setPreviewURL\",\n value: function setPreviewURL(t) {\n var e, i, n, r;\n if (t !== this.getPreviewURL()) return this.previewURL = t, null === (e = this.previewDelegate) || void 0 === e || null === (i = e.attachmentDidChangeAttributes) || void 0 === i || i.call(e, this), null === (n = this.delegate) || void 0 === n || null === (r = n.attachmentDidChangePreviewURL) || void 0 === r ? void 0 : r.call(n, this);\n }\n }, {\n key: \"preloadURL\",\n value: function preloadURL() {\n return this.preload(this.getURL(), this.releaseFile);\n }\n }, {\n key: \"preloadFile\",\n value: function preloadFile() {\n if (this.file) return this.fileObjectURL = URL.createObjectURL(this.file), this.preload(this.fileObjectURL);\n }\n }, {\n key: \"releasePreloadedFile\",\n value: function releasePreloadedFile() {\n this.fileObjectURL && (URL.revokeObjectURL(this.fileObjectURL), this.fileObjectURL = null);\n }\n }, {\n key: \"preload\",\n value: function preload(t, e) {\n var _this29 = this;\n\n if (t && t !== this.getPreviewURL()) {\n this.preloadingURL = t;\n return new ji(t).then(function (i) {\n var n = i.width,\n r = i.height;\n return _this29.getWidth() && _this29.getHeight() || _this29.setAttributes({\n width: n,\n height: r\n }), _this29.preloadingURL = null, _this29.setPreviewURL(t), null == e ? void 0 : e();\n }).catch(function () {\n return _this29.preloadingURL = null, null == e ? void 0 : e();\n });\n }\n }\n }], [{\n key: \"attachmentForFile\",\n value: function attachmentForFile(t) {\n var e = new this(this.attributesForFile(t));\n return e.setFile(t), e;\n }\n }, {\n key: \"attributesForFile\",\n value: function attributesForFile(t) {\n return new Ht({\n filename: t.name,\n filesize: t.size,\n contentType: t.type\n });\n }\n }, {\n key: \"fromJSON\",\n value: function fromJSON(t) {\n return new this(t);\n }\n }]);\n\n return Wi;\n}(rt);\n\nwi(Wi, \"previewablePattern\", /^image(\\/(gif|png|webp|jpe?g)|$)/);\n\nvar Ui = /*#__PURE__*/function (_i23) {\n _inherits(Ui, _i23);\n\n var _super19 = _createSuper(Ui);\n\n function Ui(t) {\n var _this30;\n\n _classCallCheck(this, Ui);\n\n _this30 = _super19.apply(this, arguments), _this30.attachment = t, _this30.length = 1, _this30.ensureAttachmentExclusivelyHasAttribute(\"href\"), _this30.attachment.hasContent() || _this30.removeProhibitedAttributes();\n return _this30;\n }\n\n _createClass(Ui, [{\n key: \"ensureAttachmentExclusivelyHasAttribute\",\n value: function ensureAttachmentExclusivelyHasAttribute(t) {\n this.hasAttribute(t) && (this.attachment.hasAttribute(t) || this.attachment.setAttributes(this.attributes.slice([t])), this.attributes = this.attributes.remove(t));\n }\n }, {\n key: \"removeProhibitedAttributes\",\n value: function removeProhibitedAttributes() {\n var t = this.attributes.slice(Ui.permittedAttributes);\n t.isEqualTo(this.attributes) || (this.attributes = t);\n }\n }, {\n key: \"getValue\",\n value: function getValue() {\n return this.attachment;\n }\n }, {\n key: \"isSerializable\",\n value: function isSerializable() {\n return !this.attachment.isPending();\n }\n }, {\n key: \"getCaption\",\n value: function getCaption() {\n return this.attributes.get(\"caption\") || \"\";\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(t) {\n var e;\n return _get(_getPrototypeOf(Ui.prototype), \"isEqualTo\", this).call(this, t) && this.attachment.id === (null == t || null === (e = t.attachment) || void 0 === e ? void 0 : e.id);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return \"\";\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var t = _get(_getPrototypeOf(Ui.prototype), \"toJSON\", this).apply(this, arguments);\n\n return t.attachment = this.attachment, t;\n }\n }, {\n key: \"getCacheKey\",\n value: function getCacheKey() {\n return [_get(_getPrototypeOf(Ui.prototype), \"getCacheKey\", this).apply(this, arguments), this.attachment.getCacheKey()].join(\"/\");\n }\n }, {\n key: \"toConsole\",\n value: function toConsole() {\n return JSON.stringify(this.toString());\n }\n }], [{\n key: \"fromJSON\",\n value: function fromJSON(t) {\n return new this(Wi.fromJSON(t.attachment), t.attributes);\n }\n }]);\n\n return Ui;\n}(_i);\n\nwi(Ui, \"permittedAttributes\", [\"caption\", \"presentation\"]), _i.registerType(\"attachment\", Ui);\n\nvar Vi = /*#__PURE__*/function (_i24) {\n _inherits(Vi, _i24);\n\n var _super20 = _createSuper(Vi);\n\n function Vi(t) {\n var _this31;\n\n _classCallCheck(this, Vi);\n\n _this31 = _super20.apply(this, arguments), _this31.string = function (t) {\n return t.replace(/\\r\\n?/g, \"\\n\");\n }(t), _this31.length = _this31.string.length;\n return _this31;\n }\n\n _createClass(Vi, [{\n key: \"getValue\",\n value: function getValue() {\n return this.string;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.string.toString();\n }\n }, {\n key: \"isBlockBreak\",\n value: function isBlockBreak() {\n return \"\\n\" === this.toString() && !0 === this.getAttribute(\"blockBreak\");\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var t = _get(_getPrototypeOf(Vi.prototype), \"toJSON\", this).apply(this, arguments);\n\n return t.string = this.string, t;\n }\n }, {\n key: \"canBeConsolidatedWith\",\n value: function canBeConsolidatedWith(t) {\n return t && this.hasSameConstructorAs(t) && this.hasSameAttributesAsPiece(t);\n }\n }, {\n key: \"consolidateWith\",\n value: function consolidateWith(t) {\n return new this.constructor(this.toString() + t.toString(), this.attributes);\n }\n }, {\n key: \"splitAtOffset\",\n value: function splitAtOffset(t) {\n var e, i;\n return 0 === t ? (e = null, i = this) : t === this.length ? (e = this, i = null) : (e = new this.constructor(this.string.slice(0, t), this.attributes), i = new this.constructor(this.string.slice(t), this.attributes)), [e, i];\n }\n }, {\n key: \"toConsole\",\n value: function toConsole() {\n var t = this.string;\n return t.length > 15 && (t = t.slice(0, 14) + \"…\"), JSON.stringify(t.toString());\n }\n }], [{\n key: \"fromJSON\",\n value: function fromJSON(t) {\n return new this(t.string, t.attributes);\n }\n }]);\n\n return Vi;\n}(_i);\n\n_i.registerType(\"string\", Vi);\n\nvar zi = /*#__PURE__*/function (_rt4) {\n _inherits(zi, _rt4);\n\n var _super21 = _createSuper(zi);\n\n function zi() {\n var _this32;\n\n _classCallCheck(this, zi);\n\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n _this32 = _super21.apply(this, arguments), _this32.objects = t.slice(0), _this32.length = _this32.objects.length;\n return _this32;\n }\n\n _createClass(zi, [{\n key: \"indexOf\",\n value: function indexOf(t) {\n return this.objects.indexOf(t);\n }\n }, {\n key: \"splice\",\n value: function splice() {\n for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) {\n e[i] = arguments[i];\n }\n\n return new this.constructor(st.apply(void 0, [this.objects].concat(e)));\n }\n }, {\n key: \"eachObject\",\n value: function eachObject(t) {\n return this.objects.map(function (e, i) {\n return t(e, i);\n });\n }\n }, {\n key: \"insertObjectAtIndex\",\n value: function insertObjectAtIndex(t, e) {\n return this.splice(e, 0, t);\n }\n }, {\n key: \"insertSplittableListAtIndex\",\n value: function insertSplittableListAtIndex(t, e) {\n return this.splice.apply(this, [e, 0].concat(_toConsumableArray(t.objects)));\n }\n }, {\n key: \"insertSplittableListAtPosition\",\n value: function insertSplittableListAtPosition(t, e) {\n var _this$splitObjectAtPo = this.splitObjectAtPosition(e),\n _this$splitObjectAtPo2 = _slicedToArray(_this$splitObjectAtPo, 2),\n i = _this$splitObjectAtPo2[0],\n n = _this$splitObjectAtPo2[1];\n\n return new this.constructor(i).insertSplittableListAtIndex(t, n);\n }\n }, {\n key: \"editObjectAtIndex\",\n value: function editObjectAtIndex(t, e) {\n return this.replaceObjectAtIndex(e(this.objects[t]), t);\n }\n }, {\n key: \"replaceObjectAtIndex\",\n value: function replaceObjectAtIndex(t, e) {\n return this.splice(e, 1, t);\n }\n }, {\n key: \"removeObjectAtIndex\",\n value: function removeObjectAtIndex(t) {\n return this.splice(t, 1);\n }\n }, {\n key: \"getObjectAtIndex\",\n value: function getObjectAtIndex(t) {\n return this.objects[t];\n }\n }, {\n key: \"getSplittableListInRange\",\n value: function getSplittableListInRange(t) {\n var _this$splitObjectsAtR = this.splitObjectsAtRange(t),\n _this$splitObjectsAtR2 = _slicedToArray(_this$splitObjectsAtR, 3),\n e = _this$splitObjectsAtR2[0],\n i = _this$splitObjectsAtR2[1],\n n = _this$splitObjectsAtR2[2];\n\n return new this.constructor(e.slice(i, n + 1));\n }\n }, {\n key: \"selectSplittableList\",\n value: function selectSplittableList(t) {\n var e = this.objects.filter(function (e) {\n return t(e);\n });\n return new this.constructor(e);\n }\n }, {\n key: \"removeObjectsInRange\",\n value: function removeObjectsInRange(t) {\n var _this$splitObjectsAtR3 = this.splitObjectsAtRange(t),\n _this$splitObjectsAtR4 = _slicedToArray(_this$splitObjectsAtR3, 3),\n e = _this$splitObjectsAtR4[0],\n i = _this$splitObjectsAtR4[1],\n n = _this$splitObjectsAtR4[2];\n\n return new this.constructor(e).splice(i, n - i + 1);\n }\n }, {\n key: \"transformObjectsInRange\",\n value: function transformObjectsInRange(t, e) {\n var _this$splitObjectsAtR5 = this.splitObjectsAtRange(t),\n _this$splitObjectsAtR6 = _slicedToArray(_this$splitObjectsAtR5, 3),\n i = _this$splitObjectsAtR6[0],\n n = _this$splitObjectsAtR6[1],\n r = _this$splitObjectsAtR6[2],\n o = i.map(function (t, i) {\n return n <= i && i <= r ? e(t) : t;\n });\n\n return new this.constructor(o);\n }\n }, {\n key: \"splitObjectsAtRange\",\n value: function splitObjectsAtRange(t) {\n var _this$constructor$spl, _this$constructor$spl2;\n\n var e,\n _this$splitObjectAtPo3 = this.splitObjectAtPosition(Hi(t)),\n _this$splitObjectAtPo4 = _slicedToArray(_this$splitObjectAtPo3, 3),\n i = _this$splitObjectAtPo4[0],\n n = _this$splitObjectAtPo4[1],\n r = _this$splitObjectAtPo4[2];\n\n return (_this$constructor$spl = new this.constructor(i).splitObjectAtPosition(Ji(t) + r), _this$constructor$spl2 = _slicedToArray(_this$constructor$spl, 2), i = _this$constructor$spl2[0], e = _this$constructor$spl2[1], _this$constructor$spl), [i, n, e - 1];\n }\n }, {\n key: \"getObjectAtPosition\",\n value: function getObjectAtPosition(t) {\n var _this$findIndexAndOff = this.findIndexAndOffsetAtPosition(t),\n e = _this$findIndexAndOff.index;\n\n return this.objects[e];\n }\n }, {\n key: \"splitObjectAtPosition\",\n value: function splitObjectAtPosition(t) {\n var e, i;\n\n var _this$findIndexAndOff2 = this.findIndexAndOffsetAtPosition(t),\n n = _this$findIndexAndOff2.index,\n r = _this$findIndexAndOff2.offset,\n o = this.objects.slice(0);\n\n if (null != n) {\n if (0 === r) e = n, i = 0;else {\n var _t13 = this.getObjectAtIndex(n),\n _t13$splitAtOffset = _t13.splitAtOffset(r),\n _t13$splitAtOffset2 = _slicedToArray(_t13$splitAtOffset, 2),\n _s4 = _t13$splitAtOffset2[0],\n _a2 = _t13$splitAtOffset2[1];\n\n o.splice(n, 1, _s4, _a2), e = n + 1, i = _s4.getLength() - r;\n }\n } else e = o.length, i = 0;\n return [o, e, i];\n }\n }, {\n key: \"consolidate\",\n value: function consolidate() {\n var t = [];\n var e = this.objects[0];\n return this.objects.slice(1).forEach(function (i) {\n var n, r;\n null !== (n = (r = e).canBeConsolidatedWith) && void 0 !== n && n.call(r, i) ? e = e.consolidateWith(i) : (t.push(e), e = i);\n }), e && t.push(e), new this.constructor(t);\n }\n }, {\n key: \"consolidateFromIndexToIndex\",\n value: function consolidateFromIndexToIndex(t, e) {\n var i = this.objects.slice(0).slice(t, e + 1),\n n = new this.constructor(i).consolidate().toArray();\n return this.splice.apply(this, [t, i.length].concat(_toConsumableArray(n)));\n }\n }, {\n key: \"findIndexAndOffsetAtPosition\",\n value: function findIndexAndOffsetAtPosition(t) {\n var e,\n i = 0;\n\n for (e = 0; e < this.objects.length; e++) {\n var _n14 = i + this.objects[e].getLength();\n\n if (i <= t && t < _n14) return {\n index: e,\n offset: t - i\n };\n i = _n14;\n }\n\n return {\n index: null,\n offset: null\n };\n }\n }, {\n key: \"findPositionAtIndexAndOffset\",\n value: function findPositionAtIndexAndOffset(t, e) {\n var i = 0;\n\n for (var _n15 = 0; _n15 < this.objects.length; _n15++) {\n var _r7 = this.objects[_n15];\n if (_n15 < t) i += _r7.getLength();else if (_n15 === t) {\n i += e;\n break;\n }\n }\n\n return i;\n }\n }, {\n key: \"getEndPosition\",\n value: function getEndPosition() {\n var _this33 = this;\n\n return null == this.endPosition && (this.endPosition = 0, this.objects.forEach(function (t) {\n return _this33.endPosition += t.getLength();\n })), this.endPosition;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.objects.join(\"\");\n }\n }, {\n key: \"toArray\",\n value: function toArray() {\n return this.objects.slice(0);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.toArray();\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(t) {\n return _get(_getPrototypeOf(zi.prototype), \"isEqualTo\", this).apply(this, arguments) || qi(this.objects, null == t ? void 0 : t.objects);\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {\n return {\n objects: \"[\".concat(this.objects.map(function (t) {\n return t.inspect();\n }).join(\", \"), \"]\")\n };\n }\n }], [{\n key: \"box\",\n value: function box(t) {\n return t instanceof this ? t : new this(t);\n }\n }]);\n\n return zi;\n}(rt);\n\nvar qi = function qi(t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];\n if (t.length !== e.length) return !1;\n var i = !0;\n\n for (var _n16 = 0; _n16 < t.length; _n16++) {\n var _r8 = t[_n16];\n i && !_r8.isEqualTo(e[_n16]) && (i = !1);\n }\n\n return i;\n},\n Hi = function Hi(t) {\n return t[0];\n},\n Ji = function Ji(t) {\n return t[1];\n};\n\nvar Ki = /*#__PURE__*/function (_rt5) {\n _inherits(Ki, _rt5);\n\n var _super22 = _createSuper(Ki);\n\n function Ki() {\n var _this34;\n\n _classCallCheck(this, Ki);\n\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n _this34 = _super22.apply(this, arguments);\n var e = t.filter(function (t) {\n return !t.isEmpty();\n });\n _this34.pieceList = new zi(e);\n return _this34;\n }\n\n _createClass(Ki, [{\n key: \"copy\",\n value: function copy() {\n return this.copyWithPieceList(this.pieceList);\n }\n }, {\n key: \"copyWithPieceList\",\n value: function copyWithPieceList(t) {\n return new this.constructor(t.consolidate().toArray());\n }\n }, {\n key: \"copyUsingObjectMap\",\n value: function copyUsingObjectMap(t) {\n var e = this.getPieces().map(function (e) {\n return t.find(e) || e;\n });\n return new this.constructor(e);\n }\n }, {\n key: \"appendText\",\n value: function appendText(t) {\n return this.insertTextAtPosition(t, this.getLength());\n }\n }, {\n key: \"insertTextAtPosition\",\n value: function insertTextAtPosition(t, e) {\n return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(t.pieceList, e));\n }\n }, {\n key: \"removeTextAtRange\",\n value: function removeTextAtRange(t) {\n return this.copyWithPieceList(this.pieceList.removeObjectsInRange(t));\n }\n }, {\n key: \"replaceTextAtRange\",\n value: function replaceTextAtRange(t, e) {\n return this.removeTextAtRange(e).insertTextAtPosition(t, e[0]);\n }\n }, {\n key: \"moveTextFromRangeToPosition\",\n value: function moveTextFromRangeToPosition(t, e) {\n if (t[0] <= e && e <= t[1]) return;\n var i = this.getTextAtRange(t),\n n = i.getLength();\n return t[0] < e && (e -= n), this.removeTextAtRange(t).insertTextAtPosition(i, e);\n }\n }, {\n key: \"addAttributeAtRange\",\n value: function addAttributeAtRange(t, e, i) {\n var n = {};\n return n[t] = e, this.addAttributesAtRange(n, i);\n }\n }, {\n key: \"addAttributesAtRange\",\n value: function addAttributesAtRange(t, e) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e, function (e) {\n return e.copyWithAdditionalAttributes(t);\n }));\n }\n }, {\n key: \"removeAttributeAtRange\",\n value: function removeAttributeAtRange(t, e) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e, function (e) {\n return e.copyWithoutAttribute(t);\n }));\n }\n }, {\n key: \"setAttributesAtRange\",\n value: function setAttributesAtRange(t, e) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e, function (e) {\n return e.copyWithAttributes(t);\n }));\n }\n }, {\n key: \"getAttributesAtPosition\",\n value: function getAttributesAtPosition(t) {\n var e;\n return (null === (e = this.pieceList.getObjectAtPosition(t)) || void 0 === e ? void 0 : e.getAttributes()) || {};\n }\n }, {\n key: \"getCommonAttributes\",\n value: function getCommonAttributes() {\n var t = Array.from(this.pieceList.toArray()).map(function (t) {\n return t.getAttributes();\n });\n return Ht.fromCommonAttributesOfObjects(t).toObject();\n }\n }, {\n key: \"getCommonAttributesAtRange\",\n value: function getCommonAttributesAtRange(t) {\n return this.getTextAtRange(t).getCommonAttributes() || {};\n }\n }, {\n key: \"getExpandedRangeForAttributeAtOffset\",\n value: function getExpandedRangeForAttributeAtOffset(t, e) {\n var i,\n n = i = e;\n var r = this.getLength();\n\n for (; n > 0 && this.getCommonAttributesAtRange([n - 1, i])[t];) {\n n--;\n }\n\n for (; i < r && this.getCommonAttributesAtRange([e, i + 1])[t];) {\n i++;\n }\n\n return [n, i];\n }\n }, {\n key: \"getTextAtRange\",\n value: function getTextAtRange(t) {\n return this.copyWithPieceList(this.pieceList.getSplittableListInRange(t));\n }\n }, {\n key: \"getStringAtRange\",\n value: function getStringAtRange(t) {\n return this.pieceList.getSplittableListInRange(t).toString();\n }\n }, {\n key: \"getStringAtPosition\",\n value: function getStringAtPosition(t) {\n return this.getStringAtRange([t, t + 1]);\n }\n }, {\n key: \"startsWithString\",\n value: function startsWithString(t) {\n return this.getStringAtRange([0, t.length]) === t;\n }\n }, {\n key: \"endsWithString\",\n value: function endsWithString(t) {\n var e = this.getLength();\n return this.getStringAtRange([e - t.length, e]) === t;\n }\n }, {\n key: \"getAttachmentPieces\",\n value: function getAttachmentPieces() {\n return this.pieceList.toArray().filter(function (t) {\n return !!t.attachment;\n });\n }\n }, {\n key: \"getAttachments\",\n value: function getAttachments() {\n return this.getAttachmentPieces().map(function (t) {\n return t.attachment;\n });\n }\n }, {\n key: \"getAttachmentAndPositionById\",\n value: function getAttachmentAndPositionById(t) {\n var e = 0;\n\n var _iterator3 = _createForOfIteratorHelper(this.pieceList.toArray()),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _n17 = _step3.value;\n var i;\n if ((null === (i = _n17.attachment) || void 0 === i ? void 0 : i.id) === t) return {\n attachment: _n17.attachment,\n position: e\n };\n e += _n17.length;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n return {\n attachment: null,\n position: null\n };\n }\n }, {\n key: \"getAttachmentById\",\n value: function getAttachmentById(t) {\n var _this$getAttachmentAn = this.getAttachmentAndPositionById(t),\n e = _this$getAttachmentAn.attachment;\n\n return e;\n }\n }, {\n key: \"getRangeOfAttachment\",\n value: function getRangeOfAttachment(t) {\n var e = this.getAttachmentAndPositionById(t.id),\n i = e.position;\n if (t = e.attachment) return [i, i + 1];\n }\n }, {\n key: \"updateAttributesForAttachment\",\n value: function updateAttributesForAttachment(t, e) {\n var i = this.getRangeOfAttachment(e);\n return i ? this.addAttributesAtRange(t, i) : this;\n }\n }, {\n key: \"getLength\",\n value: function getLength() {\n return this.pieceList.getEndPosition();\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n return 0 === this.getLength();\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(t) {\n var e;\n return _get(_getPrototypeOf(Ki.prototype), \"isEqualTo\", this).call(this, t) || (null == t || null === (e = t.pieceList) || void 0 === e ? void 0 : e.isEqualTo(this.pieceList));\n }\n }, {\n key: \"isBlockBreak\",\n value: function isBlockBreak() {\n return 1 === this.getLength() && this.pieceList.getObjectAtIndex(0).isBlockBreak();\n }\n }, {\n key: \"eachPiece\",\n value: function eachPiece(t) {\n return this.pieceList.eachObject(t);\n }\n }, {\n key: \"getPieces\",\n value: function getPieces() {\n return this.pieceList.toArray();\n }\n }, {\n key: \"getPieceAtPosition\",\n value: function getPieceAtPosition(t) {\n return this.pieceList.getObjectAtPosition(t);\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {\n return {\n pieceList: this.pieceList.inspect()\n };\n }\n }, {\n key: \"toSerializableText\",\n value: function toSerializableText() {\n var t = this.pieceList.selectSplittableList(function (t) {\n return t.isSerializable();\n });\n return this.copyWithPieceList(t);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.pieceList.toString();\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.pieceList.toJSON();\n }\n }, {\n key: \"toConsole\",\n value: function toConsole() {\n return JSON.stringify(this.pieceList.toArray().map(function (t) {\n return JSON.parse(t.toConsole());\n }));\n }\n }, {\n key: \"getDirection\",\n value: function getDirection() {\n return lt(this.toString());\n }\n }, {\n key: \"isRTL\",\n value: function isRTL() {\n return \"rtl\" === this.getDirection();\n }\n }], [{\n key: \"textForAttachmentWithAttributes\",\n value: function textForAttachmentWithAttributes(t, e) {\n return new this([new Ui(t, e)]);\n }\n }, {\n key: \"textForStringWithAttributes\",\n value: function textForStringWithAttributes(t, e) {\n return new this([new Vi(t, e)]);\n }\n }, {\n key: \"fromJSON\",\n value: function fromJSON(t) {\n return new this(Array.from(t).map(function (t) {\n return _i.fromJSON(t);\n }));\n }\n }]);\n\n return Ki;\n}(rt);\n\nvar Gi = /*#__PURE__*/function (_rt6) {\n _inherits(Gi, _rt6);\n\n var _super23 = _createSuper(Gi);\n\n function Gi(t, e, i) {\n var _this35;\n\n _classCallCheck(this, Gi);\n\n _this35 = _super23.apply(this, arguments), _this35.text = Yi(t || new Ki()), _this35.attributes = e || [], _this35.htmlAttributes = i || {};\n return _this35;\n }\n\n _createClass(Gi, [{\n key: \"isEmpty\",\n value: function isEmpty() {\n return this.text.isBlockBreak();\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(t) {\n return !!_get(_getPrototypeOf(Gi.prototype), \"isEqualTo\", this).call(this, t) || this.text.isEqualTo(null == t ? void 0 : t.text) && ot(this.attributes, null == t ? void 0 : t.attributes) && Tt(this.htmlAttributes, null == t ? void 0 : t.htmlAttributes);\n }\n }, {\n key: \"copyWithText\",\n value: function copyWithText(t) {\n return new Gi(t, this.attributes, this.htmlAttributes);\n }\n }, {\n key: \"copyWithoutText\",\n value: function copyWithoutText() {\n return this.copyWithText(null);\n }\n }, {\n key: \"copyWithAttributes\",\n value: function copyWithAttributes(t) {\n return new Gi(this.text, t, this.htmlAttributes);\n }\n }, {\n key: \"copyWithoutAttributes\",\n value: function copyWithoutAttributes() {\n return this.copyWithAttributes(null);\n }\n }, {\n key: \"copyUsingObjectMap\",\n value: function copyUsingObjectMap(t) {\n var e = t.find(this.text);\n return e ? this.copyWithText(e) : this.copyWithText(this.text.copyUsingObjectMap(t));\n }\n }, {\n key: \"addAttribute\",\n value: function addAttribute(t) {\n var e = this.attributes.concat(en(t));\n return this.copyWithAttributes(e);\n }\n }, {\n key: \"addHTMLAttribute\",\n value: function addHTMLAttribute(t, e) {\n var i = Object.assign({}, this.htmlAttributes, _defineProperty({}, t, e));\n return new Gi(this.text, this.attributes, i);\n }\n }, {\n key: \"removeAttribute\",\n value: function removeAttribute(t) {\n var _mt2 = mt(t),\n e = _mt2.listAttribute,\n i = rn(rn(this.attributes, t), e);\n\n return this.copyWithAttributes(i);\n }\n }, {\n key: \"removeLastAttribute\",\n value: function removeLastAttribute() {\n return this.removeAttribute(this.getLastAttribute());\n }\n }, {\n key: \"getLastAttribute\",\n value: function getLastAttribute() {\n return nn(this.attributes);\n }\n }, {\n key: \"getAttributes\",\n value: function getAttributes() {\n return this.attributes.slice(0);\n }\n }, {\n key: \"getAttributeLevel\",\n value: function getAttributeLevel() {\n return this.attributes.length;\n }\n }, {\n key: \"getAttributeAtLevel\",\n value: function getAttributeAtLevel(t) {\n return this.attributes[t - 1];\n }\n }, {\n key: \"hasAttribute\",\n value: function hasAttribute(t) {\n return this.attributes.includes(t);\n }\n }, {\n key: \"hasAttributes\",\n value: function hasAttributes() {\n return this.getAttributeLevel() > 0;\n }\n }, {\n key: \"getLastNestableAttribute\",\n value: function getLastNestableAttribute() {\n return nn(this.getNestableAttributes());\n }\n }, {\n key: \"getNestableAttributes\",\n value: function getNestableAttributes() {\n return this.attributes.filter(function (t) {\n return mt(t).nestable;\n });\n }\n }, {\n key: \"getNestingLevel\",\n value: function getNestingLevel() {\n return this.getNestableAttributes().length;\n }\n }, {\n key: \"decreaseNestingLevel\",\n value: function decreaseNestingLevel() {\n var t = this.getLastNestableAttribute();\n return t ? this.removeAttribute(t) : this;\n }\n }, {\n key: \"increaseNestingLevel\",\n value: function increaseNestingLevel() {\n var t = this.getLastNestableAttribute();\n\n if (t) {\n var _e21 = this.attributes.lastIndexOf(t),\n _i25 = st.apply(void 0, [this.attributes, _e21 + 1, 0].concat(_toConsumableArray(en(t))));\n\n return this.copyWithAttributes(_i25);\n }\n\n return this;\n }\n }, {\n key: \"getListItemAttributes\",\n value: function getListItemAttributes() {\n return this.attributes.filter(function (t) {\n return mt(t).listAttribute;\n });\n }\n }, {\n key: \"isListItem\",\n value: function isListItem() {\n var t;\n return null === (t = mt(this.getLastAttribute())) || void 0 === t ? void 0 : t.listAttribute;\n }\n }, {\n key: \"isTerminalBlock\",\n value: function isTerminalBlock() {\n var t;\n return null === (t = mt(this.getLastAttribute())) || void 0 === t ? void 0 : t.terminal;\n }\n }, {\n key: \"breaksOnReturn\",\n value: function breaksOnReturn() {\n var t;\n return null === (t = mt(this.getLastAttribute())) || void 0 === t ? void 0 : t.breakOnReturn;\n }\n }, {\n key: \"findLineBreakInDirectionFromPosition\",\n value: function findLineBreakInDirectionFromPosition(t, e) {\n var i = this.toString();\n var n;\n\n switch (t) {\n case \"forward\":\n n = i.indexOf(\"\\n\", e);\n break;\n\n case \"backward\":\n n = i.slice(0, e).lastIndexOf(\"\\n\");\n }\n\n if (-1 !== n) return n;\n }\n }, {\n key: \"contentsForInspection\",\n value: function contentsForInspection() {\n return {\n text: this.text.inspect(),\n attributes: this.attributes\n };\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.text.toString();\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n text: this.text,\n attributes: this.attributes,\n htmlAttributes: this.htmlAttributes\n };\n }\n }, {\n key: \"getDirection\",\n value: function getDirection() {\n return this.text.getDirection();\n }\n }, {\n key: \"isRTL\",\n value: function isRTL() {\n return this.text.isRTL();\n }\n }, {\n key: \"getLength\",\n value: function getLength() {\n return this.text.getLength();\n }\n }, {\n key: \"canBeConsolidatedWith\",\n value: function canBeConsolidatedWith(t) {\n return !this.hasAttributes() && !t.hasAttributes() && this.getDirection() === t.getDirection();\n }\n }, {\n key: \"consolidateWith\",\n value: function consolidateWith(t) {\n var e = Ki.textForStringWithAttributes(\"\\n\"),\n i = this.getTextWithoutBlockBreak().appendText(e);\n return this.copyWithText(i.appendText(t.text));\n }\n }, {\n key: \"splitAtOffset\",\n value: function splitAtOffset(t) {\n var e, i;\n return 0 === t ? (e = null, i = this) : t === this.getLength() ? (e = this, i = null) : (e = this.copyWithText(this.text.getTextAtRange([0, t])), i = this.copyWithText(this.text.getTextAtRange([t, this.getLength()]))), [e, i];\n }\n }, {\n key: \"getBlockBreakPosition\",\n value: function getBlockBreakPosition() {\n return this.text.getLength() - 1;\n }\n }, {\n key: \"getTextWithoutBlockBreak\",\n value: function getTextWithoutBlockBreak() {\n return Qi(this.text) ? this.text.getTextAtRange([0, this.getBlockBreakPosition()]) : this.text.copy();\n }\n }, {\n key: \"canBeGrouped\",\n value: function canBeGrouped(t) {\n return this.attributes[t];\n }\n }, {\n key: \"canBeGroupedWith\",\n value: function canBeGroupedWith(t, e) {\n var i = t.getAttributes(),\n r = i[e],\n o = this.attributes[e];\n return o === r && !(!1 === mt(o).group && !function () {\n if (!dt) {\n dt = [];\n\n for (var _t14 in n) {\n var _e22 = n[_t14].listAttribute;\n null != _e22 && dt.push(_e22);\n }\n }\n\n return dt;\n }().includes(i[e + 1])) && (this.getDirection() === t.getDirection() || t.isEmpty());\n }\n }], [{\n key: \"fromJSON\",\n value: function fromJSON(t) {\n return new this(Ki.fromJSON(t.text), t.attributes, t.htmlAttributes);\n }\n }]);\n\n return Gi;\n}(rt);\n\nvar Yi = function Yi(t) {\n return t = $i(t), t = Zi(t);\n},\n $i = function $i(t) {\n var e = !1;\n var i = t.getPieces();\n var n = i.slice(0, i.length - 1);\n var r = i[i.length - 1];\n return r ? (n = n.map(function (t) {\n return t.isBlockBreak() ? (e = !0, tn(t)) : t;\n }), e ? new Ki([].concat(_toConsumableArray(n), [r])) : t) : t;\n},\n Xi = Ki.textForStringWithAttributes(\"\\n\", {\n blockBreak: !0\n}),\n Zi = function Zi(t) {\n return Qi(t) ? t : t.appendText(Xi);\n},\n Qi = function Qi(t) {\n var e = t.getLength();\n if (0 === e) return !1;\n return t.getTextAtRange([e - 1, e]).isBlockBreak();\n},\n tn = function tn(t) {\n return t.copyWithoutAttribute(\"blockBreak\");\n},\n en = function en(t) {\n var _mt3 = mt(t),\n e = _mt3.listAttribute;\n\n return e ? [e, t] : [t];\n},\n nn = function nn(t) {\n return t.slice(-1)[0];\n},\n rn = function rn(t, e) {\n var i = t.lastIndexOf(e);\n return -1 === i ? t : st(t, i, 1);\n};\n\nvar on = /*#__PURE__*/function (_rt7) {\n _inherits(on, _rt7);\n\n var _super24 = _createSuper(on);\n\n function on() {\n var _this36;\n\n _classCallCheck(this, on);\n\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n _this36 = _super24.apply(this, arguments), 0 === t.length && (t = [new Gi()]), _this36.blockList = zi.box(t);\n return _this36;\n }\n\n _createClass(on, [{\n key: \"isEmpty\",\n value: function isEmpty() {\n var t = this.getBlockAtIndex(0);\n return 1 === this.blockList.length && t.isEmpty() && !t.hasAttributes();\n }\n }, {\n key: \"copy\",\n value: function copy() {\n var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).consolidateBlocks ? this.blockList.consolidate().toArray() : this.blockList.toArray();\n return new this.constructor(t);\n }\n }, {\n key: \"copyUsingObjectsFromDocument\",\n value: function copyUsingObjectsFromDocument(t) {\n var e = new Zt(t.getObjects());\n return this.copyUsingObjectMap(e);\n }\n }, {\n key: \"copyUsingObjectMap\",\n value: function copyUsingObjectMap(t) {\n var e = this.getBlocks().map(function (e) {\n return t.find(e) || e.copyUsingObjectMap(t);\n });\n return new this.constructor(e);\n }\n }, {\n key: \"copyWithBaseBlockAttributes\",\n value: function copyWithBaseBlockAttributes() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n var e = this.getBlocks().map(function (e) {\n var i = t.concat(e.getAttributes());\n return e.copyWithAttributes(i);\n });\n return new this.constructor(e);\n }\n }, {\n key: \"replaceBlock\",\n value: function replaceBlock(t, e) {\n var i = this.blockList.indexOf(t);\n return -1 === i ? this : new this.constructor(this.blockList.replaceObjectAtIndex(e, i));\n }\n }, {\n key: \"insertDocumentAtRange\",\n value: function insertDocumentAtRange(t, e) {\n var i = t.blockList;\n e = wt(e);\n\n var _e23 = e,\n _e24 = _slicedToArray(_e23, 1),\n n = _e24[0];\n\n var _this$locationFromPos = this.locationFromPosition(n),\n r = _this$locationFromPos.index,\n o = _this$locationFromPos.offset;\n\n var s = this;\n var a = this.getBlockAtPosition(n);\n return Lt(e) && a.isEmpty() && !a.hasAttributes() ? s = new this.constructor(s.blockList.removeObjectAtIndex(r)) : a.getBlockBreakPosition() === o && n++, s = s.removeTextAtRange(e), new this.constructor(s.blockList.insertSplittableListAtPosition(i, n));\n }\n }, {\n key: \"mergeDocumentAtRange\",\n value: function mergeDocumentAtRange(t, e) {\n var i, n;\n e = wt(e);\n\n var _e25 = e,\n _e26 = _slicedToArray(_e25, 1),\n r = _e26[0],\n o = this.locationFromPosition(r),\n s = this.getBlockAtIndex(o.index).getAttributes(),\n a = t.getBaseBlockAttributes(),\n l = s.slice(-a.length);\n\n if (ot(a, l)) {\n var _e27 = s.slice(0, -a.length);\n\n i = t.copyWithBaseBlockAttributes(_e27);\n } else i = t.copy({\n consolidateBlocks: !0\n }).copyWithBaseBlockAttributes(s);\n\n var c = i.getBlockCount(),\n u = i.getBlockAtIndex(0);\n\n if (ot(s, u.getAttributes())) {\n var _t15 = u.getTextWithoutBlockBreak();\n\n if (n = this.insertTextAtRange(_t15, e), c > 1) {\n i = new this.constructor(i.getBlocks().slice(1));\n\n var _e28 = r + _t15.getLength();\n\n n = n.insertDocumentAtRange(i, _e28);\n }\n } else n = this.insertDocumentAtRange(i, e);\n\n return n;\n }\n }, {\n key: \"insertTextAtRange\",\n value: function insertTextAtRange(t, e) {\n e = wt(e);\n\n var _e29 = e,\n _e30 = _slicedToArray(_e29, 1),\n i = _e30[0],\n _this$locationFromPos2 = this.locationFromPosition(i),\n n = _this$locationFromPos2.index,\n r = _this$locationFromPos2.offset,\n o = this.removeTextAtRange(e);\n\n return new this.constructor(o.blockList.editObjectAtIndex(n, function (e) {\n return e.copyWithText(e.text.insertTextAtPosition(t, r));\n }));\n }\n }, {\n key: \"removeTextAtRange\",\n value: function removeTextAtRange(t) {\n var e;\n t = wt(t);\n\n var _t16 = t,\n _t17 = _slicedToArray(_t16, 2),\n i = _t17[0],\n n = _t17[1];\n\n if (Lt(t)) return this;\n\n var _Array$from = Array.from(this.locationRangeFromRange(t)),\n _Array$from2 = _slicedToArray(_Array$from, 2),\n r = _Array$from2[0],\n o = _Array$from2[1],\n s = r.index,\n a = r.offset,\n l = this.getBlockAtIndex(s),\n c = o.index,\n u = o.offset,\n h = this.getBlockAtIndex(c);\n\n if (n - i == 1 && l.getBlockBreakPosition() === a && h.getBlockBreakPosition() !== u && \"\\n\" === h.text.getStringAtPosition(u)) e = this.blockList.editObjectAtIndex(c, function (t) {\n return t.copyWithText(t.text.removeTextAtRange([u, u + 1]));\n });else {\n var _t18;\n\n var _i26 = l.text.getTextAtRange([0, a]),\n _n18 = h.text.getTextAtRange([u, h.getLength()]),\n _r9 = _i26.appendText(_n18);\n\n _t18 = s !== c && 0 === a && l.getAttributeLevel() >= h.getAttributeLevel() ? h.copyWithText(_r9) : l.copyWithText(_r9);\n\n var _o4 = c + 1 - s;\n\n e = this.blockList.splice(s, _o4, _t18);\n }\n return new this.constructor(e);\n }\n }, {\n key: \"moveTextFromRangeToPosition\",\n value: function moveTextFromRangeToPosition(t, e) {\n var i;\n t = wt(t);\n\n var _t19 = t,\n _t20 = _slicedToArray(_t19, 2),\n n = _t20[0],\n r = _t20[1];\n\n if (n <= e && e <= r) return this;\n var o = this.getDocumentAtRange(t),\n s = this.removeTextAtRange(t);\n var a = n < e;\n a && (e -= o.getLength());\n\n var _o$getBlocks = o.getBlocks(),\n _o$getBlocks2 = _toArray(_o$getBlocks),\n l = _o$getBlocks2[0],\n c = _o$getBlocks2.slice(1);\n\n return 0 === c.length ? (i = l.getTextWithoutBlockBreak(), a && (e += 1)) : i = l.text, s = s.insertTextAtRange(i, e), 0 === c.length ? s : (o = new this.constructor(c), e += i.getLength(), s.insertDocumentAtRange(o, e));\n }\n }, {\n key: \"addAttributeAtRange\",\n value: function addAttributeAtRange(t, e, i) {\n var n = this.blockList;\n return this.eachBlockAtRange(i, function (i, r, o) {\n return n = n.editObjectAtIndex(o, function () {\n return mt(t) ? i.addAttribute(t, e) : r[0] === r[1] ? i : i.copyWithText(i.text.addAttributeAtRange(t, e, r));\n });\n }), new this.constructor(n);\n }\n }, {\n key: \"addAttribute\",\n value: function addAttribute(t, e) {\n var i = this.blockList;\n return this.eachBlock(function (n, r) {\n return i = i.editObjectAtIndex(r, function () {\n return n.addAttribute(t, e);\n });\n }), new this.constructor(i);\n }\n }, {\n key: \"removeAttributeAtRange\",\n value: function removeAttributeAtRange(t, e) {\n var i = this.blockList;\n return this.eachBlockAtRange(e, function (e, n, r) {\n mt(t) ? i = i.editObjectAtIndex(r, function () {\n return e.removeAttribute(t);\n }) : n[0] !== n[1] && (i = i.editObjectAtIndex(r, function () {\n return e.copyWithText(e.text.removeAttributeAtRange(t, n));\n }));\n }), new this.constructor(i);\n }\n }, {\n key: \"updateAttributesForAttachment\",\n value: function updateAttributesForAttachment(t, e) {\n var i = this.getRangeOfAttachment(e),\n _Array$from3 = Array.from(i),\n _Array$from4 = _slicedToArray(_Array$from3, 1),\n n = _Array$from4[0],\n _this$locationFromPos3 = this.locationFromPosition(n),\n r = _this$locationFromPos3.index,\n o = this.getTextAtIndex(r);\n\n return new this.constructor(this.blockList.editObjectAtIndex(r, function (i) {\n return i.copyWithText(o.updateAttributesForAttachment(t, e));\n }));\n }\n }, {\n key: \"removeAttributeForAttachment\",\n value: function removeAttributeForAttachment(t, e) {\n var i = this.getRangeOfAttachment(e);\n return this.removeAttributeAtRange(t, i);\n }\n }, {\n key: \"setHTMLAttributeAtPosition\",\n value: function setHTMLAttributeAtPosition(t, e, i) {\n var n = this.getBlockAtPosition(t),\n r = n.addHTMLAttribute(e, i);\n return this.replaceBlock(n, r);\n }\n }, {\n key: \"insertBlockBreakAtRange\",\n value: function insertBlockBreakAtRange(t) {\n var e;\n t = wt(t);\n\n var _t21 = t,\n _t22 = _slicedToArray(_t21, 1),\n i = _t22[0],\n _this$locationFromPos4 = this.locationFromPosition(i),\n n = _this$locationFromPos4.offset,\n r = this.removeTextAtRange(t);\n\n return 0 === n && (e = [new Gi()]), new this.constructor(r.blockList.insertSplittableListAtPosition(new zi(e), i));\n }\n }, {\n key: \"applyBlockAttributeAtRange\",\n value: function applyBlockAttributeAtRange(t, e, i) {\n var n = this.expandRangeToLineBreaksAndSplitBlocks(i);\n var r = n.document;\n i = n.range;\n var o = mt(t);\n\n if (o.listAttribute) {\n r = r.removeLastListAttributeAtRange(i, {\n exceptAttributeName: t\n });\n\n var _e31 = r.convertLineBreaksToBlockBreaksInRange(i);\n\n r = _e31.document, i = _e31.range;\n } else r = o.exclusive ? r.removeBlockAttributesAtRange(i) : o.terminal ? r.removeLastTerminalAttributeAtRange(i) : r.consolidateBlocksAtRange(i);\n\n return r.addAttributeAtRange(t, e, i);\n }\n }, {\n key: \"removeLastListAttributeAtRange\",\n value: function removeLastListAttributeAtRange(t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n i = this.blockList;\n return this.eachBlockAtRange(t, function (t, n, r) {\n var o = t.getLastAttribute();\n o && mt(o).listAttribute && o !== e.exceptAttributeName && (i = i.editObjectAtIndex(r, function () {\n return t.removeAttribute(o);\n }));\n }), new this.constructor(i);\n }\n }, {\n key: \"removeLastTerminalAttributeAtRange\",\n value: function removeLastTerminalAttributeAtRange(t) {\n var e = this.blockList;\n return this.eachBlockAtRange(t, function (t, i, n) {\n var r = t.getLastAttribute();\n r && mt(r).terminal && (e = e.editObjectAtIndex(n, function () {\n return t.removeAttribute(r);\n }));\n }), new this.constructor(e);\n }\n }, {\n key: \"removeBlockAttributesAtRange\",\n value: function removeBlockAttributesAtRange(t) {\n var e = this.blockList;\n return this.eachBlockAtRange(t, function (t, i, n) {\n t.hasAttributes() && (e = e.editObjectAtIndex(n, function () {\n return t.copyWithoutAttributes();\n }));\n }), new this.constructor(e);\n }\n }, {\n key: \"expandRangeToLineBreaksAndSplitBlocks\",\n value: function expandRangeToLineBreaksAndSplitBlocks(t) {\n var e;\n t = wt(t);\n\n var _t23 = t,\n _t24 = _slicedToArray(_t23, 2),\n i = _t24[0],\n n = _t24[1];\n\n var r = this.locationFromPosition(i),\n o = this.locationFromPosition(n);\n var s = this;\n var a = s.getBlockAtIndex(r.index);\n if (r.offset = a.findLineBreakInDirectionFromPosition(\"backward\", r.offset), null != r.offset && (e = s.positionFromLocation(r), s = s.insertBlockBreakAtRange([e, e + 1]), o.index += 1, o.offset -= s.getBlockAtIndex(r.index).getLength(), r.index += 1), r.offset = 0, 0 === o.offset && o.index > r.index) o.index -= 1, o.offset = s.getBlockAtIndex(o.index).getBlockBreakPosition();else {\n var _t25 = s.getBlockAtIndex(o.index);\n\n \"\\n\" === _t25.text.getStringAtRange([o.offset - 1, o.offset]) ? o.offset -= 1 : o.offset = _t25.findLineBreakInDirectionFromPosition(\"forward\", o.offset), o.offset !== _t25.getBlockBreakPosition() && (e = s.positionFromLocation(o), s = s.insertBlockBreakAtRange([e, e + 1]));\n }\n return i = s.positionFromLocation(r), n = s.positionFromLocation(o), {\n document: s,\n range: t = wt([i, n])\n };\n }\n }, {\n key: \"convertLineBreaksToBlockBreaksInRange\",\n value: function convertLineBreaksToBlockBreaksInRange(t) {\n t = wt(t);\n\n var _t26 = t,\n _t27 = _slicedToArray(_t26, 1),\n e = _t27[0];\n\n var i = this.getStringAtRange(t).slice(0, -1);\n var n = this;\n return i.replace(/.*?\\n/g, function (t) {\n e += t.length, n = n.insertBlockBreakAtRange([e - 1, e]);\n }), {\n document: n,\n range: t\n };\n }\n }, {\n key: \"consolidateBlocksAtRange\",\n value: function consolidateBlocksAtRange(t) {\n t = wt(t);\n\n var _t28 = t,\n _t29 = _slicedToArray(_t28, 2),\n e = _t29[0],\n i = _t29[1],\n n = this.locationFromPosition(e).index,\n r = this.locationFromPosition(i).index;\n\n return new this.constructor(this.blockList.consolidateFromIndexToIndex(n, r));\n }\n }, {\n key: \"getDocumentAtRange\",\n value: function getDocumentAtRange(t) {\n t = wt(t);\n var e = this.blockList.getSplittableListInRange(t).toArray();\n return new this.constructor(e);\n }\n }, {\n key: \"getStringAtRange\",\n value: function getStringAtRange(t) {\n var e;\n var i = t = wt(t);\n return i[i.length - 1] !== this.getLength() && (e = -1), this.getDocumentAtRange(t).toString().slice(0, e);\n }\n }, {\n key: \"getBlockAtIndex\",\n value: function getBlockAtIndex(t) {\n return this.blockList.getObjectAtIndex(t);\n }\n }, {\n key: \"getBlockAtPosition\",\n value: function getBlockAtPosition(t) {\n var _this$locationFromPos5 = this.locationFromPosition(t),\n e = _this$locationFromPos5.index;\n\n return this.getBlockAtIndex(e);\n }\n }, {\n key: \"getTextAtIndex\",\n value: function getTextAtIndex(t) {\n var e;\n return null === (e = this.getBlockAtIndex(t)) || void 0 === e ? void 0 : e.text;\n }\n }, {\n key: \"getTextAtPosition\",\n value: function getTextAtPosition(t) {\n var _this$locationFromPos6 = this.locationFromPosition(t),\n e = _this$locationFromPos6.index;\n\n return this.getTextAtIndex(e);\n }\n }, {\n key: \"getPieceAtPosition\",\n value: function getPieceAtPosition(t) {\n var _this$locationFromPos7 = this.locationFromPosition(t),\n e = _this$locationFromPos7.index,\n i = _this$locationFromPos7.offset;\n\n return this.getTextAtIndex(e).getPieceAtPosition(i);\n }\n }, {\n key: \"getCharacterAtPosition\",\n value: function getCharacterAtPosition(t) {\n var _this$locationFromPos8 = this.locationFromPosition(t),\n e = _this$locationFromPos8.index,\n i = _this$locationFromPos8.offset;\n\n return this.getTextAtIndex(e).getStringAtRange([i, i + 1]);\n }\n }, {\n key: \"getLength\",\n value: function getLength() {\n return this.blockList.getEndPosition();\n }\n }, {\n key: \"getBlocks\",\n value: function getBlocks() {\n return this.blockList.toArray();\n }\n }, {\n key: \"getBlockCount\",\n value: function getBlockCount() {\n return this.blockList.length;\n }\n }, {\n key: \"getEditCount\",\n value: function getEditCount() {\n return this.editCount;\n }\n }, {\n key: \"eachBlock\",\n value: function eachBlock(t) {\n return this.blockList.eachObject(t);\n }\n }, {\n key: \"eachBlockAtRange\",\n value: function eachBlockAtRange(t, e) {\n var i, n;\n t = wt(t);\n\n var _t30 = t,\n _t31 = _slicedToArray(_t30, 2),\n r = _t31[0],\n o = _t31[1],\n s = this.locationFromPosition(r),\n a = this.locationFromPosition(o);\n\n if (s.index === a.index) return i = this.getBlockAtIndex(s.index), n = [s.offset, a.offset], e(i, n, s.index);\n\n for (var _t32 = s.index; _t32 <= a.index; _t32++) {\n if (i = this.getBlockAtIndex(_t32), i) {\n switch (_t32) {\n case s.index:\n n = [s.offset, i.text.getLength()];\n break;\n\n case a.index:\n n = [0, a.offset];\n break;\n\n default:\n n = [0, i.text.getLength()];\n }\n\n e(i, n, _t32);\n }\n }\n }\n }, {\n key: \"getCommonAttributesAtRange\",\n value: function getCommonAttributesAtRange(t) {\n t = wt(t);\n\n var _t33 = t,\n _t34 = _slicedToArray(_t33, 1),\n e = _t34[0];\n\n if (Lt(t)) return this.getCommonAttributesAtPosition(e);\n {\n var _e32 = [],\n _i27 = [];\n return this.eachBlockAtRange(t, function (t, n) {\n if (n[0] !== n[1]) return _e32.push(t.text.getCommonAttributesAtRange(n)), _i27.push(sn(t));\n }), Ht.fromCommonAttributesOfObjects(_e32).merge(Ht.fromCommonAttributesOfObjects(_i27)).toObject();\n }\n }\n }, {\n key: \"getCommonAttributesAtPosition\",\n value: function getCommonAttributesAtPosition(t) {\n var e, i;\n\n var _this$locationFromPos9 = this.locationFromPosition(t),\n n = _this$locationFromPos9.index,\n r = _this$locationFromPos9.offset,\n o = this.getBlockAtIndex(n);\n\n if (!o) return {};\n var s = sn(o),\n a = o.text.getAttributesAtPosition(r),\n l = o.text.getAttributesAtPosition(r - 1),\n c = Object.keys(W).filter(function (t) {\n return W[t].inheritable;\n });\n\n for (e in l) {\n i = l[e], (i === a[e] || c.includes(e)) && (s[e] = i);\n }\n\n return s;\n }\n }, {\n key: \"getRangeOfCommonAttributeAtPosition\",\n value: function getRangeOfCommonAttributeAtPosition(t, e) {\n var _this$locationFromPos10 = this.locationFromPosition(e),\n i = _this$locationFromPos10.index,\n n = _this$locationFromPos10.offset,\n r = this.getTextAtIndex(i),\n _Array$from5 = Array.from(r.getExpandedRangeForAttributeAtOffset(t, n)),\n _Array$from6 = _slicedToArray(_Array$from5, 2),\n o = _Array$from6[0],\n s = _Array$from6[1],\n a = this.positionFromLocation({\n index: i,\n offset: o\n }),\n l = this.positionFromLocation({\n index: i,\n offset: s\n });\n\n return wt([a, l]);\n }\n }, {\n key: \"getBaseBlockAttributes\",\n value: function getBaseBlockAttributes() {\n var _this37 = this;\n\n var t = this.getBlockAtIndex(0).getAttributes();\n\n var _loop2 = function _loop2(_e33) {\n var i = _this37.getBlockAtIndex(_e33).getAttributes(),\n n = Math.min(t.length, i.length);\n\n t = function () {\n var e = [];\n\n for (var _r10 = 0; _r10 < n && i[_r10] === t[_r10]; _r10++) {\n e.push(i[_r10]);\n }\n\n return e;\n }();\n };\n\n for (var _e33 = 1; _e33 < this.getBlockCount(); _e33++) {\n _loop2(_e33);\n }\n\n return t;\n }\n }, {\n key: \"getAttachmentById\",\n value: function getAttachmentById(t) {\n var _iterator4 = _createForOfIteratorHelper(this.getAttachments()),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _e34 = _step4.value;\n if (_e34.id === t) return _e34;\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }, {\n key: \"getAttachmentPieces\",\n value: function getAttachmentPieces() {\n var t = [];\n return this.blockList.eachObject(function (e) {\n var i = e.text;\n return t = t.concat(i.getAttachmentPieces());\n }), t;\n }\n }, {\n key: \"getAttachments\",\n value: function getAttachments() {\n return this.getAttachmentPieces().map(function (t) {\n return t.attachment;\n });\n }\n }, {\n key: \"getRangeOfAttachment\",\n value: function getRangeOfAttachment(t) {\n var e = 0;\n var i = this.blockList.toArray();\n\n for (var _n19 = 0; _n19 < i.length; _n19++) {\n var _r11 = i[_n19].text,\n _o5 = _r11.getRangeOfAttachment(t);\n\n if (_o5) return wt([e + _o5[0], e + _o5[1]]);\n e += _r11.getLength();\n }\n }\n }, {\n key: \"getLocationRangeOfAttachment\",\n value: function getLocationRangeOfAttachment(t) {\n var e = this.getRangeOfAttachment(t);\n return this.locationRangeFromRange(e);\n }\n }, {\n key: \"getAttachmentPieceForAttachment\",\n value: function getAttachmentPieceForAttachment(t) {\n var _iterator5 = _createForOfIteratorHelper(this.getAttachmentPieces()),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _e35 = _step5.value;\n if (_e35.attachment === t) return _e35;\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }, {\n key: \"findRangesForBlockAttribute\",\n value: function findRangesForBlockAttribute(t) {\n var e = 0;\n var i = [];\n return this.getBlocks().forEach(function (n) {\n var r = n.getLength();\n n.hasAttribute(t) && i.push([e, e + r]), e += r;\n }), i;\n }\n }, {\n key: \"findRangesForTextAttribute\",\n value: function findRangesForTextAttribute(t) {\n var _ref14 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref14.withValue,\n i = 0,\n n = [];\n\n var r = [];\n return this.getPieces().forEach(function (o) {\n var s = o.getLength();\n (function (i) {\n return e ? i.getAttribute(t) === e : i.hasAttribute(t);\n })(o) && (n[1] === i ? n[1] = i + s : r.push(n = [i, i + s])), i += s;\n }), r;\n }\n }, {\n key: \"locationFromPosition\",\n value: function locationFromPosition(t) {\n var e = this.blockList.findIndexAndOffsetAtPosition(Math.max(0, t));\n if (null != e.index) return e;\n {\n var _t35 = this.getBlocks();\n\n return {\n index: _t35.length - 1,\n offset: _t35[_t35.length - 1].getLength()\n };\n }\n }\n }, {\n key: \"positionFromLocation\",\n value: function positionFromLocation(t) {\n return this.blockList.findPositionAtIndexAndOffset(t.index, t.offset);\n }\n }, {\n key: \"locationRangeFromPosition\",\n value: function locationRangeFromPosition(t) {\n return wt(this.locationFromPosition(t));\n }\n }, {\n key: \"locationRangeFromRange\",\n value: function locationRangeFromRange(t) {\n if (!(t = wt(t))) return;\n\n var _Array$from7 = Array.from(t),\n _Array$from8 = _slicedToArray(_Array$from7, 2),\n e = _Array$from8[0],\n i = _Array$from8[1],\n n = this.locationFromPosition(e),\n r = this.locationFromPosition(i);\n\n return wt([n, r]);\n }\n }, {\n key: \"rangeFromLocationRange\",\n value: function rangeFromLocationRange(t) {\n var e;\n t = wt(t);\n var i = this.positionFromLocation(t[0]);\n return Lt(t) || (e = this.positionFromLocation(t[1])), wt([i, e]);\n }\n }, {\n key: \"isEqualTo\",\n value: function isEqualTo(t) {\n return this.blockList.isEqualTo(null == t ? void 0 : t.blockList);\n }\n }, {\n key: \"getTexts\",\n value: function getTexts() {\n return this.getBlocks().map(function (t) {\n return t.text;\n });\n }\n }, {\n key: \"getPieces\",\n value: function getPieces() {\n var t = [];\n return Array.from(this.getTexts()).forEach(function (e) {\n t.push.apply(t, _toConsumableArray(Array.from(e.getPieces() || [])));\n }), t;\n }\n }, {\n key: \"getObjects\",\n value: function getObjects() {\n return this.getBlocks().concat(this.getTexts()).concat(this.getPieces());\n }\n }, {\n key: \"toSerializableDocument\",\n value: function toSerializableDocument() {\n var t = [];\n return this.blockList.eachObject(function (e) {\n return t.push(e.copyWithText(e.text.toSerializableText()));\n }), new this.constructor(t);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.blockList.toString();\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.blockList.toJSON();\n }\n }, {\n key: \"toConsole\",\n value: function toConsole() {\n return JSON.stringify(this.blockList.toArray().map(function (t) {\n return JSON.parse(t.text.toConsole());\n }));\n }\n }], [{\n key: \"fromJSON\",\n value: function fromJSON(t) {\n return new this(Array.from(t).map(function (t) {\n return Gi.fromJSON(t);\n }));\n }\n }, {\n key: \"fromString\",\n value: function fromString(t, e) {\n var i = Ki.textForStringWithAttributes(t, e);\n return new this([new Gi(i)]);\n }\n }]);\n\n return on;\n}(rt);\n\nvar sn = function sn(t) {\n var e = {},\n i = t.getLastAttribute();\n return i && (e[i] = !0), e;\n},\n an = function an(t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n return {\n string: t = Wt(t),\n attributes: e,\n type: \"string\"\n };\n},\n ln = function ln(t, e) {\n try {\n return JSON.parse(t.getAttribute(\"data-trix-\".concat(e)));\n } catch (t) {\n return {};\n }\n};\n\nvar cn = /*#__PURE__*/function (_q8) {\n _inherits(cn, _q8);\n\n var _super25 = _createSuper(cn);\n\n function cn(t) {\n var _this38;\n\n _classCallCheck(this, cn);\n\n var _ref15 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref15.referenceElement;\n\n _this38 = _super25.apply(this, arguments), _this38.html = t, _this38.referenceElement = e, _this38.blocks = [], _this38.blockElements = [], _this38.processedElements = [];\n return _this38;\n }\n\n _createClass(cn, [{\n key: \"getDocument\",\n value: function getDocument() {\n return on.fromJSON(this.blocks);\n }\n }, {\n key: \"parse\",\n value: function parse() {\n try {\n this.createHiddenContainer(), ui.setHTML(this.containerElement, this.html);\n\n var _t36 = R(this.containerElement, {\n usingFilter: gn\n });\n\n for (; _t36.nextNode();) {\n this.processNode(_t36.currentNode);\n }\n\n return this.translateBlockElementMarginsToNewlines();\n } finally {\n this.removeHiddenContainer();\n }\n }\n }, {\n key: \"createHiddenContainer\",\n value: function createHiddenContainer() {\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 = T({\n tagName: \"div\",\n style: {\n display: \"none\"\n }\n }), document.body.appendChild(this.containerElement));\n }\n }, {\n key: \"removeHiddenContainer\",\n value: function removeHiddenContainer() {\n return S(this.containerElement);\n }\n }, {\n key: \"processNode\",\n value: function processNode(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 }\n }, {\n key: \"appendBlockForTextNode\",\n value: function appendBlockForTextNode(t) {\n var e = t.parentNode;\n if (e === this.currentBlockElement && this.isBlockElement(t.previousSibling)) return this.appendStringWithAttributes(\"\\n\");\n\n if (e === this.containerElement || this.isBlockElement(e)) {\n var i;\n\n var _t37 = this.getBlockAttributes(e),\n _n20 = this.getBlockHTMLAttributes(e);\n\n ot(_t37, null === (i = this.currentBlock) || void 0 === i ? void 0 : i.attributes) || (this.currentBlock = this.appendBlockForAttributesWithElement(_t37, e, _n20), this.currentBlockElement = e);\n }\n }\n }, {\n key: \"appendBlockForElement\",\n value: function appendBlockForElement(t) {\n var e = this.isBlockElement(t),\n i = C(this.currentBlockElement, t);\n\n if (e && !this.isBlockElement(t.firstChild)) {\n if (!this.isInsignificantTextNode(t.firstChild) || !this.isBlockElement(t.firstElementChild)) {\n var _e36 = this.getBlockAttributes(t),\n _n21 = this.getBlockHTMLAttributes(t);\n\n if (t.firstChild) {\n if (i && ot(_e36, this.currentBlock.attributes)) return this.appendStringWithAttributes(\"\\n\");\n this.currentBlock = this.appendBlockForAttributesWithElement(_e36, t, _n21), this.currentBlockElement = t;\n }\n }\n } else if (this.currentBlockElement && !i && !e) {\n var _e37 = this.findParentBlockElement(t);\n\n if (_e37) return this.appendBlockForElement(_e37);\n this.currentBlock = this.appendEmptyBlock(), this.currentBlockElement = null;\n }\n }\n }, {\n key: \"findParentBlockElement\",\n value: function findParentBlockElement(t) {\n var e = t.parentElement;\n\n for (; e && e !== this.containerElement;) {\n if (this.isBlockElement(e) && this.blockElements.includes(e)) return e;\n e = e.parentElement;\n }\n\n return null;\n }\n }, {\n key: \"processTextNode\",\n value: function processTextNode(t) {\n var e = t.data;\n var i;\n un(t.parentNode) || (e = Vt(e), fn(null === (i = t.previousSibling) || void 0 === i ? void 0 : i.textContent) && (e = mn(e)));\n return this.appendStringWithAttributes(e, this.getTextAttributes(t.parentNode));\n }\n }, {\n key: \"processElement\",\n value: function processElement(t) {\n var e;\n\n if (P(t)) {\n if (e = ln(t, \"attachment\"), Object.keys(e).length) {\n var _i28 = this.getTextAttributes(t);\n\n this.appendAttachmentWithAttributes(e, _i28), t.innerHTML = \"\";\n }\n\n return this.processedElements.push(t);\n }\n\n switch (k(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 };\n\n var _i29 = function (t) {\n var e = t.getAttribute(\"width\"),\n i = t.getAttribute(\"height\"),\n n = {};\n return e && (n.width = parseInt(e, 10)), i && (n.height = parseInt(i, 10)), n;\n }(t);\n\n for (var _t38 in _i29) {\n var _n22 = _i29[_t38];\n e[_t38] = _n22;\n }\n\n return this.appendAttachmentWithAttributes(e, this.getTextAttributes(t)), this.processedElements.push(t);\n\n case \"tr\":\n if (this.needsTableSeparator(t)) return this.appendStringWithAttributes(j.tableRowSeparator);\n break;\n\n case \"td\":\n if (this.needsTableSeparator(t)) return this.appendStringWithAttributes(j.tableCellSeparator);\n }\n }\n }, {\n key: \"appendBlockForAttributesWithElement\",\n value: function appendBlockForAttributesWithElement(t, e) {\n var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\n this.blockElements.push(e);\n\n var n = function () {\n return {\n text: [],\n attributes: arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},\n htmlAttributes: arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}\n };\n }(t, i);\n\n return this.blocks.push(n), n;\n }\n }, {\n key: \"appendEmptyBlock\",\n value: function appendEmptyBlock() {\n return this.appendBlockForAttributesWithElement([], null);\n }\n }, {\n key: \"appendStringWithAttributes\",\n value: function appendStringWithAttributes(t, e) {\n return this.appendPiece(an(t, e));\n }\n }, {\n key: \"appendAttachmentWithAttributes\",\n value: function appendAttachmentWithAttributes(t, e) {\n return this.appendPiece(function (t) {\n return {\n attachment: t,\n attributes: arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n type: \"attachment\"\n };\n }(t, e));\n }\n }, {\n key: \"appendPiece\",\n value: function appendPiece(t) {\n return 0 === this.blocks.length && this.appendEmptyBlock(), this.blocks[this.blocks.length - 1].text.push(t);\n }\n }, {\n key: \"appendStringToTextAtIndex\",\n value: function appendStringToTextAtIndex(t, e) {\n var i = this.blocks[e].text,\n n = i[i.length - 1];\n if (\"string\" !== (null == n ? void 0 : n.type)) return i.push(an(t));\n n.string += t;\n }\n }, {\n key: \"prependStringToTextAtIndex\",\n value: function prependStringToTextAtIndex(t, e) {\n var i = this.blocks[e].text,\n n = i[0];\n if (\"string\" !== (null == n ? void 0 : n.type)) return i.unshift(an(t));\n n.string = t + n.string;\n }\n }, {\n key: \"getTextAttributes\",\n value: function getTextAttributes(t) {\n var e;\n var i = {};\n\n for (var _n23 in W) {\n var _r12 = W[_n23];\n if (_r12.tagName && y(t, {\n matchingSelector: _r12.tagName,\n untilNode: this.containerElement\n })) i[_n23] = !0;else if (_r12.parser) {\n if (e = _r12.parser(t), e) {\n var _o6 = !1;\n\n var _iterator6 = _createForOfIteratorHelper(this.findBlockElementAncestors(t)),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _i30 = _step6.value;\n\n if (_r12.parser(_i30) === e) {\n _o6 = !0;\n break;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n _o6 || (i[_n23] = e);\n }\n } else _r12.styleProperty && (e = t.style[_r12.styleProperty], e && (i[_n23] = e));\n }\n\n if (P(t)) {\n var _n24 = ln(t, \"attributes\");\n\n for (var _t39 in _n24) {\n e = _n24[_t39], i[_t39] = e;\n }\n }\n\n return i;\n }\n }, {\n key: \"getBlockAttributes\",\n value: function getBlockAttributes(t) {\n var e = [];\n\n for (; t && t !== this.containerElement;) {\n for (var _r13 in n) {\n var _o7 = n[_r13];\n var i;\n if (!1 !== _o7.parse) if (k(t) === _o7.tagName) (null !== (i = _o7.test) && void 0 !== i && i.call(_o7, t) || !_o7.test) && (e.push(_r13), _o7.listAttribute && e.push(_o7.listAttribute));\n }\n\n t = t.parentNode;\n }\n\n return e.reverse();\n }\n }, {\n key: \"getBlockHTMLAttributes\",\n value: function getBlockHTMLAttributes(t) {\n var e = {},\n i = Object.values(n).find(function (e) {\n return e.tagName === k(t);\n });\n return ((null == i ? void 0 : i.htmlAttributes) || []).forEach(function (i) {\n t.hasAttribute(i) && (e[i] = t.getAttribute(i));\n }), e;\n }\n }, {\n key: \"findBlockElementAncestors\",\n value: function findBlockElementAncestors(t) {\n var e = [];\n\n for (; t && t !== this.containerElement;) {\n var _i31 = k(t);\n\n L().includes(_i31) && e.push(t), t = t.parentNode;\n }\n\n return e;\n }\n }, {\n key: \"isBlockElement\",\n value: function isBlockElement(t) {\n if ((null == t ? void 0 : t.nodeType) === Node.ELEMENT_NODE && !P(t) && !y(t, {\n matchingSelector: \"td\",\n untilNode: this.containerElement\n })) return L().includes(k(t)) || \"block\" === window.getComputedStyle(t).display;\n }\n }, {\n key: \"isInsignificantTextNode\",\n value: function isInsignificantTextNode(t) {\n if ((null == t ? void 0 : t.nodeType) !== Node.TEXT_NODE) return;\n if (!pn(t.data)) return;\n var e = t.parentNode,\n i = t.previousSibling,\n n = t.nextSibling;\n return hn(e.previousSibling) && !this.isBlockElement(e.previousSibling) || un(e) ? void 0 : !i || this.isBlockElement(i) || !n || this.isBlockElement(n);\n }\n }, {\n key: \"isExtraBR\",\n value: function isExtraBR(t) {\n return \"br\" === k(t) && this.isBlockElement(t.parentNode) && t.parentNode.lastChild === t;\n }\n }, {\n key: \"needsTableSeparator\",\n value: function needsTableSeparator(t) {\n if (j.removeBlankTableCells) {\n var e;\n\n var _i32 = null === (e = t.previousSibling) || void 0 === e ? void 0 : e.textContent;\n\n return _i32 && /\\S/.test(_i32);\n }\n\n return t.previousSibling;\n }\n }, {\n key: \"translateBlockElementMarginsToNewlines\",\n value: function translateBlockElementMarginsToNewlines() {\n var t = this.getMarginOfDefaultBlockElement();\n\n for (var _e38 = 0; _e38 < this.blocks.length; _e38++) {\n var _i33 = this.getMarginOfBlockElementAtIndex(_e38);\n\n _i33 && (_i33.top > 2 * t.top && this.prependStringToTextAtIndex(\"\\n\", _e38), _i33.bottom > 2 * t.bottom && this.appendStringToTextAtIndex(\"\\n\", _e38));\n }\n }\n }, {\n key: \"getMarginOfBlockElementAtIndex\",\n value: function getMarginOfBlockElementAtIndex(t) {\n var e = this.blockElements[t];\n if (e && e.textContent && !L().includes(k(e)) && !this.processedElements.includes(e)) return dn(e);\n }\n }, {\n key: \"getMarginOfDefaultBlockElement\",\n value: function getMarginOfDefaultBlockElement() {\n var t = T(n.default.tagName);\n return this.containerElement.appendChild(t), dn(t);\n }\n }], [{\n key: \"parse\",\n value: function parse(t, e) {\n var i = new this(t, e);\n return i.parse(), i;\n }\n }]);\n\n return cn;\n}(q);\n\nvar un = function un(t) {\n var _window$getComputedSt = window.getComputedStyle(t),\n e = _window$getComputedSt.whiteSpace;\n\n return [\"pre\", \"pre-wrap\", \"pre-line\"].includes(e);\n},\n hn = function hn(t) {\n return t && !fn(t.textContent);\n},\n dn = function dn(t) {\n var e = window.getComputedStyle(t);\n if (\"block\" === e.display) return {\n top: parseInt(e.marginTop),\n bottom: parseInt(e.marginBottom)\n };\n},\n gn = function gn(t) {\n return \"style\" === k(t) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n},\n mn = function mn(t) {\n return t.replace(new RegExp(\"^\".concat(Ut.source, \"+\")), \"\");\n},\n pn = function pn(t) {\n return new RegExp(\"^\".concat(Ut.source, \"*$\")).test(t);\n},\n fn = function fn(t) {\n return /\\s$/.test(t);\n},\n bn = [\"contenteditable\", \"data-trix-id\", \"data-trix-store-key\", \"data-trix-mutable\", \"data-trix-placeholder\", \"tabindex\"],\n vn = \"data-trix-serialized-attributes\",\n An = \"[\".concat(vn, \"]\"),\n yn = new RegExp(\"\\x3c!--block--\\x3e\", \"g\"),\n xn = {\n \"application/json\": function applicationJson(t) {\n var e;\n if (t instanceof on) e = t;else {\n if (!(t instanceof HTMLElement)) throw new Error(\"unserializable object\");\n e = cn.parse(t.innerHTML).getDocument();\n }\n return e.toSerializableDocument().toJSONString();\n },\n \"text/html\": function textHtml(t) {\n var e;\n if (t instanceof on) e = Ci.render(t);else {\n if (!(t instanceof HTMLElement)) throw new Error(\"unserializable object\");\n e = t.cloneNode(!0);\n }\n return Array.from(e.querySelectorAll(\"[data-trix-serialize=false]\")).forEach(function (t) {\n S(t);\n }), bn.forEach(function (t) {\n Array.from(e.querySelectorAll(\"[\".concat(t, \"]\"))).forEach(function (e) {\n e.removeAttribute(t);\n });\n }), Array.from(e.querySelectorAll(An)).forEach(function (t) {\n try {\n var _e39 = JSON.parse(t.getAttribute(vn));\n\n t.removeAttribute(vn);\n\n for (var _i34 in _e39) {\n var _n25 = _e39[_i34];\n t.setAttribute(_i34, _n25);\n }\n } catch (t) {}\n }), e.innerHTML.replace(yn, \"\");\n }\n};\n\nvar Cn = Object.freeze({\n __proto__: null\n});\n\nvar En = /*#__PURE__*/function (_q9) {\n _inherits(En, _q9);\n\n var _super26 = _createSuper(En);\n\n function En(t, e) {\n var _this39;\n\n _classCallCheck(this, En);\n\n _this39 = _super26.apply(this, arguments), _this39.attachmentManager = t, _this39.attachment = e, _this39.id = _this39.attachment.id, _this39.file = _this39.attachment.file;\n return _this39;\n }\n\n _createClass(En, [{\n key: \"remove\",\n value: function remove() {\n return this.attachmentManager.requestRemovalOfAttachment(this.attachment);\n }\n }]);\n\n return En;\n}(q);\n\nEn.proxyMethod(\"attachment.getAttribute\"), En.proxyMethod(\"attachment.hasAttribute\"), En.proxyMethod(\"attachment.setAttribute\"), En.proxyMethod(\"attachment.getAttributes\"), En.proxyMethod(\"attachment.setAttributes\"), En.proxyMethod(\"attachment.isPending\"), En.proxyMethod(\"attachment.isPreviewable\"), En.proxyMethod(\"attachment.getURL\"), En.proxyMethod(\"attachment.getHref\"), En.proxyMethod(\"attachment.getFilename\"), En.proxyMethod(\"attachment.getFilesize\"), En.proxyMethod(\"attachment.getFormattedFilesize\"), En.proxyMethod(\"attachment.getExtension\"), En.proxyMethod(\"attachment.getContentType\"), En.proxyMethod(\"attachment.getFile\"), En.proxyMethod(\"attachment.setFile\"), En.proxyMethod(\"attachment.releaseFile\"), En.proxyMethod(\"attachment.getUploadProgress\"), En.proxyMethod(\"attachment.setUploadProgress\");\n\nvar Sn = /*#__PURE__*/function (_q10) {\n _inherits(Sn, _q10);\n\n var _super27 = _createSuper(Sn);\n\n function Sn() {\n var _this40;\n\n _classCallCheck(this, Sn);\n\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n _this40 = _super27.apply(this, arguments), _this40.managedAttachments = {}, Array.from(t).forEach(function (t) {\n _this40.manageAttachment(t);\n });\n return _this40;\n }\n\n _createClass(Sn, [{\n key: \"getAttachments\",\n value: function getAttachments() {\n var t = [];\n\n for (var _e40 in this.managedAttachments) {\n var _i35 = this.managedAttachments[_e40];\n t.push(_i35);\n }\n\n return t;\n }\n }, {\n key: \"manageAttachment\",\n value: function manageAttachment(t) {\n return this.managedAttachments[t.id] || (this.managedAttachments[t.id] = new En(this, t)), this.managedAttachments[t.id];\n }\n }, {\n key: \"attachmentIsManaged\",\n value: function attachmentIsManaged(t) {\n return t.id in this.managedAttachments;\n }\n }, {\n key: \"requestRemovalOfAttachment\",\n value: function requestRemovalOfAttachment(t) {\n var e, i;\n if (this.attachmentIsManaged(t)) return null === (e = this.delegate) || void 0 === e || null === (i = e.attachmentManagerDidRequestRemovalOfAttachment) || void 0 === i ? void 0 : i.call(e, t);\n }\n }, {\n key: \"unmanageAttachment\",\n value: function unmanageAttachment(t) {\n var e = this.managedAttachments[t.id];\n return delete this.managedAttachments[t.id], e;\n }\n }]);\n\n return Sn;\n}(q);\n\nvar Rn = /*#__PURE__*/function () {\n function Rn(t) {\n _classCallCheck(this, Rn);\n\n this.composition = t, this.document = this.composition.document;\n var e = this.composition.getSelectedRange();\n 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 _createClass(Rn, [{\n key: \"shouldInsertBlockBreak\",\n value: function shouldInsertBlockBreak() {\n return this.block.hasAttributes() && this.block.isListItem() && !this.block.isEmpty() ? 0 !== this.startLocation.offset : this.breaksOnReturn && \"\\n\" !== this.nextCharacter;\n }\n }, {\n key: \"shouldBreakFormattedBlock\",\n value: function shouldBreakFormattedBlock() {\n return this.block.hasAttributes() && !this.block.isListItem() && (this.breaksOnReturn && \"\\n\" === this.nextCharacter || \"\\n\" === this.previousCharacter);\n }\n }, {\n key: \"shouldDecreaseListLevel\",\n value: function shouldDecreaseListLevel() {\n return this.block.hasAttributes() && this.block.isListItem() && this.block.isEmpty();\n }\n }, {\n key: \"shouldPrependListItem\",\n value: function shouldPrependListItem() {\n return this.block.isListItem() && 0 === this.startLocation.offset && !this.block.isEmpty();\n }\n }, {\n key: \"shouldRemoveLastBlockAttribute\",\n value: function shouldRemoveLastBlockAttribute() {\n return this.block.hasAttributes() && !this.block.isListItem() && this.block.isEmpty();\n }\n }]);\n\n return Rn;\n}();\n\nvar kn = /*#__PURE__*/function (_q11) {\n _inherits(kn, _q11);\n\n var _super28 = _createSuper(kn);\n\n function kn() {\n var _this41;\n\n _classCallCheck(this, kn);\n\n _this41 = _super28.apply(this, arguments), _this41.document = new on(), _this41.attachments = [], _this41.currentAttributes = {}, _this41.revision = 0;\n return _this41;\n }\n\n _createClass(kn, [{\n key: \"setDocument\",\n value: function setDocument(t) {\n var e, i;\n if (!t.isEqualTo(this.document)) return this.document = t, this.refreshAttachments(), this.revision++, null === (e = this.delegate) || void 0 === e || null === (i = e.compositionDidChangeDocument) || void 0 === i ? void 0 : i.call(e, t);\n }\n }, {\n key: \"getSnapshot\",\n value: function getSnapshot() {\n return {\n document: this.document,\n selectedRange: this.getSelectedRange()\n };\n }\n }, {\n key: \"loadSnapshot\",\n value: function loadSnapshot(t) {\n var e, i, n, r;\n var o = t.document,\n s = t.selectedRange;\n return null === (e = this.delegate) || void 0 === e || null === (i = e.compositionWillLoadSnapshot) || void 0 === i || i.call(e), this.setDocument(null != o ? o : new on()), this.setSelection(null != s ? s : [0, 0]), null === (n = this.delegate) || void 0 === n || null === (r = n.compositionDidLoadSnapshot) || void 0 === r ? void 0 : r.call(n);\n }\n }, {\n key: \"insertText\",\n value: function insertText(t) {\n var _ref16 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n updatePosition: !0\n },\n e = _ref16.updatePosition;\n\n var i = this.getSelectedRange();\n this.setDocument(this.document.insertTextAtRange(t, i));\n var n = i[0],\n r = n + t.getLength();\n return e && this.setSelection(r), this.notifyDelegateOfInsertionAtRange([n, r]);\n }\n }, {\n key: \"insertBlock\",\n value: function insertBlock() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Gi();\n var e = new on([t]);\n return this.insertDocument(e);\n }\n }, {\n key: \"insertDocument\",\n value: function insertDocument() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new on();\n var e = this.getSelectedRange();\n this.setDocument(this.document.insertDocumentAtRange(t, e));\n var i = e[0],\n n = i + t.getLength();\n return this.setSelection(n), this.notifyDelegateOfInsertionAtRange([i, n]);\n }\n }, {\n key: \"insertString\",\n value: function insertString(t, e) {\n var i = this.getCurrentTextAttributes(),\n n = Ki.textForStringWithAttributes(t, i);\n return this.insertText(n, e);\n }\n }, {\n key: \"insertBlockBreak\",\n value: function insertBlockBreak() {\n var t = this.getSelectedRange();\n this.setDocument(this.document.insertBlockBreakAtRange(t));\n var e = t[0],\n i = e + 1;\n return this.setSelection(i), this.notifyDelegateOfInsertionAtRange([e, i]);\n }\n }, {\n key: \"insertLineBreak\",\n value: function insertLineBreak() {\n var t = new Rn(this);\n if (t.shouldDecreaseListLevel()) return this.decreaseListLevel(), this.setSelection(t.startPosition);\n\n if (t.shouldPrependListItem()) {\n var _e41 = new on([t.block.copyWithoutText()]);\n\n return this.insertDocument(_e41);\n }\n\n return t.shouldInsertBlockBreak() ? this.insertBlockBreak() : t.shouldRemoveLastBlockAttribute() ? this.removeLastBlockAttribute() : t.shouldBreakFormattedBlock() ? this.breakFormattedBlock(t) : this.insertString(\"\\n\");\n }\n }, {\n key: \"insertHTML\",\n value: function insertHTML(t) {\n var e = cn.parse(t).getDocument(),\n i = this.getSelectedRange();\n this.setDocument(this.document.mergeDocumentAtRange(e, i));\n var n = i[0],\n r = n + e.getLength() - 1;\n return this.setSelection(r), this.notifyDelegateOfInsertionAtRange([n, r]);\n }\n }, {\n key: \"replaceHTML\",\n value: function replaceHTML(t) {\n var e = cn.parse(t).getDocument().copyUsingObjectsFromDocument(this.document),\n i = this.getLocationRange({\n strict: !1\n }),\n n = this.document.rangeFromLocationRange(i);\n return this.setDocument(e), this.setSelection(n);\n }\n }, {\n key: \"insertFile\",\n value: function insertFile(t) {\n return this.insertFiles([t]);\n }\n }, {\n key: \"insertFiles\",\n value: function insertFiles(t) {\n var _this42 = this;\n\n var e = [];\n return Array.from(t).forEach(function (t) {\n var i;\n\n if (null !== (i = _this42.delegate) && void 0 !== i && i.compositionShouldAcceptFile(t)) {\n var _i36 = Wi.attachmentForFile(t);\n\n e.push(_i36);\n }\n }), this.insertAttachments(e);\n }\n }, {\n key: \"insertAttachment\",\n value: function insertAttachment(t) {\n return this.insertAttachments([t]);\n }\n }, {\n key: \"insertAttachments\",\n value: function insertAttachments(t) {\n var _this43 = this;\n\n var e = new Ki();\n return Array.from(t).forEach(function (t) {\n var n;\n\n var r = t.getType(),\n o = null === (n = i[r]) || void 0 === n ? void 0 : n.presentation,\n s = _this43.getCurrentTextAttributes();\n\n o && (s.presentation = o);\n var a = Ki.textForAttachmentWithAttributes(t, s);\n e = e.appendText(a);\n }), this.insertText(e);\n }\n }, {\n key: \"shouldManageDeletingInDirection\",\n value: function shouldManageDeletingInDirection(t) {\n var e = this.getLocationRange();\n\n if (Lt(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 }\n }, {\n key: \"deleteInDirection\",\n value: function deleteInDirection(t) {\n var e,\n i,\n n,\n _ref17 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n r = _ref17.length;\n\n var o = this.getLocationRange();\n var s = this.getSelectedRange();\n var a = Lt(s);\n\n if (a ? i = \"backward\" === t && 0 === o[0].offset : n = o[0].index !== o[1].index, i && this.canDecreaseBlockAttributeLevel()) {\n var _t40 = this.getBlock();\n\n if (_t40.isListItem() ? this.decreaseListLevel() : this.decreaseBlockAttributeLevel(), this.setSelection(s[0]), _t40.isEmpty()) return !1;\n }\n\n return a && (s = this.getExpandedRangeInDirection(t, {\n length: r\n }), \"backward\" === t && (e = this.getAttachmentAtRange(s))), e ? (this.editAttachment(e), !1) : (this.setDocument(this.document.removeTextAtRange(s)), this.setSelection(s[0]), !i && !n && void 0);\n }\n }, {\n key: \"moveTextFromRange\",\n value: function moveTextFromRange(t) {\n var _Array$from9 = Array.from(this.getSelectedRange()),\n _Array$from10 = _slicedToArray(_Array$from9, 1),\n e = _Array$from10[0];\n\n return this.setDocument(this.document.moveTextFromRangeToPosition(t, e)), this.setSelection(e);\n }\n }, {\n key: \"removeAttachment\",\n value: function removeAttachment(t) {\n var e = this.document.getRangeOfAttachment(t);\n if (e) return this.stopEditingAttachment(), this.setDocument(this.document.removeTextAtRange(e)), this.setSelection(e[0]);\n }\n }, {\n key: \"removeLastBlockAttribute\",\n value: function removeLastBlockAttribute() {\n var _Array$from11 = Array.from(this.getSelectedRange()),\n _Array$from12 = _slicedToArray(_Array$from11, 2),\n t = _Array$from12[0],\n e = _Array$from12[1],\n i = this.document.getBlockAtPosition(e);\n\n return this.removeCurrentAttribute(i.getLastAttribute()), this.setSelection(t);\n }\n }, {\n key: \"insertPlaceholder\",\n value: function insertPlaceholder() {\n return this.placeholderPosition = this.getPosition(), this.insertString(\" \");\n }\n }, {\n key: \"selectPlaceholder\",\n value: function selectPlaceholder() {\n if (null != this.placeholderPosition) return this.setSelectedRange([this.placeholderPosition, this.placeholderPosition + 1]), this.getSelectedRange();\n }\n }, {\n key: \"forgetPlaceholder\",\n value: function forgetPlaceholder() {\n this.placeholderPosition = null;\n }\n }, {\n key: \"hasCurrentAttribute\",\n value: function hasCurrentAttribute(t) {\n var e = this.currentAttributes[t];\n return null != e && !1 !== e;\n }\n }, {\n key: \"toggleCurrentAttribute\",\n value: function toggleCurrentAttribute(t) {\n var e = !this.currentAttributes[t];\n return e ? this.setCurrentAttribute(t, e) : this.removeCurrentAttribute(t);\n }\n }, {\n key: \"canSetCurrentAttribute\",\n value: function canSetCurrentAttribute(t) {\n return mt(t) ? this.canSetCurrentBlockAttribute(t) : this.canSetCurrentTextAttribute(t);\n }\n }, {\n key: \"canSetCurrentTextAttribute\",\n value: function canSetCurrentTextAttribute(t) {\n var e = this.getSelectedDocument();\n\n if (e) {\n for (var _i37 = 0, _Array$from13 = Array.from(e.getAttachments()); _i37 < _Array$from13.length; _i37++) {\n var _t41 = _Array$from13[_i37];\n if (!_t41.hasContent()) return !1;\n }\n\n return !0;\n }\n }\n }, {\n key: \"canSetCurrentBlockAttribute\",\n value: function canSetCurrentBlockAttribute(t) {\n var e = this.getBlock();\n if (e) return !e.isTerminalBlock();\n }\n }, {\n key: \"setCurrentAttribute\",\n value: function setCurrentAttribute(t, e) {\n return mt(t) ? this.setBlockAttribute(t, e) : (this.setTextAttribute(t, e), this.currentAttributes[t] = e, this.notifyDelegateOfCurrentAttributesChange());\n }\n }, {\n key: \"setHTMLAtributeAtPosition\",\n value: function setHTMLAtributeAtPosition(t, e, i) {\n var n;\n var r = this.document.getBlockAtPosition(t),\n o = null === (n = mt(r.getLastAttribute())) || void 0 === n ? void 0 : n.htmlAttributes;\n\n if (r && null != o && o.includes(e)) {\n var _n26 = this.document.setHTMLAttributeAtPosition(t, e, i);\n\n this.setDocument(_n26);\n }\n }\n }, {\n key: \"setTextAttribute\",\n value: function setTextAttribute(t, e) {\n var i = this.getSelectedRange();\n if (!i) return;\n\n var _Array$from14 = Array.from(i),\n _Array$from15 = _slicedToArray(_Array$from14, 2),\n n = _Array$from15[0],\n r = _Array$from15[1];\n\n if (n !== r) return this.setDocument(this.document.addAttributeAtRange(t, e, i));\n\n if (\"href\" === t) {\n var _t42 = Ki.textForStringWithAttributes(e, {\n href: e\n });\n\n return this.insertText(_t42);\n }\n }\n }, {\n key: \"setBlockAttribute\",\n value: function setBlockAttribute(t, e) {\n var i = this.getSelectedRange();\n if (this.canSetCurrentAttribute(t)) return this.setDocument(this.document.applyBlockAttributeAtRange(t, e, i)), this.setSelection(i);\n }\n }, {\n key: \"removeCurrentAttribute\",\n value: function removeCurrentAttribute(t) {\n return mt(t) ? (this.removeBlockAttribute(t), this.updateCurrentAttributes()) : (this.removeTextAttribute(t), delete this.currentAttributes[t], this.notifyDelegateOfCurrentAttributesChange());\n }\n }, {\n key: \"removeTextAttribute\",\n value: function removeTextAttribute(t) {\n var e = this.getSelectedRange();\n if (e) return this.setDocument(this.document.removeAttributeAtRange(t, e));\n }\n }, {\n key: \"removeBlockAttribute\",\n value: function removeBlockAttribute(t) {\n var e = this.getSelectedRange();\n if (e) return this.setDocument(this.document.removeAttributeAtRange(t, e));\n }\n }, {\n key: \"canDecreaseNestingLevel\",\n value: function canDecreaseNestingLevel() {\n var t;\n return (null === (t = this.getBlock()) || void 0 === t ? void 0 : t.getNestingLevel()) > 0;\n }\n }, {\n key: \"canIncreaseNestingLevel\",\n value: function canIncreaseNestingLevel() {\n var t;\n var e = this.getBlock();\n\n if (e) {\n if (null === (t = mt(e.getLastNestableAttribute())) || void 0 === t || !t.listAttribute) return e.getNestingLevel() > 0;\n {\n var _t43 = this.getPreviousBlock();\n\n if (_t43) return function () {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];\n return ot((arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []).slice(0, t.length), t);\n }(_t43.getListItemAttributes(), e.getListItemAttributes());\n }\n }\n }\n }, {\n key: \"decreaseNestingLevel\",\n value: function decreaseNestingLevel() {\n var t = this.getBlock();\n if (t) return this.setDocument(this.document.replaceBlock(t, t.decreaseNestingLevel()));\n }\n }, {\n key: \"increaseNestingLevel\",\n value: function increaseNestingLevel() {\n var t = this.getBlock();\n if (t) return this.setDocument(this.document.replaceBlock(t, t.increaseNestingLevel()));\n }\n }, {\n key: \"canDecreaseBlockAttributeLevel\",\n value: function canDecreaseBlockAttributeLevel() {\n var t;\n return (null === (t = this.getBlock()) || void 0 === t ? void 0 : t.getAttributeLevel()) > 0;\n }\n }, {\n key: \"decreaseBlockAttributeLevel\",\n value: function decreaseBlockAttributeLevel() {\n var t;\n var e = null === (t = this.getBlock()) || void 0 === t ? void 0 : t.getLastAttribute();\n if (e) return this.removeCurrentAttribute(e);\n }\n }, {\n key: \"decreaseListLevel\",\n value: function decreaseListLevel() {\n var _Array$from16 = Array.from(this.getSelectedRange()),\n _Array$from17 = _slicedToArray(_Array$from16, 1),\n t = _Array$from17[0];\n\n var _this$document$locati = this.document.locationFromPosition(t),\n e = _this$document$locati.index;\n\n var i = e;\n var n = this.getBlock().getAttributeLevel();\n var r = this.document.getBlockAtIndex(i + 1);\n\n for (; r && r.isListItem() && !(r.getAttributeLevel() <= n);) {\n i++, r = this.document.getBlockAtIndex(i + 1);\n }\n\n t = this.document.positionFromLocation({\n index: e,\n offset: 0\n });\n var o = this.document.positionFromLocation({\n index: i,\n offset: 0\n });\n return this.setDocument(this.document.removeLastListAttributeAtRange([t, o]));\n }\n }, {\n key: \"updateCurrentAttributes\",\n value: function updateCurrentAttributes() {\n var _this44 = this;\n\n var t = this.getSelectedRange({\n ignoreLock: !0\n });\n\n if (t) {\n var _e42 = this.document.getCommonAttributesAtRange(t);\n\n if (Array.from(gt()).forEach(function (t) {\n _e42[t] || _this44.canSetCurrentAttribute(t) || (_e42[t] = !1);\n }), !Tt(_e42, this.currentAttributes)) return this.currentAttributes = _e42, this.notifyDelegateOfCurrentAttributesChange();\n }\n }\n }, {\n key: \"getCurrentAttributes\",\n value: function getCurrentAttributes() {\n return m.call({}, this.currentAttributes);\n }\n }, {\n key: \"getCurrentTextAttributes\",\n value: function getCurrentTextAttributes() {\n var t = {};\n\n for (var _e43 in this.currentAttributes) {\n var _i38 = this.currentAttributes[_e43];\n !1 !== _i38 && ft(_e43) && (t[_e43] = _i38);\n }\n\n return t;\n }\n }, {\n key: \"freezeSelection\",\n value: function freezeSelection() {\n return this.setCurrentAttribute(\"frozen\", !0);\n }\n }, {\n key: \"thawSelection\",\n value: function thawSelection() {\n return this.removeCurrentAttribute(\"frozen\");\n }\n }, {\n key: \"hasFrozenSelection\",\n value: function hasFrozenSelection() {\n return this.hasCurrentAttribute(\"frozen\");\n }\n }, {\n key: \"setSelection\",\n value: function setSelection(t) {\n var e;\n var i = this.document.locationRangeFromRange(t);\n return null === (e = this.delegate) || void 0 === e ? void 0 : e.compositionDidRequestChangingSelectionToLocationRange(i);\n }\n }, {\n key: \"getSelectedRange\",\n value: function getSelectedRange() {\n var t = this.getLocationRange();\n if (t) return this.document.rangeFromLocationRange(t);\n }\n }, {\n key: \"setSelectedRange\",\n value: function setSelectedRange(t) {\n var e = this.document.locationRangeFromRange(t);\n return this.getSelectionManager().setLocationRange(e);\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n var t = this.getLocationRange();\n if (t) return this.document.positionFromLocation(t[0]);\n }\n }, {\n key: \"getLocationRange\",\n value: function getLocationRange(t) {\n return this.targetLocationRange ? this.targetLocationRange : this.getSelectionManager().getLocationRange(t) || wt({\n index: 0,\n offset: 0\n });\n }\n }, {\n key: \"withTargetLocationRange\",\n value: function withTargetLocationRange(t, e) {\n var i;\n this.targetLocationRange = t;\n\n try {\n i = e();\n } finally {\n this.targetLocationRange = null;\n }\n\n return i;\n }\n }, {\n key: \"withTargetRange\",\n value: function withTargetRange(t, e) {\n var i = this.document.locationRangeFromRange(t);\n return this.withTargetLocationRange(i, e);\n }\n }, {\n key: \"withTargetDOMRange\",\n value: function withTargetDOMRange(t, e) {\n var i = this.createLocationRangeFromDOMRange(t, {\n strict: !1\n });\n return this.withTargetLocationRange(i, e);\n }\n }, {\n key: \"getExpandedRangeInDirection\",\n value: function getExpandedRangeInDirection(t) {\n var _ref18 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref18.length,\n _Array$from18 = Array.from(this.getSelectedRange()),\n _Array$from19 = _slicedToArray(_Array$from18, 2),\n i = _Array$from19[0],\n n = _Array$from19[1];\n\n return \"backward\" === t ? e ? i -= e : i = this.translateUTF16PositionFromOffset(i, -1) : e ? n += e : n = this.translateUTF16PositionFromOffset(n, 1), wt([i, n]);\n }\n }, {\n key: \"shouldManageMovingCursorInDirection\",\n value: function shouldManageMovingCursorInDirection(t) {\n if (this.editingAttachment) return !0;\n var e = this.getExpandedRangeInDirection(t);\n return null != this.getAttachmentAtRange(e);\n }\n }, {\n key: \"moveCursorInDirection\",\n value: function moveCursorInDirection(t) {\n var e, i;\n if (this.editingAttachment) i = this.document.getRangeOfAttachment(this.editingAttachment);else {\n var _n27 = this.getSelectedRange();\n\n i = this.getExpandedRangeInDirection(t), e = !Dt(_n27, i);\n }\n\n if (\"backward\" === t ? this.setSelectedRange(i[0]) : this.setSelectedRange(i[1]), e) {\n var _t44 = this.getAttachmentAtRange(i);\n\n if (_t44) return this.editAttachment(_t44);\n }\n }\n }, {\n key: \"expandSelectionInDirection\",\n value: function expandSelectionInDirection(t) {\n var _ref19 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref19.length;\n\n var i = this.getExpandedRangeInDirection(t, {\n length: e\n });\n return this.setSelectedRange(i);\n }\n }, {\n key: \"expandSelectionForEditing\",\n value: function expandSelectionForEditing() {\n if (this.hasCurrentAttribute(\"href\")) return this.expandSelectionAroundCommonAttribute(\"href\");\n }\n }, {\n key: \"expandSelectionAroundCommonAttribute\",\n value: function expandSelectionAroundCommonAttribute(t) {\n var e = this.getPosition(),\n i = this.document.getRangeOfCommonAttributeAtPosition(t, e);\n return this.setSelectedRange(i);\n }\n }, {\n key: \"selectionContainsAttachments\",\n value: function selectionContainsAttachments() {\n var t;\n return (null === (t = this.getSelectedAttachments()) || void 0 === t ? void 0 : t.length) > 0;\n }\n }, {\n key: \"selectionIsInCursorTarget\",\n value: function selectionIsInCursorTarget() {\n return this.editingAttachment || this.positionIsCursorTarget(this.getPosition());\n }\n }, {\n key: \"positionIsCursorTarget\",\n value: function positionIsCursorTarget(t) {\n var e = this.document.locationFromPosition(t);\n if (e) return this.locationIsCursorTarget(e);\n }\n }, {\n key: \"positionIsBlockBreak\",\n value: function positionIsBlockBreak(t) {\n var e;\n return null === (e = this.document.getPieceAtPosition(t)) || void 0 === e ? void 0 : e.isBlockBreak();\n }\n }, {\n key: \"getSelectedDocument\",\n value: function getSelectedDocument() {\n var t = this.getSelectedRange();\n if (t) return this.document.getDocumentAtRange(t);\n }\n }, {\n key: \"getSelectedAttachments\",\n value: function getSelectedAttachments() {\n var t;\n return null === (t = this.getSelectedDocument()) || void 0 === t ? void 0 : t.getAttachments();\n }\n }, {\n key: \"getAttachments\",\n value: function getAttachments() {\n return this.attachments.slice(0);\n }\n }, {\n key: \"refreshAttachments\",\n value: function refreshAttachments() {\n var _this45 = this;\n\n var t = this.document.getAttachments(),\n _ref20 = function () {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];\n var i = [],\n n = [],\n r = new Set();\n t.forEach(function (t) {\n r.add(t);\n });\n var o = new Set();\n return e.forEach(function (t) {\n o.add(t), r.has(t) || i.push(t);\n }), t.forEach(function (t) {\n o.has(t) || n.push(t);\n }), {\n added: i,\n removed: n\n };\n }(this.attachments, t),\n e = _ref20.added,\n i = _ref20.removed;\n\n return this.attachments = t, Array.from(i).forEach(function (t) {\n var e, i;\n t.delegate = null, null === (e = _this45.delegate) || void 0 === e || null === (i = e.compositionDidRemoveAttachment) || void 0 === i || i.call(e, t);\n }), function () {\n var t = [];\n return Array.from(e).forEach(function (e) {\n var i, n;\n e.delegate = _this45, t.push(null === (i = _this45.delegate) || void 0 === i || null === (n = i.compositionDidAddAttachment) || void 0 === n ? void 0 : n.call(i, e));\n }), t;\n }();\n }\n }, {\n key: \"attachmentDidChangeAttributes\",\n value: function attachmentDidChangeAttributes(t) {\n var e, i;\n return this.revision++, null === (e = this.delegate) || void 0 === e || null === (i = e.compositionDidEditAttachment) || void 0 === i ? void 0 : i.call(e, t);\n }\n }, {\n key: \"attachmentDidChangePreviewURL\",\n value: function attachmentDidChangePreviewURL(t) {\n var e, i;\n return this.revision++, null === (e = this.delegate) || void 0 === e || null === (i = e.compositionDidChangeAttachmentPreviewURL) || void 0 === i ? void 0 : i.call(e, t);\n }\n }, {\n key: \"editAttachment\",\n value: function editAttachment(t, e) {\n var i, n;\n if (t !== this.editingAttachment) return this.stopEditingAttachment(), this.editingAttachment = t, null === (i = this.delegate) || void 0 === i || null === (n = i.compositionDidStartEditingAttachment) || void 0 === n ? void 0 : n.call(i, this.editingAttachment, e);\n }\n }, {\n key: \"stopEditingAttachment\",\n value: function stopEditingAttachment() {\n var t, e;\n this.editingAttachment && (null === (t = this.delegate) || void 0 === t || null === (e = t.compositionDidStopEditingAttachment) || void 0 === e || e.call(t, this.editingAttachment), this.editingAttachment = null);\n }\n }, {\n key: \"updateAttributesForAttachment\",\n value: function updateAttributesForAttachment(t, e) {\n return this.setDocument(this.document.updateAttributesForAttachment(t, e));\n }\n }, {\n key: \"removeAttributeForAttachment\",\n value: function removeAttributeForAttachment(t, e) {\n return this.setDocument(this.document.removeAttributeForAttachment(t, e));\n }\n }, {\n key: \"breakFormattedBlock\",\n value: function breakFormattedBlock(t) {\n var e = t.document;\n var i = t.block;\n var n = t.startPosition,\n r = [n - 1, n];\n i.getBlockBreakPosition() === t.startLocation.offset ? (i.breaksOnReturn() && \"\\n\" === t.nextCharacter ? n += 1 : e = e.removeTextAtRange(r), r = [n, n]) : \"\\n\" === t.nextCharacter ? \"\\n\" === t.previousCharacter ? r = [n - 1, n + 1] : (r = [n, n + 1], n += 1) : t.startLocation.offset - 1 != 0 && (n += 1);\n var o = new on([i.removeLastAttribute().copyWithoutText()]);\n return this.setDocument(e.insertDocumentAtRange(o, r)), this.setSelection(n);\n }\n }, {\n key: \"getPreviousBlock\",\n value: function getPreviousBlock() {\n var t = this.getLocationRange();\n\n if (t) {\n var _e44 = t[0].index;\n if (_e44 > 0) return this.document.getBlockAtIndex(_e44 - 1);\n }\n }\n }, {\n key: \"getBlock\",\n value: function getBlock() {\n var t = this.getLocationRange();\n if (t) return this.document.getBlockAtIndex(t[0].index);\n }\n }, {\n key: \"getAttachmentAtRange\",\n value: function getAttachmentAtRange(t) {\n var e = this.document.getDocumentAtRange(t);\n if (e.toString() === \"\".concat(\"\", \"\\n\")) return e.getAttachments()[0];\n }\n }, {\n key: \"notifyDelegateOfCurrentAttributesChange\",\n value: function notifyDelegateOfCurrentAttributesChange() {\n var t, e;\n return null === (t = this.delegate) || void 0 === t || null === (e = t.compositionDidChangeCurrentAttributes) || void 0 === e ? void 0 : e.call(t, this.currentAttributes);\n }\n }, {\n key: \"notifyDelegateOfInsertionAtRange\",\n value: function notifyDelegateOfInsertionAtRange(t) {\n var e, i;\n return null === (e = this.delegate) || void 0 === e || null === (i = e.compositionDidPerformInsertionAtRange) || void 0 === i ? void 0 : i.call(e, t);\n }\n }, {\n key: \"translateUTF16PositionFromOffset\",\n value: function translateUTF16PositionFromOffset(t, e) {\n var i = this.document.toUTF16String(),\n n = i.offsetFromUCS2Offset(t);\n return i.offsetToUCS2Offset(n + e);\n }\n }]);\n\n return kn;\n}(q);\n\nkn.proxyMethod(\"getSelectionManager().getPointRange\"), kn.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\"), kn.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\"), kn.proxyMethod(\"getSelectionManager().locationIsCursorTarget\"), kn.proxyMethod(\"getSelectionManager().selectionIsExpanded\"), kn.proxyMethod(\"delegate?.getSelectionManager\");\n\nvar Tn = /*#__PURE__*/function (_q12) {\n _inherits(Tn, _q12);\n\n var _super29 = _createSuper(Tn);\n\n function Tn(t) {\n var _this46;\n\n _classCallCheck(this, Tn);\n\n _this46 = _super29.apply(this, arguments), _this46.composition = t, _this46.undoEntries = [], _this46.redoEntries = [];\n return _this46;\n }\n\n _createClass(Tn, [{\n key: \"recordUndoEntry\",\n value: function recordUndoEntry(t) {\n var _ref21 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref21.context,\n i = _ref21.consolidatable;\n\n var n = this.undoEntries.slice(-1)[0];\n\n if (!i || !wn(n, t, e)) {\n var _i39 = this.createEntry({\n description: t,\n context: e\n });\n\n this.undoEntries.push(_i39), this.redoEntries = [];\n }\n }\n }, {\n key: \"undo\",\n value: function undo() {\n var t = this.undoEntries.pop();\n\n if (t) {\n var _e45 = this.createEntry(t);\n\n return this.redoEntries.push(_e45), this.composition.loadSnapshot(t.snapshot);\n }\n }\n }, {\n key: \"redo\",\n value: function redo() {\n var t = this.redoEntries.pop();\n\n if (t) {\n var _e46 = this.createEntry(t);\n\n return this.undoEntries.push(_e46), this.composition.loadSnapshot(t.snapshot);\n }\n }\n }, {\n key: \"canUndo\",\n value: function canUndo() {\n return this.undoEntries.length > 0;\n }\n }, {\n key: \"canRedo\",\n value: function canRedo() {\n return this.redoEntries.length > 0;\n }\n }, {\n key: \"createEntry\",\n value: function createEntry() {\n var _ref22 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},\n t = _ref22.description,\n e = _ref22.context;\n\n return {\n description: null == t ? void 0 : t.toString(),\n context: JSON.stringify(e),\n snapshot: this.composition.getSnapshot()\n };\n }\n }]);\n\n return Tn;\n}(q);\n\nvar wn = function wn(t, e, i) {\n return (null == t ? void 0 : t.description) === (null == e ? void 0 : e.toString()) && (null == t ? void 0 : t.context) === JSON.stringify(i);\n},\n Ln = \"attachmentGallery\";\n\nvar Dn = /*#__PURE__*/function () {\n function Dn(t) {\n _classCallCheck(this, Dn);\n\n this.document = t.document, this.selectedRange = t.selectedRange;\n }\n\n _createClass(Dn, [{\n key: \"perform\",\n value: function perform() {\n return this.removeBlockAttribute(), this.applyBlockAttribute();\n }\n }, {\n key: \"getSnapshot\",\n value: function getSnapshot() {\n return {\n document: this.document,\n selectedRange: this.selectedRange\n };\n }\n }, {\n key: \"removeBlockAttribute\",\n value: function removeBlockAttribute() {\n var _this47 = this;\n\n return this.findRangesOfBlocks().map(function (t) {\n return _this47.document = _this47.document.removeAttributeAtRange(Ln, t);\n });\n }\n }, {\n key: \"applyBlockAttribute\",\n value: function applyBlockAttribute() {\n var _this48 = this;\n\n var t = 0;\n this.findRangesOfPieces().forEach(function (e) {\n e[1] - e[0] > 1 && (e[0] += t, e[1] += t, \"\\n\" !== _this48.document.getCharacterAtPosition(e[1]) && (_this48.document = _this48.document.insertBlockBreakAtRange(e[1]), e[1] < _this48.selectedRange[1] && _this48.moveSelectedRangeForward(), e[1]++, t++), 0 !== e[0] && \"\\n\" !== _this48.document.getCharacterAtPosition(e[0] - 1) && (_this48.document = _this48.document.insertBlockBreakAtRange(e[0]), e[0] < _this48.selectedRange[0] && _this48.moveSelectedRangeForward(), e[0]++, t++), _this48.document = _this48.document.applyBlockAttributeAtRange(Ln, !0, e));\n });\n }\n }, {\n key: \"findRangesOfBlocks\",\n value: function findRangesOfBlocks() {\n return this.document.findRangesForBlockAttribute(Ln);\n }\n }, {\n key: \"findRangesOfPieces\",\n value: function findRangesOfPieces() {\n return this.document.findRangesForTextAttribute(\"presentation\", {\n withValue: \"gallery\"\n });\n }\n }, {\n key: \"moveSelectedRangeForward\",\n value: function moveSelectedRangeForward() {\n this.selectedRange[0] += 1, this.selectedRange[1] += 1;\n }\n }]);\n\n return Dn;\n}();\n\nvar Nn = function Nn(t) {\n var e = new Dn(t);\n return e.perform(), e.getSnapshot();\n},\n In = [Nn];\n\nvar On = /*#__PURE__*/function () {\n function On(t, e, i) {\n _classCallCheck(this, On);\n\n this.insertFiles = this.insertFiles.bind(this), this.composition = t, this.selectionManager = e, this.element = i, this.undoManager = new Tn(this.composition), this.filters = In.slice(0);\n }\n\n _createClass(On, [{\n key: \"loadDocument\",\n value: function loadDocument(t) {\n return this.loadSnapshot({\n document: t,\n selectedRange: [0, 0]\n });\n }\n }, {\n key: \"loadHTML\",\n value: function loadHTML() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\";\n var e = cn.parse(t, {\n referenceElement: this.element\n }).getDocument();\n return this.loadDocument(e);\n }\n }, {\n key: \"loadJSON\",\n value: function loadJSON(t) {\n var e = t.document,\n i = t.selectedRange;\n return e = on.fromJSON(e), this.loadSnapshot({\n document: e,\n selectedRange: i\n });\n }\n }, {\n key: \"loadSnapshot\",\n value: function loadSnapshot(t) {\n return this.undoManager = new Tn(this.composition), this.composition.loadSnapshot(t);\n }\n }, {\n key: \"getDocument\",\n value: function getDocument() {\n return this.composition.document;\n }\n }, {\n key: \"getSelectedDocument\",\n value: function getSelectedDocument() {\n return this.composition.getSelectedDocument();\n }\n }, {\n key: \"getSnapshot\",\n value: function getSnapshot() {\n return this.composition.getSnapshot();\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.getSnapshot();\n }\n }, {\n key: \"deleteInDirection\",\n value: function deleteInDirection(t) {\n return this.composition.deleteInDirection(t);\n }\n }, {\n key: \"insertAttachment\",\n value: function insertAttachment(t) {\n return this.composition.insertAttachment(t);\n }\n }, {\n key: \"insertAttachments\",\n value: function insertAttachments(t) {\n return this.composition.insertAttachments(t);\n }\n }, {\n key: \"insertDocument\",\n value: function insertDocument(t) {\n return this.composition.insertDocument(t);\n }\n }, {\n key: \"insertFile\",\n value: function insertFile(t) {\n return this.composition.insertFile(t);\n }\n }, {\n key: \"insertFiles\",\n value: function insertFiles(t) {\n return this.composition.insertFiles(t);\n }\n }, {\n key: \"insertHTML\",\n value: function insertHTML(t) {\n return this.composition.insertHTML(t);\n }\n }, {\n key: \"insertString\",\n value: function insertString(t) {\n return this.composition.insertString(t);\n }\n }, {\n key: \"insertText\",\n value: function insertText(t) {\n return this.composition.insertText(t);\n }\n }, {\n key: \"insertLineBreak\",\n value: function insertLineBreak() {\n return this.composition.insertLineBreak();\n }\n }, {\n key: \"getSelectedRange\",\n value: function getSelectedRange() {\n return this.composition.getSelectedRange();\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n return this.composition.getPosition();\n }\n }, {\n key: \"getClientRectAtPosition\",\n value: function getClientRectAtPosition(t) {\n var e = this.getDocument().locationRangeFromRange([t, t + 1]);\n return this.selectionManager.getClientRectAtLocationRange(e);\n }\n }, {\n key: \"expandSelectionInDirection\",\n value: function expandSelectionInDirection(t) {\n return this.composition.expandSelectionInDirection(t);\n }\n }, {\n key: \"moveCursorInDirection\",\n value: function moveCursorInDirection(t) {\n return this.composition.moveCursorInDirection(t);\n }\n }, {\n key: \"setSelectedRange\",\n value: function setSelectedRange(t) {\n return this.composition.setSelectedRange(t);\n }\n }, {\n key: \"activateAttribute\",\n value: function activateAttribute(t) {\n var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n return this.composition.setCurrentAttribute(t, e);\n }\n }, {\n key: \"attributeIsActive\",\n value: function attributeIsActive(t) {\n return this.composition.hasCurrentAttribute(t);\n }\n }, {\n key: \"canActivateAttribute\",\n value: function canActivateAttribute(t) {\n return this.composition.canSetCurrentAttribute(t);\n }\n }, {\n key: \"deactivateAttribute\",\n value: function deactivateAttribute(t) {\n return this.composition.removeCurrentAttribute(t);\n }\n }, {\n key: \"setHTMLAtributeAtPosition\",\n value: function setHTMLAtributeAtPosition(t, e, i) {\n this.composition.setHTMLAtributeAtPosition(t, e, i);\n }\n }, {\n key: \"canDecreaseNestingLevel\",\n value: function canDecreaseNestingLevel() {\n return this.composition.canDecreaseNestingLevel();\n }\n }, {\n key: \"canIncreaseNestingLevel\",\n value: function canIncreaseNestingLevel() {\n return this.composition.canIncreaseNestingLevel();\n }\n }, {\n key: \"decreaseNestingLevel\",\n value: function decreaseNestingLevel() {\n if (this.canDecreaseNestingLevel()) return this.composition.decreaseNestingLevel();\n }\n }, {\n key: \"increaseNestingLevel\",\n value: function increaseNestingLevel() {\n if (this.canIncreaseNestingLevel()) return this.composition.increaseNestingLevel();\n }\n }, {\n key: \"canRedo\",\n value: function canRedo() {\n return this.undoManager.canRedo();\n }\n }, {\n key: \"canUndo\",\n value: function canUndo() {\n return this.undoManager.canUndo();\n }\n }, {\n key: \"recordUndoEntry\",\n value: function recordUndoEntry(t) {\n var _ref23 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n e = _ref23.context,\n i = _ref23.consolidatable;\n\n return this.undoManager.recordUndoEntry(t, {\n context: e,\n consolidatable: i\n });\n }\n }, {\n key: \"redo\",\n value: function redo() {\n if (this.canRedo()) return this.undoManager.redo();\n }\n }, {\n key: \"undo\",\n value: function undo() {\n if (this.canUndo()) return this.undoManager.undo();\n }\n }]);\n\n return On;\n}();\n\nvar Fn = /*#__PURE__*/function () {\n function Fn(t) {\n _classCallCheck(this, Fn);\n\n this.element = t;\n }\n\n _createClass(Fn, [{\n key: \"findLocationFromContainerAndOffset\",\n value: function findLocationFromContainerAndOffset(t, e) {\n var _ref24 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {\n strict: !0\n },\n i = _ref24.strict,\n n = 0,\n r = !1;\n\n var o = {\n index: 0,\n offset: 0\n },\n s = this.findAttachmentElementParentForNode(t);\n s && (t = s.parentNode, e = E(s));\n var a = R(this.element, {\n usingFilter: _n\n });\n\n for (; a.nextNode();) {\n var _s5 = a.currentNode;\n\n if (_s5 === t && B(t)) {\n F(_s5) || (o.offset += e);\n break;\n }\n\n if (_s5.parentNode === t) {\n if (n++ === e) break;\n } else if (!C(t, _s5) && n > 0) break;\n\n N(_s5, {\n strict: i\n }) ? (r && o.index++, o.offset = 0, r = !0) : o.offset += Pn(_s5);\n }\n\n return o;\n }\n }, {\n key: \"findContainerAndOffsetFromLocation\",\n value: function findContainerAndOffsetFromLocation(t) {\n var e, i;\n\n if (0 === t.index && 0 === t.offset) {\n for (e = this.element, i = 0; e.firstChild;) {\n if (e = e.firstChild, D(e)) {\n i = 1;\n break;\n }\n }\n\n return [e, i];\n }\n\n var _this$findNodeAndOffs = this.findNodeAndOffsetFromLocation(t),\n _this$findNodeAndOffs2 = _slicedToArray(_this$findNodeAndOffs, 2),\n n = _this$findNodeAndOffs2[0],\n r = _this$findNodeAndOffs2[1];\n\n if (n) {\n if (B(n)) 0 === Pn(n) ? (e = n.parentNode.parentNode, i = E(n.parentNode), F(n, {\n name: \"right\"\n }) && i++) : (e = n, i = t.offset - r);else {\n if (e = n.parentNode, !N(n.previousSibling) && !D(e)) for (; n === e.lastChild && (n = e, e = e.parentNode, !D(e));) {\n ;\n }\n i = E(n), 0 !== t.offset && i++;\n }\n return [e, i];\n }\n }\n }, {\n key: \"findNodeAndOffsetFromLocation\",\n value: function findNodeAndOffsetFromLocation(t) {\n var e,\n i,\n n = 0;\n\n var _iterator7 = _createForOfIteratorHelper(this.getSignificantNodesForIndex(t.index)),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _r14 = _step7.value;\n\n var _o8 = Pn(_r14);\n\n if (t.offset <= n + _o8) if (B(_r14)) {\n if (e = _r14, i = n, t.offset === i && F(e)) break;\n } else e || (e = _r14, i = n);\n if (n += _o8, n > t.offset) break;\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n return [e, i];\n }\n }, {\n key: \"findAttachmentElementParentForNode\",\n value: function findAttachmentElementParentForNode(t) {\n for (; t && t !== this.element;) {\n if (P(t)) return t;\n t = t.parentNode;\n }\n }\n }, {\n key: \"getSignificantNodesForIndex\",\n value: function getSignificantNodesForIndex(t) {\n var e = [],\n i = R(this.element, {\n usingFilter: Mn\n });\n var n = !1;\n\n for (; i.nextNode();) {\n var _o9 = i.currentNode;\n var r;\n\n if (I(_o9)) {\n if (null != r ? r++ : r = 0, r === t) n = !0;else if (n) break;\n } else n && e.push(_o9);\n }\n\n return e;\n }\n }]);\n\n return Fn;\n}();\n\nvar Pn = function Pn(t) {\n if (t.nodeType === Node.TEXT_NODE) {\n if (F(t)) return 0;\n return t.textContent.length;\n }\n\n return \"br\" === k(t) || P(t) ? 1 : 0;\n},\n Mn = function Mn(t) {\n return Bn(t) === NodeFilter.FILTER_ACCEPT ? _n(t) : NodeFilter.FILTER_REJECT;\n},\n Bn = function Bn(t) {\n return M(t) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n},\n _n = function _n(t) {\n return P(t.parentNode) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n};\n\nvar jn = /*#__PURE__*/function () {\n function jn() {\n _classCallCheck(this, jn);\n }\n\n _createClass(jn, [{\n key: \"createDOMRangeFromPoint\",\n value: function createDOMRangeFromPoint(t) {\n var e,\n i = t.x,\n n = t.y;\n\n if (document.caretPositionFromPoint) {\n var _document$caretPositi = document.caretPositionFromPoint(i, n),\n _t45 = _document$caretPositi.offsetNode,\n _r15 = _document$caretPositi.offset;\n\n return e = document.createRange(), e.setStart(_t45, _r15), e;\n }\n\n if (document.caretRangeFromPoint) return document.caretRangeFromPoint(i, n);\n\n if (document.body.createTextRange) {\n var _t46 = Mt();\n\n try {\n var _t47 = document.body.createTextRange();\n\n _t47.moveToPoint(i, n), _t47.select();\n } catch (t) {}\n\n return e = Mt(), Bt(_t46), e;\n }\n }\n }, {\n key: \"getClientRectsForDOMRange\",\n value: function getClientRectsForDOMRange(t) {\n var e = Array.from(t.getClientRects());\n return [e[0], e[e.length - 1]];\n }\n }]);\n\n return jn;\n}();\n\nvar Wn = /*#__PURE__*/function (_q13) {\n _inherits(Wn, _q13);\n\n var _super30 = _createSuper(Wn);\n\n function Wn(t) {\n var _this49;\n\n _classCallCheck(this, Wn);\n\n _this49 = _super30.apply(this, arguments), _this49.didMouseDown = _this49.didMouseDown.bind(_assertThisInitialized(_this49)), _this49.selectionDidChange = _this49.selectionDidChange.bind(_assertThisInitialized(_this49)), _this49.element = t, _this49.locationMapper = new Fn(_this49.element), _this49.pointMapper = new jn(), _this49.lockCount = 0, b(\"mousedown\", {\n onElement: _this49.element,\n withCallback: _this49.didMouseDown\n });\n return _this49;\n }\n\n _createClass(Wn, [{\n key: \"getLocationRange\",\n value: function getLocationRange() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return !1 === t.strict ? this.createLocationRangeFromDOMRange(Mt()) : t.ignoreLock ? this.currentLocationRange : this.lockedLocationRange ? this.lockedLocationRange : this.currentLocationRange;\n }\n }, {\n key: \"setLocationRange\",\n value: function setLocationRange(t) {\n if (this.lockedLocationRange) return;\n t = wt(t);\n var e = this.createDOMRangeFromLocationRange(t);\n e && (Bt(e), this.updateCurrentLocationRange(t));\n }\n }, {\n key: \"setLocationRangeFromPointRange\",\n value: function setLocationRangeFromPointRange(t) {\n t = wt(t);\n var e = this.getLocationAtPoint(t[0]),\n i = this.getLocationAtPoint(t[1]);\n this.setLocationRange([e, i]);\n }\n }, {\n key: \"getClientRectAtLocationRange\",\n value: function getClientRectAtLocationRange(t) {\n var e = this.createDOMRangeFromLocationRange(t);\n if (e) return this.getClientRectsForDOMRange(e)[1];\n }\n }, {\n key: \"locationIsCursorTarget\",\n value: function locationIsCursorTarget(t) {\n var e = Array.from(this.findNodeAndOffsetFromLocation(t))[0];\n return F(e);\n }\n }, {\n key: \"lock\",\n value: function lock() {\n 0 == this.lockCount++ && (this.updateCurrentLocationRange(), this.lockedLocationRange = this.getLocationRange());\n }\n }, {\n key: \"unlock\",\n value: function unlock() {\n if (0 == --this.lockCount) {\n var _t48 = this.lockedLocationRange;\n if (this.lockedLocationRange = null, null != _t48) return this.setLocationRange(_t48);\n }\n }\n }, {\n key: \"clearSelection\",\n value: function clearSelection() {\n var t;\n return null === (t = Pt()) || void 0 === t ? void 0 : t.removeAllRanges();\n }\n }, {\n key: \"selectionIsCollapsed\",\n value: function selectionIsCollapsed() {\n var t;\n return !0 === (null === (t = Mt()) || void 0 === t ? void 0 : t.collapsed);\n }\n }, {\n key: \"selectionIsExpanded\",\n value: function selectionIsExpanded() {\n return !this.selectionIsCollapsed();\n }\n }, {\n key: \"createLocationRangeFromDOMRange\",\n value: function createLocationRangeFromDOMRange(t, e) {\n if (null == t || !this.domRangeWithinElement(t)) return;\n var i = this.findLocationFromContainerAndOffset(t.startContainer, t.startOffset, e);\n if (!i) return;\n var n = t.collapsed ? void 0 : this.findLocationFromContainerAndOffset(t.endContainer, t.endOffset, e);\n return wt([i, n]);\n }\n }, {\n key: \"didMouseDown\",\n value: function didMouseDown() {\n return this.pauseTemporarily();\n }\n }, {\n key: \"pauseTemporarily\",\n value: function pauseTemporarily() {\n var _this50 = this;\n\n var t;\n this.paused = !0;\n\n var e = function e() {\n if (_this50.paused = !1, clearTimeout(i), Array.from(t).forEach(function (t) {\n t.destroy();\n }), C(document, _this50.element)) return _this50.selectionDidChange();\n },\n i = setTimeout(e, 200);\n\n t = [\"mousemove\", \"keydown\"].map(function (t) {\n return b(t, {\n onElement: document,\n withCallback: e\n });\n });\n }\n }, {\n key: \"selectionDidChange\",\n value: function selectionDidChange() {\n if (!this.paused && !x(this.element)) return this.updateCurrentLocationRange();\n }\n }, {\n key: \"updateCurrentLocationRange\",\n value: function updateCurrentLocationRange(t) {\n var e, i;\n if ((null != t ? t : t = this.createLocationRangeFromDOMRange(Mt())) && !Dt(t, this.currentLocationRange)) return this.currentLocationRange = t, null === (e = this.delegate) || void 0 === e || null === (i = e.locationRangeDidChange) || void 0 === i ? void 0 : i.call(e, this.currentLocationRange.slice(0));\n }\n }, {\n key: \"createDOMRangeFromLocationRange\",\n value: function createDOMRangeFromLocationRange(t) {\n var e = this.findContainerAndOffsetFromLocation(t[0]),\n i = Lt(t) ? e : this.findContainerAndOffsetFromLocation(t[1]) || e;\n\n if (null != e && null != i) {\n var _t49 = document.createRange();\n\n return _t49.setStart.apply(_t49, _toConsumableArray(Array.from(e || []))), _t49.setEnd.apply(_t49, _toConsumableArray(Array.from(i || []))), _t49;\n }\n }\n }, {\n key: \"getLocationAtPoint\",\n value: function getLocationAtPoint(t) {\n var e = this.createDOMRangeFromPoint(t);\n var i;\n if (e) return null === (i = this.createLocationRangeFromDOMRange(e)) || void 0 === i ? void 0 : i[0];\n }\n }, {\n key: \"domRangeWithinElement\",\n value: function domRangeWithinElement(t) {\n return t.collapsed ? C(this.element, t.startContainer) : C(this.element, t.startContainer) && C(this.element, t.endContainer);\n }\n }]);\n\n return Wn;\n}(q);\n\nWn.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\"), Wn.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\"), Wn.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\"), Wn.proxyMethod(\"pointMapper.createDOMRangeFromPoint\"), Wn.proxyMethod(\"pointMapper.getClientRectsForDOMRange\");\nvar Un = Object.freeze({\n __proto__: null,\n Attachment: Wi,\n AttachmentManager: Sn,\n AttachmentPiece: Ui,\n Block: Gi,\n Composition: kn,\n Document: on,\n Editor: On,\n HTMLParser: cn,\n HTMLSanitizer: ui,\n LineBreakInsertion: Rn,\n LocationMapper: Fn,\n ManagedAttachment: En,\n Piece: _i,\n PointMapper: jn,\n SelectionManager: Wn,\n SplittableList: zi,\n StringPiece: Vi,\n Text: Ki,\n UndoManager: Tn\n}),\n Vn = Object.freeze({\n __proto__: null,\n ObjectView: ie,\n AttachmentView: gi,\n BlockView: xi,\n DocumentView: Ci,\n PieceView: bi,\n PreviewableAttachmentView: fi,\n TextView: vi\n});\n\nvar zn = z.lang,\n qn = z.css,\n Hn = z.keyNames,\n Jn = function Jn(t) {\n return function () {\n var e = t.apply(this, arguments);\n e.do(), this.undos || (this.undos = []), this.undos.push(e.undo);\n };\n};\n\nvar Kn = /*#__PURE__*/function (_q14) {\n _inherits(Kn, _q14);\n\n var _super31 = _createSuper(Kn);\n\n function Kn(t, e, i) {\n var _this51;\n\n _classCallCheck(this, Kn);\n\n var n = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {};\n _this51 = _super31.apply(this, arguments), wi(_assertThisInitialized(_this51), \"makeElementMutable\", Jn(function () {\n return {\n do: function _do() {\n _this51.element.dataset.trixMutable = !0;\n },\n undo: function undo() {\n return delete _this51.element.dataset.trixMutable;\n }\n };\n })), wi(_assertThisInitialized(_this51), \"addToolbar\", Jn(function () {\n var t = T({\n tagName: \"div\",\n className: qn.attachmentToolbar,\n data: {\n trixMutable: !0\n },\n childNodes: T({\n tagName: \"div\",\n className: \"trix-button-row\",\n childNodes: T({\n tagName: \"span\",\n className: \"trix-button-group trix-button-group--actions\",\n childNodes: T({\n tagName: \"button\",\n className: \"trix-button trix-button--remove\",\n textContent: zn.remove,\n attributes: {\n title: zn.remove\n },\n data: {\n trixAction: \"remove\"\n }\n })\n })\n })\n });\n return _this51.attachment.isPreviewable() && t.appendChild(T({\n tagName: \"div\",\n className: qn.attachmentMetadataContainer,\n childNodes: T({\n tagName: \"span\",\n className: qn.attachmentMetadata,\n childNodes: [T({\n tagName: \"span\",\n className: qn.attachmentName,\n textContent: _this51.attachment.getFilename(),\n attributes: {\n title: _this51.attachment.getFilename()\n }\n }), T({\n tagName: \"span\",\n className: qn.attachmentSize,\n textContent: _this51.attachment.getFormattedFilesize()\n })]\n })\n })), b(\"click\", {\n onElement: t,\n withCallback: _this51.didClickToolbar\n }), b(\"click\", {\n onElement: t,\n matchingSelector: \"[data-trix-action]\",\n withCallback: _this51.didClickActionButton\n }), v(\"trix-attachment-before-toolbar\", {\n onElement: _this51.element,\n attributes: {\n toolbar: t,\n attachment: _this51.attachment\n }\n }), {\n do: function _do() {\n return _this51.element.appendChild(t);\n },\n undo: function undo() {\n return S(t);\n }\n };\n })), wi(_assertThisInitialized(_this51), \"installCaptionEditor\", Jn(function () {\n var t = T({\n tagName: \"textarea\",\n className: qn.attachmentCaptionEditor,\n attributes: {\n placeholder: zn.captionPlaceholder\n },\n data: {\n trixMutable: !0\n }\n });\n t.value = _this51.attachmentPiece.getCaption();\n var e = t.cloneNode();\n e.classList.add(\"trix-autoresize-clone\"), e.tabIndex = -1;\n\n var i = function i() {\n e.value = t.value, t.style.height = e.scrollHeight + \"px\";\n };\n\n b(\"input\", {\n onElement: t,\n withCallback: i\n }), b(\"input\", {\n onElement: t,\n withCallback: _this51.didInputCaption\n }), b(\"keydown\", {\n onElement: t,\n withCallback: _this51.didKeyDownCaption\n }), b(\"change\", {\n onElement: t,\n withCallback: _this51.didChangeCaption\n }), b(\"blur\", {\n onElement: t,\n withCallback: _this51.didBlurCaption\n });\n\n var n = _this51.element.querySelector(\"figcaption\"),\n r = n.cloneNode();\n\n return {\n do: function _do() {\n if (n.style.display = \"none\", r.appendChild(t), r.appendChild(e), r.classList.add(\"\".concat(qn.attachmentCaption, \"--editing\")), n.parentElement.insertBefore(r, n), i(), _this51.options.editCaption) return Rt(function () {\n return t.focus();\n });\n },\n undo: function undo() {\n S(r), n.style.display = null;\n }\n };\n })), _this51.didClickToolbar = _this51.didClickToolbar.bind(_assertThisInitialized(_this51)), _this51.didClickActionButton = _this51.didClickActionButton.bind(_assertThisInitialized(_this51)), _this51.didKeyDownCaption = _this51.didKeyDownCaption.bind(_assertThisInitialized(_this51)), _this51.didInputCaption = _this51.didInputCaption.bind(_assertThisInitialized(_this51)), _this51.didChangeCaption = _this51.didChangeCaption.bind(_assertThisInitialized(_this51)), _this51.didBlurCaption = _this51.didBlurCaption.bind(_assertThisInitialized(_this51)), _this51.attachmentPiece = t, _this51.element = e, _this51.container = i, _this51.options = n, _this51.attachment = _this51.attachmentPiece.attachment, \"a\" === k(_this51.element) && (_this51.element = _this51.element.firstChild), _this51.install();\n return _this51;\n }\n\n _createClass(Kn, [{\n key: \"install\",\n value: function install() {\n this.makeElementMutable(), this.addToolbar(), this.attachment.isPreviewable() && this.installCaptionEditor();\n }\n }, {\n key: \"uninstall\",\n value: function uninstall() {\n var t;\n var e = this.undos.pop();\n\n for (this.savePendingCaption(); e;) {\n e(), e = this.undos.pop();\n }\n\n null === (t = this.delegate) || void 0 === t || t.didUninstallAttachmentEditor(this);\n }\n }, {\n key: \"savePendingCaption\",\n value: function savePendingCaption() {\n if (null != this.pendingCaption) {\n var _r16 = this.pendingCaption;\n var t, e, i, n;\n if (this.pendingCaption = null, _r16) null === (t = this.delegate) || void 0 === t || null === (e = t.attachmentEditorDidRequestUpdatingAttributesForAttachment) || void 0 === e || e.call(t, {\n caption: _r16\n }, this.attachment);else null === (i = this.delegate) || void 0 === i || null === (n = i.attachmentEditorDidRequestRemovingAttributeForAttachment) || void 0 === n || n.call(i, \"caption\", this.attachment);\n }\n }\n }, {\n key: \"didClickToolbar\",\n value: function didClickToolbar(t) {\n return t.preventDefault(), t.stopPropagation();\n }\n }, {\n key: \"didClickActionButton\",\n value: function didClickActionButton(t) {\n var e;\n if (\"remove\" === t.target.getAttribute(\"data-trix-action\")) return null === (e = this.delegate) || void 0 === e ? void 0 : e.attachmentEditorDidRequestRemovalOfAttachment(this.attachment);\n }\n }, {\n key: \"didKeyDownCaption\",\n value: function didKeyDownCaption(t) {\n var e, i;\n if (\"return\" === Hn[t.keyCode]) return t.preventDefault(), this.savePendingCaption(), null === (e = this.delegate) || void 0 === e || null === (i = e.attachmentEditorDidRequestDeselectingAttachment) || void 0 === i ? void 0 : i.call(e, this.attachment);\n }\n }, {\n key: \"didInputCaption\",\n value: function didInputCaption(t) {\n this.pendingCaption = t.target.value.replace(/\\s/g, \" \").trim();\n }\n }, {\n key: \"didChangeCaption\",\n value: function didChangeCaption(t) {\n return this.savePendingCaption();\n }\n }, {\n key: \"didBlurCaption\",\n value: function didBlurCaption(t) {\n return this.savePendingCaption();\n }\n }]);\n\n return Kn;\n}(q);\n\nvar Gn = /*#__PURE__*/function (_q15) {\n _inherits(Gn, _q15);\n\n var _super32 = _createSuper(Gn);\n\n function Gn(t, i) {\n var _this52;\n\n _classCallCheck(this, Gn);\n\n _this52 = _super32.apply(this, arguments), _this52.didFocus = _this52.didFocus.bind(_assertThisInitialized(_this52)), _this52.didBlur = _this52.didBlur.bind(_assertThisInitialized(_this52)), _this52.didClickAttachment = _this52.didClickAttachment.bind(_assertThisInitialized(_this52)), _this52.element = t, _this52.composition = i, _this52.documentView = new Ci(_this52.composition.document, {\n element: _this52.element\n }), b(\"focus\", {\n onElement: _this52.element,\n withCallback: _this52.didFocus\n }), b(\"blur\", {\n onElement: _this52.element,\n withCallback: _this52.didBlur\n }), b(\"click\", {\n onElement: _this52.element,\n matchingSelector: \"a[contenteditable=false]\",\n preventDefault: !0\n }), b(\"mousedown\", {\n onElement: _this52.element,\n matchingSelector: e,\n withCallback: _this52.didClickAttachment\n }), b(\"click\", {\n onElement: _this52.element,\n matchingSelector: \"a\".concat(e),\n preventDefault: !0\n });\n return _this52;\n }\n\n _createClass(Gn, [{\n key: \"didFocus\",\n value: function didFocus(t) {\n var _this53 = this;\n\n var e;\n\n var i = function i() {\n var t, e;\n if (!_this53.focused) return _this53.focused = !0, null === (t = _this53.delegate) || void 0 === t || null === (e = t.compositionControllerDidFocus) || void 0 === e ? void 0 : e.call(t);\n };\n\n return (null === (e = this.blurPromise) || void 0 === e ? void 0 : e.then(i)) || i();\n }\n }, {\n key: \"didBlur\",\n value: function didBlur(t) {\n var _this54 = this;\n\n this.blurPromise = new Promise(function (t) {\n return Rt(function () {\n var e, i;\n x(_this54.element) || (_this54.focused = null, null === (e = _this54.delegate) || void 0 === e || null === (i = e.compositionControllerDidBlur) || void 0 === i || i.call(e));\n return _this54.blurPromise = null, t();\n });\n });\n }\n }, {\n key: \"didClickAttachment\",\n value: function didClickAttachment(t, e) {\n var i, n;\n var r = this.findAttachmentForElement(e),\n o = !!y(t.target, {\n matchingSelector: \"figcaption\"\n });\n return null === (i = this.delegate) || void 0 === i || null === (n = i.compositionControllerDidSelectAttachment) || void 0 === n ? void 0 : n.call(i, r, {\n editCaption: o\n });\n }\n }, {\n key: \"getSerializableElement\",\n value: function getSerializableElement() {\n return this.isEditingAttachment() ? this.documentView.shadowElement : this.element;\n }\n }, {\n key: \"render\",\n value: function render() {\n var t, e, i, n, r, o;\n (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 === (i = this.delegate) || void 0 === i || null === (n = i.compositionControllerWillSyncDocumentView) || void 0 === n || n.call(i), this.documentView.sync(), null === (r = this.delegate) || void 0 === r || null === (o = r.compositionControllerDidSyncDocumentView) || void 0 === o || o.call(r));\n return null === (t = this.delegate) || void 0 === t || null === (e = t.compositionControllerDidRender) || void 0 === e ? void 0 : e.call(t);\n }\n }, {\n key: \"rerenderViewForObject\",\n value: function rerenderViewForObject(t) {\n return this.invalidateViewForObject(t), this.render();\n }\n }, {\n key: \"invalidateViewForObject\",\n value: function invalidateViewForObject(t) {\n return this.documentView.invalidateViewForObject(t);\n }\n }, {\n key: \"isViewCachingEnabled\",\n value: function isViewCachingEnabled() {\n return this.documentView.isViewCachingEnabled();\n }\n }, {\n key: \"enableViewCaching\",\n value: function enableViewCaching() {\n return this.documentView.enableViewCaching();\n }\n }, {\n key: \"disableViewCaching\",\n value: function disableViewCaching() {\n return this.documentView.disableViewCaching();\n }\n }, {\n key: \"refreshViewCache\",\n value: function refreshViewCache() {\n return this.documentView.garbageCollectCachedViews();\n }\n }, {\n key: \"isEditingAttachment\",\n value: function isEditingAttachment() {\n return !!this.attachmentEditor;\n }\n }, {\n key: \"installAttachmentEditorForAttachment\",\n value: function installAttachmentEditorForAttachment(t, e) {\n var i;\n if ((null === (i = this.attachmentEditor) || void 0 === i ? void 0 : i.attachment) === t) return;\n var n = this.documentView.findElementForObject(t);\n if (!n) return;\n this.uninstallAttachmentEditor();\n var r = this.composition.document.getAttachmentPieceForAttachment(t);\n this.attachmentEditor = new Kn(r, n, this.element, e), this.attachmentEditor.delegate = this;\n }\n }, {\n key: \"uninstallAttachmentEditor\",\n value: function uninstallAttachmentEditor() {\n var t;\n return null === (t = this.attachmentEditor) || void 0 === t ? void 0 : t.uninstall();\n }\n }, {\n key: \"didUninstallAttachmentEditor\",\n value: function didUninstallAttachmentEditor() {\n return this.attachmentEditor = null, this.render();\n }\n }, {\n key: \"attachmentEditorDidRequestUpdatingAttributesForAttachment\",\n value: function attachmentEditorDidRequestUpdatingAttributesForAttachment(t, e) {\n var i, n;\n return null === (i = this.delegate) || void 0 === i || null === (n = i.compositionControllerWillUpdateAttachment) || void 0 === n || n.call(i, e), this.composition.updateAttributesForAttachment(t, e);\n }\n }, {\n key: \"attachmentEditorDidRequestRemovingAttributeForAttachment\",\n value: function attachmentEditorDidRequestRemovingAttributeForAttachment(t, e) {\n var i, n;\n return null === (i = this.delegate) || void 0 === i || null === (n = i.compositionControllerWillUpdateAttachment) || void 0 === n || n.call(i, e), this.composition.removeAttributeForAttachment(t, e);\n }\n }, {\n key: \"attachmentEditorDidRequestRemovalOfAttachment\",\n value: function attachmentEditorDidRequestRemovalOfAttachment(t) {\n var e, i;\n return null === (e = this.delegate) || void 0 === e || null === (i = e.compositionControllerDidRequestRemovalOfAttachment) || void 0 === i ? void 0 : i.call(e, t);\n }\n }, {\n key: \"attachmentEditorDidRequestDeselectingAttachment\",\n value: function attachmentEditorDidRequestDeselectingAttachment(t) {\n var e, i;\n return null === (e = this.delegate) || void 0 === e || null === (i = e.compositionControllerDidRequestDeselectingAttachment) || void 0 === i ? void 0 : i.call(e, t);\n }\n }, {\n key: \"canSyncDocumentView\",\n value: function canSyncDocumentView() {\n return !this.isEditingAttachment();\n }\n }, {\n key: \"findAttachmentForElement\",\n value: function findAttachmentForElement(t) {\n return this.composition.document.getAttachmentById(parseInt(t.dataset.trixId, 10));\n }\n }]);\n\n return Gn;\n}(q);\n\nvar Yn = /*#__PURE__*/function (_q16) {\n _inherits(Yn, _q16);\n\n var _super33 = _createSuper(Yn);\n\n function Yn() {\n _classCallCheck(this, Yn);\n\n return _super33.apply(this, arguments);\n }\n\n return _createClass(Yn);\n}(q);\n\nvar $n = \"data-trix-mutable\",\n Xn = \"[\".concat($n, \"]\"),\n Zn = {\n attributes: !0,\n childList: !0,\n characterData: !0,\n characterDataOldValue: !0,\n subtree: !0\n};\n\nvar Qn = /*#__PURE__*/function (_q17) {\n _inherits(Qn, _q17);\n\n var _super34 = _createSuper(Qn);\n\n function Qn(t) {\n var _this55;\n\n _classCallCheck(this, Qn);\n\n _this55 = _super34.call(this, t), _this55.didMutate = _this55.didMutate.bind(_assertThisInitialized(_this55)), _this55.element = t, _this55.observer = new window.MutationObserver(_this55.didMutate), _this55.start();\n return _this55;\n }\n\n _createClass(Qn, [{\n key: \"start\",\n value: function start() {\n return this.reset(), this.observer.observe(this.element, Zn);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n return this.observer.disconnect();\n }\n }, {\n key: \"didMutate\",\n value: function didMutate(t) {\n var _this$mutations;\n\n var e, i;\n if ((_this$mutations = this.mutations).push.apply(_this$mutations, _toConsumableArray(Array.from(this.findSignificantMutations(t) || []))), this.mutations.length) return null === (e = this.delegate) || void 0 === e || null === (i = e.elementDidMutate) || void 0 === i || i.call(e, this.getMutationSummary()), this.reset();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.mutations = [];\n }\n }, {\n key: \"findSignificantMutations\",\n value: function findSignificantMutations(t) {\n var _this56 = this;\n\n return t.filter(function (t) {\n return _this56.mutationIsSignificant(t);\n });\n }\n }, {\n key: \"mutationIsSignificant\",\n value: function mutationIsSignificant(t) {\n if (this.nodeIsMutable(t.target)) return !1;\n\n for (var _i40 = 0, _Array$from20 = Array.from(this.nodesModifiedByMutation(t)); _i40 < _Array$from20.length; _i40++) {\n var _e47 = _Array$from20[_i40];\n if (this.nodeIsSignificant(_e47)) return !0;\n }\n\n return !1;\n }\n }, {\n key: \"nodeIsSignificant\",\n value: function nodeIsSignificant(t) {\n return t !== this.element && !this.nodeIsMutable(t) && !M(t);\n }\n }, {\n key: \"nodeIsMutable\",\n value: function nodeIsMutable(t) {\n return y(t, {\n matchingSelector: Xn\n });\n }\n }, {\n key: \"nodesModifiedByMutation\",\n value: function nodesModifiedByMutation(t) {\n var e = [];\n\n switch (t.type) {\n case \"attributes\":\n t.attributeName !== $n && 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, _toConsumableArray(Array.from(t.addedNodes || []))), e.push.apply(e, _toConsumableArray(Array.from(t.removedNodes || [])));\n }\n\n return e;\n }\n }, {\n key: \"getMutationSummary\",\n value: function getMutationSummary() {\n return this.getTextMutationSummary();\n }\n }, {\n key: \"getTextMutationSummary\",\n value: function getTextMutationSummary() {\n var _this$getTextChangesF = this.getTextChangesFromCharacterData(),\n t = _this$getTextChangesF.additions,\n e = _this$getTextChangesF.deletions,\n i = this.getTextChangesFromChildList();\n\n Array.from(i.additions).forEach(function (e) {\n Array.from(t).includes(e) || t.push(e);\n }), e.push.apply(e, _toConsumableArray(Array.from(i.deletions || [])));\n var n = {},\n r = t.join(\"\");\n r && (n.textAdded = r);\n var o = e.join(\"\");\n return o && (n.textDeleted = o), n;\n }\n }, {\n key: \"getMutationsByType\",\n value: function getMutationsByType(t) {\n return Array.from(this.mutations).filter(function (e) {\n return e.type === t;\n });\n }\n }, {\n key: \"getTextChangesFromChildList\",\n value: function getTextChangesFromChildList() {\n var t, e;\n var i = [],\n n = [];\n Array.from(this.getMutationsByType(\"childList\")).forEach(function (t) {\n i.push.apply(i, _toConsumableArray(Array.from(t.addedNodes || []))), n.push.apply(n, _toConsumableArray(Array.from(t.removedNodes || [])));\n });\n 0 === i.length && 1 === n.length && I(n[0]) ? (t = [], e = [\"\\n\"]) : (t = tr(i), e = tr(n));\n var r = t.filter(function (t, i) {\n return t !== e[i];\n }).map(Wt),\n o = e.filter(function (e, i) {\n return e !== t[i];\n }).map(Wt);\n return {\n additions: r,\n deletions: o\n };\n }\n }, {\n key: \"getTextChangesFromCharacterData\",\n value: function getTextChangesFromCharacterData() {\n var t, e;\n var i = this.getMutationsByType(\"characterData\");\n\n if (i.length) {\n var _n28 = i[0],\n _r17 = i[i.length - 1],\n _o10 = function (t, e, _zt, _zt2, _zt3, _zt4) {\n var i, n;\n return t = X.box(t), (e = X.box(e)).length < t.length ? (_zt = zt(t, e), _zt2 = _slicedToArray(_zt, 2), n = _zt2[0], i = _zt2[1], _zt) : (_zt3 = zt(e, t), _zt4 = _slicedToArray(_zt3, 2), i = _zt4[0], n = _zt4[1], _zt3), {\n added: i,\n removed: n\n };\n }(Wt(_n28.oldValue), Wt(_r17.target.data));\n\n t = _o10.added, e = _o10.removed;\n }\n\n return {\n additions: t ? [t] : [],\n deletions: e ? [e] : []\n };\n }\n }]);\n\n return Qn;\n}(q);\n\nvar tr = function tr() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n var e = [];\n\n for (var _i41 = 0, _Array$from21 = Array.from(t); _i41 < _Array$from21.length; _i41++) {\n var _i42 = _Array$from21[_i41];\n\n switch (_i42.nodeType) {\n case Node.TEXT_NODE:\n e.push(_i42.data);\n break;\n\n case Node.ELEMENT_NODE:\n \"br\" === k(_i42) ? e.push(\"\\n\") : e.push.apply(e, _toConsumableArray(Array.from(tr(_i42.childNodes) || [])));\n }\n }\n\n return e;\n};\n\nvar er = /*#__PURE__*/function (_ee2) {\n _inherits(er, _ee2);\n\n var _super35 = _createSuper(er);\n\n function er(t) {\n var _this57;\n\n _classCallCheck(this, er);\n\n _this57 = _super35.apply(this, arguments), _this57.file = t;\n return _this57;\n }\n\n _createClass(er, [{\n key: \"perform\",\n value: function perform(t) {\n var _this58 = this;\n\n var e = new FileReader();\n return e.onerror = function () {\n return t(!1);\n }, e.onload = function () {\n e.onerror = null;\n\n try {\n e.abort();\n } catch (t) {}\n\n return t(!0, _this58.file);\n }, e.readAsArrayBuffer(this.file);\n }\n }]);\n\n return er;\n}(ee);\n\nvar ir = /*#__PURE__*/function () {\n function ir(t) {\n _classCallCheck(this, ir);\n\n this.element = t;\n }\n\n _createClass(ir, [{\n key: \"shouldIgnore\",\n value: function shouldIgnore(t) {\n return !!a.samsungAndroid && (this.previousEvent = this.event, this.event = t, this.checkSamsungKeyboardBuggyModeStart(), this.checkSamsungKeyboardBuggyModeEnd(), this.buggyMode);\n }\n }, {\n key: \"checkSamsungKeyboardBuggyModeStart\",\n value: function checkSamsungKeyboardBuggyModeStart() {\n this.insertingLongTextAfterUnidentifiedChar() && nr(this.element.innerText, this.event.data) && (this.buggyMode = !0, this.event.preventDefault());\n }\n }, {\n key: \"checkSamsungKeyboardBuggyModeEnd\",\n value: function checkSamsungKeyboardBuggyModeEnd() {\n this.buggyMode && \"insertText\" !== this.event.inputType && (this.buggyMode = !1);\n }\n }, {\n key: \"insertingLongTextAfterUnidentifiedChar\",\n value: function insertingLongTextAfterUnidentifiedChar() {\n var t;\n return this.isBeforeInputInsertText() && this.previousEventWasUnidentifiedKeydown() && (null === (t = this.event.data) || void 0 === t ? void 0 : t.length) > 50;\n }\n }, {\n key: \"isBeforeInputInsertText\",\n value: function isBeforeInputInsertText() {\n return \"beforeinput\" === this.event.type && \"insertText\" === this.event.inputType;\n }\n }, {\n key: \"previousEventWasUnidentifiedKeydown\",\n value: function previousEventWasUnidentifiedKeydown() {\n var t, e;\n return \"keydown\" === (null === (t = this.previousEvent) || void 0 === t ? void 0 : t.type) && \"Unidentified\" === (null === (e = this.previousEvent) || void 0 === e ? void 0 : e.key);\n }\n }]);\n\n return ir;\n}();\n\nvar nr = function nr(t, e) {\n return or(t) === or(e);\n},\n rr = new RegExp(\"(\".concat(\"\", \"|\").concat(d, \"|\").concat(g, \"|\\\\s)+\"), \"g\"),\n or = function or(t) {\n return t.replace(rr, \" \").trim();\n};\n\nvar sr = /*#__PURE__*/function (_q18) {\n _inherits(sr, _q18);\n\n var _super36 = _createSuper(sr);\n\n function sr(t) {\n var _this59;\n\n _classCallCheck(this, sr);\n\n _this59 = _super36.apply(this, arguments), _this59.element = t, _this59.mutationObserver = new Qn(_this59.element), _this59.mutationObserver.delegate = _assertThisInitialized(_this59), _this59.flakyKeyboardDetector = new ir(_this59.element);\n\n for (var _t50 in _this59.constructor.events) {\n b(_t50, {\n onElement: _this59.element,\n withCallback: _this59.handlerFor(_t50)\n });\n }\n\n return _this59;\n }\n\n _createClass(sr, [{\n key: \"elementDidMutate\",\n value: function elementDidMutate(t) {}\n }, {\n key: \"editorWillSyncDocumentView\",\n value: function editorWillSyncDocumentView() {\n return this.mutationObserver.stop();\n }\n }, {\n key: \"editorDidSyncDocumentView\",\n value: function editorDidSyncDocumentView() {\n return this.mutationObserver.start();\n }\n }, {\n key: \"requestRender\",\n value: function requestRender() {\n var t, e;\n return null === (t = this.delegate) || void 0 === t || null === (e = t.inputControllerDidRequestRender) || void 0 === e ? void 0 : e.call(t);\n }\n }, {\n key: \"requestReparse\",\n value: function requestReparse() {\n var t, e;\n return null === (t = this.delegate) || void 0 === t || null === (e = t.inputControllerDidRequestReparse) || void 0 === e || e.call(t), this.requestRender();\n }\n }, {\n key: \"attachFiles\",\n value: function attachFiles(t) {\n var _this60 = this;\n\n var e = Array.from(t).map(function (t) {\n return new er(t);\n });\n return Promise.all(e).then(function (t) {\n _this60.handleInput(function () {\n var e, i;\n return null === (e = this.delegate) || void 0 === e || e.inputControllerWillAttachFiles(), null === (i = this.responder) || void 0 === i || i.insertFiles(t), this.requestRender();\n });\n });\n }\n }, {\n key: \"handlerFor\",\n value: function handlerFor(t) {\n var _this61 = this;\n\n return function (e) {\n e.defaultPrevented || _this61.handleInput(function () {\n if (!x(_this61.element)) {\n if (_this61.flakyKeyboardDetector.shouldIgnore(e)) return;\n _this61.eventName = t, _this61.constructor.events[t].call(_this61, e);\n }\n });\n };\n }\n }, {\n key: \"handleInput\",\n value: function handleInput(t) {\n try {\n var e;\n null === (e = this.delegate) || void 0 === e || e.inputControllerWillHandleInput(), t.call(this);\n } finally {\n var i;\n null === (i = this.delegate) || void 0 === i || i.inputControllerDidHandleInput();\n }\n }\n }, {\n key: \"createLinkHTML\",\n value: function createLinkHTML(t, e) {\n var i = document.createElement(\"a\");\n return i.href = t, i.textContent = e || t, i.outerHTML;\n }\n }]);\n\n return sr;\n}(q);\n\nvar ar;\nwi(sr, \"events\", {});\nvar lr = z.browser,\n cr = z.keyNames;\nvar ur = 0;\n\nvar hr = /*#__PURE__*/function (_sr) {\n _inherits(hr, _sr);\n\n var _super37 = _createSuper(hr);\n\n function hr() {\n var _this62;\n\n _classCallCheck(this, hr);\n\n _this62 = _super37.apply(this, arguments), _this62.resetInputSummary();\n return _this62;\n }\n\n _createClass(hr, [{\n key: \"setInputSummary\",\n value: function setInputSummary() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n this.inputSummary.eventName = this.eventName;\n\n for (var _e48 in t) {\n var _i43 = t[_e48];\n this.inputSummary[_e48] = _i43;\n }\n\n return this.inputSummary;\n }\n }, {\n key: \"resetInputSummary\",\n value: function resetInputSummary() {\n this.inputSummary = {};\n }\n }, {\n key: \"reset\",\n value: function reset() {\n return this.resetInputSummary(), Ft.reset();\n }\n }, {\n key: \"elementDidMutate\",\n value: function elementDidMutate(t) {\n var e, i;\n return this.isComposing() ? null === (e = this.delegate) || void 0 === e || null === (i = e.inputControllerDidAllowUnhandledInput) || void 0 === i ? void 0 : i.call(e) : this.handleInput(function () {\n return this.mutationIsSignificant(t) && (this.mutationIsExpected(t) ? this.requestRender() : this.requestReparse()), this.reset();\n });\n }\n }, {\n key: \"mutationIsExpected\",\n value: function mutationIsExpected(t) {\n var e = t.textAdded,\n i = t.textDeleted;\n if (this.inputSummary.preferDocument) return !0;\n var n = null != e ? e === this.inputSummary.textAdded : !this.inputSummary.textAdded,\n r = null != i ? this.inputSummary.didDelete : !this.inputSummary.didDelete,\n o = [\"\\n\", \" \\n\"].includes(e) && !n,\n s = \"\\n\" === i && !r;\n\n if (o && !s || s && !o) {\n var _t51 = this.getSelectedRange();\n\n if (_t51) {\n var a;\n\n var _i44 = o ? e.replace(/\\n$/, \"\").length || -1 : (null == e ? void 0 : e.length) || 1;\n\n if (null !== (a = this.responder) && void 0 !== a && a.positionIsBlockBreak(_t51[1] + _i44)) return !0;\n }\n }\n\n return n && r;\n }\n }, {\n key: \"mutationIsSignificant\",\n value: function mutationIsSignificant(t) {\n var e;\n var i = Object.keys(t).length > 0,\n n = \"\" === (null === (e = this.compositionInput) || void 0 === e ? void 0 : e.getEndData());\n return i || !n;\n }\n }, {\n key: \"getCompositionInput\",\n value: function getCompositionInput() {\n if (this.isComposing()) return this.compositionInput;\n this.compositionInput = new fr(this);\n }\n }, {\n key: \"isComposing\",\n value: function isComposing() {\n return this.compositionInput && !this.compositionInput.isEnded();\n }\n }, {\n key: \"deleteInDirection\",\n value: function deleteInDirection(t, e) {\n var i;\n return !1 !== (null === (i = this.responder) || void 0 === i ? void 0 : i.deleteInDirection(t)) ? this.setInputSummary({\n didDelete: !0\n }) : e ? (e.preventDefault(), this.requestRender()) : void 0;\n }\n }, {\n key: \"serializeSelectionToDataTransfer\",\n value: function serializeSelectionToDataTransfer(t) {\n var e;\n if (!function (t) {\n if (null == t || !t.setData) return !1;\n\n for (var _e49 in Ct) {\n var _i45 = Ct[_e49];\n\n try {\n if (t.setData(_e49, _i45), !t.getData(_e49) === _i45) return !1;\n } catch (t) {\n return !1;\n }\n }\n\n return !0;\n }(t)) return;\n var i = null === (e = this.responder) || void 0 === e ? void 0 : e.getSelectedDocument().toSerializableDocument();\n return t.setData(\"application/x-trix-document\", JSON.stringify(i)), t.setData(\"text/html\", Ci.render(i).innerHTML), t.setData(\"text/plain\", i.toString().replace(/\\n$/, \"\")), !0;\n }\n }, {\n key: \"canAcceptDataTransfer\",\n value: function canAcceptDataTransfer(t) {\n var e = {};\n return Array.from((null == t ? void 0 : t.types) || []).forEach(function (t) {\n e[t] = !0;\n }), e.Files || e[\"application/x-trix-document\"] || e[\"text/html\"] || e[\"text/plain\"];\n }\n }, {\n key: \"getPastedHTMLUsingHiddenElement\",\n value: function getPastedHTMLUsingHiddenElement(t) {\n var _this63 = this;\n\n var e = this.getSelectedRange(),\n i = {\n position: \"absolute\",\n left: \"\".concat(window.pageXOffset, \"px\"),\n top: \"\".concat(window.pageYOffset, \"px\"),\n opacity: 0\n },\n n = T({\n style: i,\n tagName: \"div\",\n editable: !0\n });\n return document.body.appendChild(n), n.focus(), requestAnimationFrame(function () {\n var i = n.innerHTML;\n return S(n), _this63.setSelectedRange(e), t(i);\n });\n }\n }]);\n\n return hr;\n}(sr);\n\nwi(hr, \"events\", {\n keydown: function keydown(t) {\n this.isComposing() || this.resetInputSummary(), this.inputSummary.didInput = !0;\n var e = cr[t.keyCode];\n\n if (e) {\n var i;\n var _n29 = this.keys;\n [\"ctrl\", \"alt\", \"shift\", \"meta\"].forEach(function (e) {\n var i;\n t[\"\".concat(e, \"Key\")] && (\"ctrl\" === e && (e = \"control\"), _n29 = null === (i = _n29) || void 0 === i ? void 0 : i[e]);\n }), null != (null === (i = _n29) || void 0 === i ? void 0 : i[e]) && (this.setInputSummary({\n keyName: e\n }), Ft.reset(), _n29[e].call(this, t));\n }\n\n if (St(t)) {\n var _e50 = String.fromCharCode(t.keyCode).toLowerCase();\n\n if (_e50) {\n var n;\n\n var _i46 = [\"alt\", \"shift\"].map(function (e) {\n if (t[\"\".concat(e, \"Key\")]) return e;\n }).filter(function (t) {\n return t;\n });\n\n _i46.push(_e50), null !== (n = this.delegate) && void 0 !== n && n.inputControllerDidReceiveKeyboardCommand(_i46) && t.preventDefault();\n }\n }\n },\n keypress: function keypress(t) {\n if (null != this.inputSummary.eventName) return;\n if (t.metaKey) return;\n if (t.ctrlKey && !t.altKey) return;\n var e = mr(t);\n var i, n;\n return e ? (null === (i = this.delegate) || void 0 === i || i.inputControllerWillPerformTyping(), null === (n = this.responder) || void 0 === n || n.insertString(e), this.setInputSummary({\n textAdded: e,\n didDelete: this.selectionIsExpanded()\n })) : void 0;\n },\n textInput: function textInput(t) {\n var e = t.data,\n i = this.inputSummary.textAdded;\n\n if (i && i !== e && i.toUpperCase() === e) {\n var n;\n\n var _t52 = this.getSelectedRange();\n\n return this.setSelectedRange([_t52[0], _t52[1] + i.length]), null === (n = this.responder) || void 0 === n || n.insertString(e), this.setInputSummary({\n textAdded: e\n }), this.setSelectedRange(_t52);\n }\n },\n dragenter: function dragenter(t) {\n t.preventDefault();\n },\n dragstart: function dragstart(t) {\n var e, i;\n return this.serializeSelectionToDataTransfer(t.dataTransfer), this.draggedRange = this.getSelectedRange(), null === (e = this.delegate) || void 0 === e || null === (i = e.inputControllerDidStartDrag) || void 0 === i ? void 0 : i.call(e);\n },\n dragover: function dragover(t) {\n if (this.draggedRange || this.canAcceptDataTransfer(t.dataTransfer)) {\n t.preventDefault();\n var _n30 = {\n x: t.clientX,\n y: t.clientY\n };\n var e, i;\n if (!Tt(_n30, this.draggingPoint)) return this.draggingPoint = _n30, null === (e = this.delegate) || void 0 === e || null === (i = e.inputControllerDidReceiveDragOverPoint) || void 0 === i ? void 0 : i.call(e, this.draggingPoint);\n }\n },\n dragend: function dragend(t) {\n var e, i;\n null === (e = this.delegate) || void 0 === e || null === (i = e.inputControllerDidCancelDrag) || void 0 === i || i.call(e), this.draggedRange = null, this.draggingPoint = null;\n },\n drop: function drop(t) {\n var e, i;\n t.preventDefault();\n var n = null === (e = t.dataTransfer) || void 0 === e ? void 0 : e.files,\n r = t.dataTransfer.getData(\"application/x-trix-document\"),\n o = {\n x: t.clientX,\n y: t.clientY\n };\n if (null === (i = this.responder) || void 0 === i || i.setLocationRangeFromPointRange(o), null != n && n.length) this.attachFiles(n);else if (this.draggedRange) {\n var s, a;\n null === (s = this.delegate) || void 0 === s || s.inputControllerWillMoveText(), null === (a = this.responder) || void 0 === a || a.moveTextFromRange(this.draggedRange), this.draggedRange = null, this.requestRender();\n } else if (r) {\n var l;\n\n var _t53 = on.fromJSONString(r);\n\n null === (l = this.responder) || void 0 === l || l.insertDocument(_t53), this.requestRender();\n }\n this.draggedRange = null, this.draggingPoint = null;\n },\n cut: function cut(t) {\n var e, i;\n if (null !== (e = this.responder) && void 0 !== e && e.selectionIsExpanded() && (this.serializeSelectionToDataTransfer(t.clipboardData) && t.preventDefault(), null === (i = this.delegate) || void 0 === i || i.inputControllerWillCutText(), this.deleteInDirection(\"backward\"), t.defaultPrevented)) return this.requestRender();\n },\n copy: function copy(t) {\n var e;\n null !== (e = this.responder) && void 0 !== e && e.selectionIsExpanded() && this.serializeSelectionToDataTransfer(t.clipboardData) && t.preventDefault();\n },\n paste: function paste(t) {\n var _this64 = this;\n\n var e = t.clipboardData || t.testClipboardData,\n i = {\n clipboard: e\n };\n if (!e || pr(t)) return void this.getPastedHTMLUsingHiddenElement(function (t) {\n var e, n, r;\n return i.type = \"text/html\", i.html = t, null === (e = _this64.delegate) || void 0 === e || e.inputControllerWillPaste(i), null === (n = _this64.responder) || void 0 === n || n.insertHTML(i.html), _this64.requestRender(), null === (r = _this64.delegate) || void 0 === r ? void 0 : r.inputControllerDidPaste(i);\n });\n var n = e.getData(\"URL\"),\n r = e.getData(\"text/html\"),\n o = e.getData(\"public.url-name\");\n\n if (n) {\n var s, a, l;\n\n var _t54;\n\n i.type = \"text/html\", _t54 = o ? Vt(o).trim() : n, i.html = this.createLinkHTML(n, _t54), null === (s = this.delegate) || void 0 === s || s.inputControllerWillPaste(i), this.setInputSummary({\n textAdded: _t54,\n didDelete: this.selectionIsExpanded()\n }), null === (a = this.responder) || void 0 === a || a.insertHTML(i.html), this.requestRender(), null === (l = this.delegate) || void 0 === l || l.inputControllerDidPaste(i);\n } else if (Et(e)) {\n var c, u, h;\n i.type = \"text/plain\", i.string = e.getData(\"text/plain\"), null === (c = this.delegate) || void 0 === c || c.inputControllerWillPaste(i), this.setInputSummary({\n textAdded: i.string,\n didDelete: this.selectionIsExpanded()\n }), null === (u = this.responder) || void 0 === u || u.insertString(i.string), this.requestRender(), null === (h = this.delegate) || void 0 === h || h.inputControllerDidPaste(i);\n } else if (r) {\n var d, g, m;\n i.type = \"text/html\", i.html = r, null === (d = this.delegate) || void 0 === d || d.inputControllerWillPaste(i), null === (g = this.responder) || void 0 === g || g.insertHTML(i.html), this.requestRender(), null === (m = this.delegate) || void 0 === m || m.inputControllerDidPaste(i);\n } else if (Array.from(e.types).includes(\"Files\")) {\n var p, f;\n\n var _t55 = null === (p = e.items) || void 0 === p || null === (p = p[0]) || void 0 === p || null === (f = p.getAsFile) || void 0 === f ? void 0 : f.call(p);\n\n if (_t55) {\n var b, v, A;\n\n var _e51 = dr(_t55);\n\n !_t55.name && _e51 && (_t55.name = \"pasted-file-\".concat(++ur, \".\").concat(_e51)), i.type = \"File\", i.file = _t55, null === (b = this.delegate) || void 0 === b || b.inputControllerWillAttachFiles(), null === (v = this.responder) || void 0 === v || v.insertFile(i.file), this.requestRender(), null === (A = this.delegate) || void 0 === A || A.inputControllerDidPaste(i);\n }\n }\n\n 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(t) {\n this.inputSummary.didInput = !0;\n },\n input: function input(t) {\n return this.inputSummary.didInput = !0, t.stopPropagation();\n }\n}), wi(hr, \"keys\", {\n backspace: function backspace(t) {\n var e;\n return null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), this.deleteInDirection(\"backward\", t);\n },\n delete: function _delete(t) {\n var e;\n return null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), this.deleteInDirection(\"forward\", t);\n },\n return: function _return(t) {\n var e, i;\n return this.setInputSummary({\n preferDocument: !0\n }), null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), null === (i = this.responder) || void 0 === i ? void 0 : i.insertLineBreak();\n },\n tab: function tab(t) {\n var e, i;\n null !== (e = this.responder) && void 0 !== e && e.canIncreaseNestingLevel() && (null === (i = this.responder) || void 0 === i || i.increaseNestingLevel(), this.requestRender(), t.preventDefault());\n },\n left: function left(t) {\n var e;\n if (this.selectionIsInCursorTarget()) return t.preventDefault(), null === (e = this.responder) || void 0 === e ? void 0 : e.moveCursorInDirection(\"backward\");\n },\n right: function right(t) {\n var e;\n if (this.selectionIsInCursorTarget()) return t.preventDefault(), null === (e = this.responder) || void 0 === e ? void 0 : e.moveCursorInDirection(\"forward\");\n },\n control: {\n d: function d(t) {\n var e;\n return null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), this.deleteInDirection(\"forward\", t);\n },\n h: function h(t) {\n var e;\n return null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), this.deleteInDirection(\"backward\", t);\n },\n o: function o(t) {\n var e, i;\n return t.preventDefault(), null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), null === (i = this.responder) || void 0 === i || i.insertString(\"\\n\", {\n updatePosition: !1\n }), this.requestRender();\n }\n },\n shift: {\n return: function _return(t) {\n var e, i;\n null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), null === (i = this.responder) || void 0 === i || i.insertString(\"\\n\"), this.requestRender(), t.preventDefault();\n },\n tab: function tab(t) {\n var e, i;\n null !== (e = this.responder) && void 0 !== e && e.canDecreaseNestingLevel() && (null === (i = this.responder) || void 0 === i || i.decreaseNestingLevel(), this.requestRender(), t.preventDefault());\n },\n left: function left(t) {\n if (this.selectionIsInCursorTarget()) return t.preventDefault(), this.expandSelectionInDirection(\"backward\");\n },\n right: function right(t) {\n if (this.selectionIsInCursorTarget()) return t.preventDefault(), this.expandSelectionInDirection(\"forward\");\n }\n },\n alt: {\n backspace: function backspace(t) {\n var e;\n return this.setInputSummary({\n preferDocument: !1\n }), null === (e = this.delegate) || void 0 === e ? void 0 : e.inputControllerWillPerformTyping();\n }\n },\n meta: {\n backspace: function backspace(t) {\n var e;\n return this.setInputSummary({\n preferDocument: !1\n }), null === (e = this.delegate) || void 0 === e ? void 0 : e.inputControllerWillPerformTyping();\n }\n }\n}), hr.proxyMethod(\"responder?.getSelectedRange\"), hr.proxyMethod(\"responder?.setSelectedRange\"), hr.proxyMethod(\"responder?.expandSelectionInDirection\"), hr.proxyMethod(\"responder?.selectionIsInCursorTarget\"), hr.proxyMethod(\"responder?.selectionIsExpanded\");\n\nvar dr = function dr(t) {\n var e;\n return null === (e = t.type) || void 0 === e || null === (e = e.match(/\\/(\\w+)$/)) || void 0 === e ? void 0 : e[1];\n},\n gr = !(null === (ar = \" \".codePointAt) || void 0 === ar || !ar.call(\" \", 0)),\n mr = function mr(t) {\n if (t.key && gr && t.key.codePointAt(0) === t.keyCode) return t.key;\n {\n var _e52;\n\n if (null === t.which ? _e52 = t.keyCode : 0 !== t.which && 0 !== t.charCode && (_e52 = t.charCode), null != _e52 && \"escape\" !== cr[_e52]) return X.fromCodepoints([_e52]).toString();\n }\n},\n pr = function pr(t) {\n var e = t.clipboardData;\n\n if (e) {\n if (e.types.includes(\"text/html\")) {\n var _iterator8 = _createForOfIteratorHelper(e.types),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var _t56 = _step8.value;\n\n var _i47 = /^CorePasteboardFlavorType/.test(_t56),\n _n31 = /^dyn\\./.test(_t56) && e.getData(_t56);\n\n if (_i47 || _n31) return !0;\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n\n return !1;\n }\n\n {\n var _t57 = e.types.includes(\"com.apple.webarchive\"),\n _i48 = e.types.includes(\"com.apple.flat-rtfd\");\n\n return _t57 || _i48;\n }\n }\n};\n\nvar fr = /*#__PURE__*/function (_q19) {\n _inherits(fr, _q19);\n\n var _super38 = _createSuper(fr);\n\n function fr(t) {\n var _this65;\n\n _classCallCheck(this, fr);\n\n _this65 = _super38.apply(this, arguments), _this65.inputController = t, _this65.responder = _this65.inputController.responder, _this65.delegate = _this65.inputController.delegate, _this65.inputSummary = _this65.inputController.inputSummary, _this65.data = {};\n return _this65;\n }\n\n _createClass(fr, [{\n key: \"start\",\n value: function start(t) {\n if (this.data.start = t, this.isSignificant()) {\n var e, i;\n if (\"keypress\" === this.inputSummary.eventName && this.inputSummary.textAdded) null === (i = this.responder) || void 0 === i || i.deleteInDirection(\"left\");\n this.selectionIsExpanded() || (this.insertPlaceholder(), this.requestRender()), this.range = null === (e = this.responder) || void 0 === e ? void 0 : e.getSelectedRange();\n }\n }\n }, {\n key: \"update\",\n value: function update(t) {\n if (this.data.update = t, this.isSignificant()) {\n var _t58 = this.selectPlaceholder();\n\n _t58 && (this.forgetPlaceholder(), this.range = _t58);\n }\n }\n }, {\n key: \"end\",\n value: function end(t) {\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) || void 0 === e || e.inputControllerWillPerformTyping(), null === (i = this.responder) || void 0 === i || i.setSelectedRange(this.range), null === (n = this.responder) || void 0 === n || n.insertString(this.data.end), null === (r = this.responder) || void 0 === r ? void 0 : r.setSelectedRange(this.range[0] + this.data.end.length)) : null != this.data.start || null != this.data.update ? (this.requestReparse(), this.inputController.reset()) : void 0) : this.inputController.reset();\n var e, i, n, r;\n }\n }, {\n key: \"getEndData\",\n value: function getEndData() {\n return this.data.end;\n }\n }, {\n key: \"isEnded\",\n value: function isEnded() {\n return null != this.getEndData();\n }\n }, {\n key: \"isSignificant\",\n value: function isSignificant() {\n return !lr.composesExistingText || this.inputSummary.didInput;\n }\n }, {\n key: \"canApplyToDocument\",\n value: function canApplyToDocument() {\n var t, e;\n return 0 === (null === (t = this.data.start) || void 0 === t ? void 0 : t.length) && (null === (e = this.data.end) || void 0 === e ? void 0 : e.length) > 0 && this.range;\n }\n }]);\n\n return fr;\n}(q);\n\nfr.proxyMethod(\"inputController.setInputSummary\"), fr.proxyMethod(\"inputController.requestRender\"), fr.proxyMethod(\"inputController.requestReparse\"), fr.proxyMethod(\"responder?.selectionIsExpanded\"), fr.proxyMethod(\"responder?.insertPlaceholder\"), fr.proxyMethod(\"responder?.selectPlaceholder\"), fr.proxyMethod(\"responder?.forgetPlaceholder\");\n\nvar br = /*#__PURE__*/function (_sr2) {\n _inherits(br, _sr2);\n\n var _super39 = _createSuper(br);\n\n function br() {\n var _this66;\n\n _classCallCheck(this, br);\n\n _this66 = _super39.apply(this, arguments), _this66.render = _this66.render.bind(_assertThisInitialized(_this66));\n return _this66;\n }\n\n _createClass(br, [{\n key: \"elementDidMutate\",\n value: function elementDidMutate() {\n return this.scheduledRender ? this.composing ? null === (t = this.delegate) || void 0 === t || null === (e = t.inputControllerDidAllowUnhandledInput) || void 0 === e ? void 0 : e.call(t) : void 0 : this.reparse();\n var t, e;\n }\n }, {\n key: \"scheduleRender\",\n value: function scheduleRender() {\n return this.scheduledRender ? this.scheduledRender : this.scheduledRender = requestAnimationFrame(this.render);\n }\n }, {\n key: \"render\",\n value: function render() {\n var t, e;\n (cancelAnimationFrame(this.scheduledRender), this.scheduledRender = null, this.composing) || null === (e = this.delegate) || void 0 === e || e.render();\n null === (t = this.afterRender) || void 0 === t || t.call(this), this.afterRender = null;\n }\n }, {\n key: \"reparse\",\n value: function reparse() {\n var t;\n return null === (t = this.delegate) || void 0 === t ? void 0 : t.reparse();\n }\n }, {\n key: \"insertString\",\n value: function insertString() {\n var t;\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\",\n i = arguments.length > 1 ? arguments[1] : void 0;\n return null === (t = this.delegate) || void 0 === t || t.inputControllerWillPerformTyping(), this.withTargetDOMRange(function () {\n var t;\n return null === (t = this.responder) || void 0 === t ? void 0 : t.insertString(e, i);\n });\n }\n }, {\n key: \"toggleAttributeIfSupported\",\n value: function toggleAttributeIfSupported(t) {\n var e;\n if (gt().includes(t)) return null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformFormatting(t), this.withTargetDOMRange(function () {\n var e;\n return null === (e = this.responder) || void 0 === e ? void 0 : e.toggleCurrentAttribute(t);\n });\n }\n }, {\n key: \"activateAttributeIfSupported\",\n value: function activateAttributeIfSupported(t, e) {\n var i;\n if (gt().includes(t)) return null === (i = this.delegate) || void 0 === i || i.inputControllerWillPerformFormatting(t), this.withTargetDOMRange(function () {\n var i;\n return null === (i = this.responder) || void 0 === i ? void 0 : i.setCurrentAttribute(t, e);\n });\n }\n }, {\n key: \"deleteInDirection\",\n value: function deleteInDirection(t) {\n var _this67 = this;\n\n var _ref25 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n recordUndoEntry: !0\n },\n e = _ref25.recordUndoEntry;\n\n var i;\n e && (null === (i = this.delegate) || void 0 === i || i.inputControllerWillPerformTyping());\n\n var n = function n() {\n var e;\n return null === (e = _this67.responder) || void 0 === e ? void 0 : e.deleteInDirection(t);\n },\n r = this.getTargetDOMRange({\n minLength: this.composing ? 1 : 2\n });\n\n return r ? this.withTargetDOMRange(r, n) : n();\n }\n }, {\n key: \"withTargetDOMRange\",\n value: function withTargetDOMRange(t, e) {\n var i;\n return \"function\" == typeof t && (e = t, t = this.getTargetDOMRange()), t ? null === (i = this.responder) || void 0 === i ? void 0 : i.withTargetDOMRange(t, e.bind(this)) : (Ft.reset(), e.call(this));\n }\n }, {\n key: \"getTargetDOMRange\",\n value: function getTargetDOMRange() {\n var t, e;\n\n var _ref26 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {\n minLength: 0\n },\n i = _ref26.minLength;\n\n var n = null === (t = (e = this.event).getTargetRanges) || void 0 === t ? void 0 : t.call(e);\n\n if (n && n.length) {\n var _t59 = vr(n[0]);\n\n if (0 === i || _t59.toString().length >= i) return _t59;\n }\n }\n }, {\n key: \"withEvent\",\n value: function withEvent(t, e) {\n var i;\n this.event = t;\n\n try {\n i = e.call(this);\n } finally {\n this.event = null;\n }\n\n return i;\n }\n }]);\n\n return br;\n}(sr);\n\nwi(br, \"events\", {\n keydown: function keydown(t) {\n if (St(t)) {\n var e;\n\n var _i49 = Er(t);\n\n null !== (e = this.delegate) && void 0 !== e && e.inputControllerDidReceiveKeyboardCommand(_i49) && t.preventDefault();\n } else {\n var _e53 = t.key;\n t.altKey && (_e53 += \"+Alt\"), t.shiftKey && (_e53 += \"+Shift\");\n var _i50 = this.constructor.keys[_e53];\n if (_i50) return this.withEvent(t, _i50);\n }\n },\n paste: function paste(t) {\n var e;\n var i;\n var n = null === (e = t.clipboardData) || void 0 === e ? void 0 : e.getData(\"URL\");\n return xr(t) ? (t.preventDefault(), this.attachFiles(t.clipboardData.files)) : Cr(t) ? (t.preventDefault(), i = {\n type: \"text/plain\",\n string: t.clipboardData.getData(\"text/plain\")\n }, null === (r = this.delegate) || void 0 === r || r.inputControllerWillPaste(i), null === (o = this.responder) || void 0 === o || o.insertString(i.string), this.render(), null === (s = this.delegate) || void 0 === s ? void 0 : s.inputControllerDidPaste(i)) : n ? (t.preventDefault(), i = {\n type: \"text/html\",\n html: this.createLinkHTML(n)\n }, null === (a = this.delegate) || void 0 === a || a.inputControllerWillPaste(i), null === (l = this.responder) || void 0 === l || l.insertHTML(i.html), this.render(), null === (c = this.delegate) || void 0 === c ? void 0 : c.inputControllerDidPaste(i)) : void 0;\n var r, o, s, a, l, c;\n },\n beforeinput: function beforeinput(t) {\n var e = this.constructor.inputTypes[t.inputType],\n i = (n = t, !(!/iPhone|iPad/.test(navigator.userAgent) || n.inputType && \"insertParagraph\" !== n.inputType));\n var n;\n e && (this.withEvent(t, e), i || this.scheduleRender()), i && this.render();\n },\n input: function input(t) {\n Ft.reset();\n },\n dragstart: function dragstart(t) {\n var e, i;\n null !== (e = this.responder) && void 0 !== e && e.selectionContainsAttachments() && (t.dataTransfer.setData(\"application/x-trix-dragging\", !0), this.dragging = {\n range: null === (i = this.responder) || void 0 === i ? void 0 : i.getSelectedRange(),\n point: Sr(t)\n });\n },\n dragenter: function dragenter(t) {\n Ar(t) && t.preventDefault();\n },\n dragover: function dragover(t) {\n if (this.dragging) {\n t.preventDefault();\n\n var _i51 = Sr(t);\n\n var e;\n if (!Tt(_i51, this.dragging.point)) return this.dragging.point = _i51, null === (e = this.responder) || void 0 === e ? void 0 : e.setLocationRangeFromPointRange(_i51);\n } else Ar(t) && t.preventDefault();\n },\n drop: function drop(t) {\n var e, i;\n if (this.dragging) return t.preventDefault(), null === (e = this.delegate) || void 0 === e || e.inputControllerWillMoveText(), null === (i = this.responder) || void 0 === i || i.moveTextFromRange(this.dragging.range), this.dragging = null, this.scheduleRender();\n\n if (Ar(t)) {\n var n;\n t.preventDefault();\n\n var _e54 = Sr(t);\n\n return null === (n = this.responder) || void 0 === n || n.setLocationRangeFromPointRange(_e54), this.attachFiles(t.dataTransfer.files);\n }\n },\n dragend: function dragend() {\n var t;\n this.dragging && (null === (t = this.responder) || void 0 === t || t.setSelectedRange(this.dragging.range), this.dragging = null);\n },\n compositionend: function compositionend(t) {\n this.composing && (this.composing = !1, a.recentAndroid || this.scheduleRender());\n }\n}), wi(br, \"keys\", {\n ArrowLeft: function ArrowLeft() {\n var t, e;\n if (null !== (t = this.responder) && void 0 !== t && t.shouldManageMovingCursorInDirection(\"backward\")) return this.event.preventDefault(), null === (e = this.responder) || void 0 === e ? void 0 : e.moveCursorInDirection(\"backward\");\n },\n ArrowRight: function ArrowRight() {\n var t, e;\n if (null !== (t = this.responder) && void 0 !== t && t.shouldManageMovingCursorInDirection(\"forward\")) return this.event.preventDefault(), null === (e = this.responder) || void 0 === e ? void 0 : e.moveCursorInDirection(\"forward\");\n },\n Backspace: function Backspace() {\n var t, e, i;\n if (null !== (t = this.responder) && void 0 !== t && t.shouldManageDeletingInDirection(\"backward\")) return this.event.preventDefault(), null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), null === (i = this.responder) || void 0 === i || i.deleteInDirection(\"backward\"), this.render();\n },\n Tab: function Tab() {\n var t, e;\n if (null !== (t = this.responder) && void 0 !== t && t.canIncreaseNestingLevel()) return this.event.preventDefault(), null === (e = this.responder) || void 0 === e || e.increaseNestingLevel(), this.render();\n },\n \"Tab+Shift\": function TabShift() {\n var t, e;\n if (null !== (t = this.responder) && void 0 !== t && t.canDecreaseNestingLevel()) return this.event.preventDefault(), null === (e = this.responder) || void 0 === e || e.decreaseNestingLevel(), this.render();\n }\n}), wi(br, \"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 this.deleteByDragRange = null === (t = this.responder) || void 0 === t ? void 0 : t.getSelectedRange();\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 if (null !== (t = this.responder) && void 0 !== t && t.canIncreaseNestingLevel()) return this.withTargetDOMRange(function () {\n var t;\n return null === (t = this.responder) || void 0 === t ? void 0 : t.increaseNestingLevel();\n });\n },\n formatItalic: function formatItalic() {\n return this.toggleAttributeIfSupported(\"italic\");\n },\n formatJustifyCenter: function formatJustifyCenter() {\n return this.toggleAttributeIfSupported(\"justifyCenter\");\n },\n formatJustifyFull: function formatJustifyFull() {\n return this.toggleAttributeIfSupported(\"justifyFull\");\n },\n formatJustifyLeft: function formatJustifyLeft() {\n return this.toggleAttributeIfSupported(\"justifyLeft\");\n },\n formatJustifyRight: function formatJustifyRight() {\n return this.toggleAttributeIfSupported(\"justifyRight\");\n },\n formatOutdent: function formatOutdent() {\n var t;\n if (null !== (t = this.responder) && void 0 !== t && t.canDecreaseNestingLevel()) return this.withTargetDOMRange(function () {\n var t;\n return null === (t = this.responder) || void 0 === t ? void 0 : t.decreaseNestingLevel();\n });\n },\n formatRemove: function formatRemove() {\n this.withTargetDOMRange(function () {\n for (var _i52 in null === (t = this.responder) || void 0 === t ? void 0 : t.getCurrentAttributes()) {\n var t, e;\n null === (e = this.responder) || void 0 === e || e.removeCurrentAttribute(_i52);\n }\n });\n },\n formatSetBlockTextDirection: function formatSetBlockTextDirection() {\n return this.activateAttributeIfSupported(\"blockDir\", this.event.data);\n },\n formatSetInlineTextDirection: function formatSetInlineTextDirection() {\n return this.activateAttributeIfSupported(\"textDir\", this.event.data);\n },\n formatStrikeThrough: function formatStrikeThrough() {\n return this.toggleAttributeIfSupported(\"strike\");\n },\n formatSubscript: function formatSubscript() {\n return this.toggleAttributeIfSupported(\"sub\");\n },\n formatSuperscript: function formatSuperscript() {\n return this.toggleAttributeIfSupported(\"sup\");\n },\n formatUnderline: function formatUnderline() {\n return this.toggleAttributeIfSupported(\"underline\");\n },\n historyRedo: function historyRedo() {\n var t;\n return null === (t = this.delegate) || void 0 === t ? void 0 : t.inputControllerWillPerformRedo();\n },\n historyUndo: function historyUndo() {\n var t;\n return null === (t = this.delegate) || void 0 === t ? void 0 : t.inputControllerWillPerformUndo();\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 = this.deleteByDragRange;\n var e;\n if (t) return this.deleteByDragRange = null, null === (e = this.delegate) || void 0 === e || e.inputControllerWillMoveText(), this.withTargetDOMRange(function () {\n var e;\n return null === (e = this.responder) || void 0 === e ? void 0 : e.moveTextFromRange(t);\n });\n },\n insertFromPaste: function insertFromPaste() {\n var _this68 = this;\n\n var t = this.event.dataTransfer,\n e = {\n dataTransfer: t\n },\n i = t.getData(\"URL\"),\n n = t.getData(\"text/html\");\n\n if (i) {\n var r;\n\n var _n32;\n\n this.event.preventDefault(), e.type = \"text/html\";\n\n var _o11 = t.getData(\"public.url-name\");\n\n _n32 = _o11 ? Vt(_o11).trim() : i, e.html = this.createLinkHTML(i, _n32), null === (r = this.delegate) || void 0 === r || r.inputControllerWillPaste(e), this.withTargetDOMRange(function () {\n var t;\n return null === (t = this.responder) || void 0 === t ? void 0 : t.insertHTML(e.html);\n }), this.afterRender = function () {\n var t;\n return null === (t = _this68.delegate) || void 0 === t ? void 0 : t.inputControllerDidPaste(e);\n };\n } else if (Et(t)) {\n var o;\n e.type = \"text/plain\", e.string = t.getData(\"text/plain\"), null === (o = this.delegate) || void 0 === o || o.inputControllerWillPaste(e), this.withTargetDOMRange(function () {\n var t;\n return null === (t = this.responder) || void 0 === t ? void 0 : t.insertString(e.string);\n }), this.afterRender = function () {\n var t;\n return null === (t = _this68.delegate) || void 0 === t ? void 0 : t.inputControllerDidPaste(e);\n };\n } else if (yr(this.event)) {\n var s;\n e.type = \"File\", e.file = t.files[0], null === (s = this.delegate) || void 0 === s || s.inputControllerWillPaste(e), this.withTargetDOMRange(function () {\n var t;\n return null === (t = this.responder) || void 0 === t ? void 0 : t.insertFile(e.file);\n }), this.afterRender = function () {\n var t;\n return null === (t = _this68.delegate) || void 0 === t ? void 0 : t.inputControllerDidPaste(e);\n };\n } else if (n) {\n var a;\n this.event.preventDefault(), e.type = \"text/html\", e.html = n, null === (a = this.delegate) || void 0 === a || a.inputControllerWillPaste(e), this.withTargetDOMRange(function () {\n var t;\n return null === (t = this.responder) || void 0 === t ? void 0 : t.insertHTML(e.html);\n }), this.afterRender = function () {\n var t;\n return null === (t = _this68.delegate) || void 0 === t ? void 0 : t.inputControllerDidPaste(e);\n };\n }\n },\n insertFromYank: function insertFromYank() {\n return this.insertString(this.event.data);\n },\n insertLineBreak: function insertLineBreak() {\n return this.insertString(\"\\n\");\n },\n insertLink: function insertLink() {\n return this.activateAttributeIfSupported(\"href\", this.event.data);\n },\n insertOrderedList: function insertOrderedList() {\n return this.toggleAttributeIfSupported(\"number\");\n },\n insertParagraph: function insertParagraph() {\n var t;\n return null === (t = this.delegate) || void 0 === t || t.inputControllerWillPerformTyping(), this.withTargetDOMRange(function () {\n var t;\n return null === (t = this.responder) || void 0 === t ? void 0 : t.insertLineBreak();\n });\n },\n insertReplacementText: function insertReplacementText() {\n var _this69 = this;\n\n var t = this.event.dataTransfer.getData(\"text/plain\"),\n e = this.event.getTargetRanges()[0];\n this.withTargetDOMRange(e, function () {\n _this69.insertString(t, {\n updatePosition: !1\n });\n });\n },\n insertText: function insertText() {\n var t;\n return this.insertString(this.event.data || (null === (t = this.event.dataTransfer) || void 0 === t ? void 0 : t.getData(\"text/plain\")));\n },\n insertTranspose: function insertTranspose() {\n return this.insertString(this.event.data);\n },\n insertUnorderedList: function insertUnorderedList() {\n return this.toggleAttributeIfSupported(\"bullet\");\n }\n});\n\nvar vr = function vr(t) {\n var e = document.createRange();\n return e.setStart(t.startContainer, t.startOffset), e.setEnd(t.endContainer, t.endOffset), e;\n},\n Ar = function Ar(t) {\n var e;\n return Array.from((null === (e = t.dataTransfer) || void 0 === e ? void 0 : e.types) || []).includes(\"Files\");\n},\n yr = function yr(t) {\n var e;\n return (null === (e = t.dataTransfer.files) || void 0 === e ? void 0 : e[0]) && !xr(t) && !function (t) {\n var e = t.dataTransfer;\n return e.types.includes(\"Files\") && e.types.includes(\"text/html\") && e.getData(\"text/html\").includes(\"urn:schemas-microsoft-com:office:office\");\n }(t);\n},\n xr = function xr(t) {\n var e = t.clipboardData;\n\n if (e) {\n return Array.from(e.types).filter(function (t) {\n return t.match(/file/i);\n }).length === e.types.length && e.files.length >= 1;\n }\n},\n Cr = function Cr(t) {\n var e = t.clipboardData;\n if (e) return e.types.includes(\"text/plain\") && 1 === e.types.length;\n},\n Er = function Er(t) {\n var e = [];\n return t.altKey && e.push(\"alt\"), t.shiftKey && e.push(\"shift\"), e.push(t.key), e;\n},\n Sr = function Sr(t) {\n return {\n x: t.clientX,\n y: t.clientY\n };\n},\n Rr = \"[data-trix-attribute]\",\n kr = \"[data-trix-action]\",\n Tr = \"\".concat(Rr, \", \").concat(kr),\n wr = \"[data-trix-dialog]\",\n Lr = \"\".concat(wr, \"[data-trix-active]\"),\n Dr = \"\".concat(wr, \" [data-trix-method]\"),\n Nr = \"\".concat(wr, \" [data-trix-input]\"),\n Ir = function Ir(t, e) {\n return e || (e = Fr(t)), t.querySelector(\"[data-trix-input][name='\".concat(e, \"']\"));\n},\n Or = function Or(t) {\n return t.getAttribute(\"data-trix-action\");\n},\n Fr = function Fr(t) {\n return t.getAttribute(\"data-trix-attribute\") || t.getAttribute(\"data-trix-dialog-attribute\");\n};\n\nvar Pr = /*#__PURE__*/function (_q20) {\n _inherits(Pr, _q20);\n\n var _super40 = _createSuper(Pr);\n\n function Pr(t) {\n var _this70;\n\n _classCallCheck(this, Pr);\n\n _this70 = _super40.call(this, t), _this70.didClickActionButton = _this70.didClickActionButton.bind(_assertThisInitialized(_this70)), _this70.didClickAttributeButton = _this70.didClickAttributeButton.bind(_assertThisInitialized(_this70)), _this70.didClickDialogButton = _this70.didClickDialogButton.bind(_assertThisInitialized(_this70)), _this70.didKeyDownDialogInput = _this70.didKeyDownDialogInput.bind(_assertThisInitialized(_this70)), _this70.element = t, _this70.attributes = {}, _this70.actions = {}, _this70.resetDialogInputs(), b(\"mousedown\", {\n onElement: _this70.element,\n matchingSelector: kr,\n withCallback: _this70.didClickActionButton\n }), b(\"mousedown\", {\n onElement: _this70.element,\n matchingSelector: Rr,\n withCallback: _this70.didClickAttributeButton\n }), b(\"click\", {\n onElement: _this70.element,\n matchingSelector: Tr,\n preventDefault: !0\n }), b(\"click\", {\n onElement: _this70.element,\n matchingSelector: Dr,\n withCallback: _this70.didClickDialogButton\n }), b(\"keydown\", {\n onElement: _this70.element,\n matchingSelector: Nr,\n withCallback: _this70.didKeyDownDialogInput\n });\n return _this70;\n }\n\n _createClass(Pr, [{\n key: \"didClickActionButton\",\n value: function didClickActionButton(t, e) {\n var i;\n null === (i = this.delegate) || void 0 === i || i.toolbarDidClickButton(), t.preventDefault();\n var n = Or(e);\n return this.getDialog(n) ? this.toggleDialog(n) : null === (r = this.delegate) || void 0 === r ? void 0 : r.toolbarDidInvokeAction(n, e);\n var r;\n }\n }, {\n key: \"didClickAttributeButton\",\n value: function didClickAttributeButton(t, e) {\n var i;\n null === (i = this.delegate) || void 0 === i || i.toolbarDidClickButton(), t.preventDefault();\n var n = Fr(e);\n var r;\n this.getDialog(n) ? this.toggleDialog(n) : null === (r = this.delegate) || void 0 === r || r.toolbarDidToggleAttribute(n);\n return this.refreshAttributeButtons();\n }\n }, {\n key: \"didClickDialogButton\",\n value: function didClickDialogButton(t, e) {\n var i = y(e, {\n matchingSelector: wr\n });\n return this[e.getAttribute(\"data-trix-method\")].call(this, i);\n }\n }, {\n key: \"didKeyDownDialogInput\",\n value: function didKeyDownDialogInput(t, e) {\n if (13 === t.keyCode) {\n t.preventDefault();\n\n var _i53 = e.getAttribute(\"name\"),\n _n33 = this.getDialog(_i53);\n\n this.setAttribute(_n33);\n }\n\n if (27 === t.keyCode) return t.preventDefault(), this.hideDialog();\n }\n }, {\n key: \"updateActions\",\n value: function updateActions(t) {\n return this.actions = t, this.refreshActionButtons();\n }\n }, {\n key: \"refreshActionButtons\",\n value: function refreshActionButtons() {\n var _this71 = this;\n\n return this.eachActionButton(function (t, e) {\n t.disabled = !1 === _this71.actions[e];\n });\n }\n }, {\n key: \"eachActionButton\",\n value: function eachActionButton(t) {\n return Array.from(this.element.querySelectorAll(kr)).map(function (e) {\n return t(e, Or(e));\n });\n }\n }, {\n key: \"updateAttributes\",\n value: function updateAttributes(t) {\n return this.attributes = t, this.refreshAttributeButtons();\n }\n }, {\n key: \"refreshAttributeButtons\",\n value: function refreshAttributeButtons() {\n var _this72 = this;\n\n return this.eachAttributeButton(function (t, e) {\n return t.disabled = !1 === _this72.attributes[e], _this72.attributes[e] || _this72.dialogIsVisible(e) ? (t.setAttribute(\"data-trix-active\", \"\"), t.classList.add(\"trix-active\")) : (t.removeAttribute(\"data-trix-active\"), t.classList.remove(\"trix-active\"));\n });\n }\n }, {\n key: \"eachAttributeButton\",\n value: function eachAttributeButton(t) {\n return Array.from(this.element.querySelectorAll(Rr)).map(function (e) {\n return t(e, Fr(e));\n });\n }\n }, {\n key: \"applyKeyboardCommand\",\n value: function applyKeyboardCommand(t) {\n var e = JSON.stringify(t.sort());\n\n for (var _i54 = 0, _Array$from22 = Array.from(this.element.querySelectorAll(\"[data-trix-key]\")); _i54 < _Array$from22.length; _i54++) {\n var _t60 = _Array$from22[_i54];\n\n var _i55 = _t60.getAttribute(\"data-trix-key\").split(\"+\");\n\n if (JSON.stringify(_i55.sort()) === e) return v(\"mousedown\", {\n onElement: _t60\n }), !0;\n }\n\n return !1;\n }\n }, {\n key: \"dialogIsVisible\",\n value: function dialogIsVisible(t) {\n var e = this.getDialog(t);\n if (e) return e.hasAttribute(\"data-trix-active\");\n }\n }, {\n key: \"toggleDialog\",\n value: function toggleDialog(t) {\n return this.dialogIsVisible(t) ? this.hideDialog() : this.showDialog(t);\n }\n }, {\n key: \"showDialog\",\n value: function showDialog(t) {\n var e, i;\n this.hideDialog(), null === (e = this.delegate) || void 0 === e || e.toolbarWillShowDialog();\n var n = this.getDialog(t);\n n.setAttribute(\"data-trix-active\", \"\"), n.classList.add(\"trix-active\"), Array.from(n.querySelectorAll(\"input[disabled]\")).forEach(function (t) {\n t.removeAttribute(\"disabled\");\n });\n var r = Fr(n);\n\n if (r) {\n var _e55 = Ir(n, t);\n\n _e55 && (_e55.value = this.attributes[r] || \"\", _e55.select());\n }\n\n return null === (i = this.delegate) || void 0 === i ? void 0 : i.toolbarDidShowDialog(t);\n }\n }, {\n key: \"setAttribute\",\n value: function setAttribute(t) {\n var e;\n var i = Fr(t),\n n = Ir(t, i);\n return !n.willValidate || (n.setCustomValidity(\"\"), n.checkValidity() && this.isSafeAttribute(n)) ? (null === (e = this.delegate) || void 0 === e || e.toolbarDidUpdateAttribute(i, n.value), this.hideDialog()) : (n.setCustomValidity(\"Invalid value\"), n.setAttribute(\"data-trix-validate\", \"\"), n.classList.add(\"trix-validate\"), n.focus());\n }\n }, {\n key: \"isSafeAttribute\",\n value: function isSafeAttribute(t) {\n return !t.hasAttribute(\"data-trix-validate-href\") || si.isValidAttribute(\"a\", \"href\", t.value);\n }\n }, {\n key: \"removeAttribute\",\n value: function removeAttribute(t) {\n var e;\n var i = Fr(t);\n return null === (e = this.delegate) || void 0 === e || e.toolbarDidRemoveAttribute(i), this.hideDialog();\n }\n }, {\n key: \"hideDialog\",\n value: function hideDialog() {\n var t = this.element.querySelector(Lr);\n var e;\n if (t) return t.removeAttribute(\"data-trix-active\"), t.classList.remove(\"trix-active\"), this.resetDialogInputs(), null === (e = this.delegate) || void 0 === e ? void 0 : e.toolbarDidHideDialog(function (t) {\n return t.getAttribute(\"data-trix-dialog\");\n }(t));\n }\n }, {\n key: \"resetDialogInputs\",\n value: function resetDialogInputs() {\n Array.from(this.element.querySelectorAll(Nr)).forEach(function (t) {\n t.setAttribute(\"disabled\", \"disabled\"), t.removeAttribute(\"data-trix-validate\"), t.classList.remove(\"trix-validate\");\n });\n }\n }, {\n key: \"getDialog\",\n value: function getDialog(t) {\n return this.element.querySelector(\"[data-trix-dialog=\".concat(t, \"]\"));\n }\n }]);\n\n return Pr;\n}(q);\n\nvar Mr = /*#__PURE__*/function (_Yn) {\n _inherits(Mr, _Yn);\n\n var _super41 = _createSuper(Mr);\n\n function Mr(t) {\n var _this73;\n\n _classCallCheck(this, Mr);\n\n var e = t.editorElement,\n i = t.document,\n n = t.html;\n _this73 = _super41.apply(this, arguments), _this73.editorElement = e, _this73.selectionManager = new Wn(_this73.editorElement), _this73.selectionManager.delegate = _assertThisInitialized(_this73), _this73.composition = new kn(), _this73.composition.delegate = _assertThisInitialized(_this73), _this73.attachmentManager = new Sn(_this73.composition.getAttachments()), _this73.attachmentManager.delegate = _assertThisInitialized(_this73), _this73.inputController = 2 === _.getLevel() ? new br(_this73.editorElement) : new hr(_this73.editorElement), _this73.inputController.delegate = _assertThisInitialized(_this73), _this73.inputController.responder = _this73.composition, _this73.compositionController = new Gn(_this73.editorElement, _this73.composition), _this73.compositionController.delegate = _assertThisInitialized(_this73), _this73.toolbarController = new Pr(_this73.editorElement.toolbarElement), _this73.toolbarController.delegate = _assertThisInitialized(_this73), _this73.editor = new On(_this73.composition, _this73.selectionManager, _this73.editorElement), i ? _this73.editor.loadDocument(i) : _this73.editor.loadHTML(n);\n return _this73;\n }\n\n _createClass(Mr, [{\n key: \"registerSelectionManager\",\n value: function registerSelectionManager() {\n return Ft.registerSelectionManager(this.selectionManager);\n }\n }, {\n key: \"unregisterSelectionManager\",\n value: function unregisterSelectionManager() {\n return Ft.unregisterSelectionManager(this.selectionManager);\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.compositionController.render();\n }\n }, {\n key: \"reparse\",\n value: function reparse() {\n return this.composition.replaceHTML(this.editorElement.innerHTML);\n }\n }, {\n key: \"compositionDidChangeDocument\",\n value: function compositionDidChangeDocument(t) {\n if (this.notifyEditorElement(\"document-change\"), !this.handlingInput) return this.render();\n }\n }, {\n key: \"compositionDidChangeCurrentAttributes\",\n value: function compositionDidChangeCurrentAttributes(t) {\n return this.currentAttributes = t, this.toolbarController.updateAttributes(this.currentAttributes), this.updateCurrentActions(), this.notifyEditorElement(\"attributes-change\", {\n attributes: this.currentAttributes\n });\n }\n }, {\n key: \"compositionDidPerformInsertionAtRange\",\n value: function compositionDidPerformInsertionAtRange(t) {\n this.pasting && (this.pastedRange = t);\n }\n }, {\n key: \"compositionShouldAcceptFile\",\n value: function compositionShouldAcceptFile(t) {\n return this.notifyEditorElement(\"file-accept\", {\n file: t\n });\n }\n }, {\n key: \"compositionDidAddAttachment\",\n value: function compositionDidAddAttachment(t) {\n var e = this.attachmentManager.manageAttachment(t);\n return this.notifyEditorElement(\"attachment-add\", {\n attachment: e\n });\n }\n }, {\n key: \"compositionDidEditAttachment\",\n value: function compositionDidEditAttachment(t) {\n this.compositionController.rerenderViewForObject(t);\n var e = this.attachmentManager.manageAttachment(t);\n return this.notifyEditorElement(\"attachment-edit\", {\n attachment: e\n }), this.notifyEditorElement(\"change\");\n }\n }, {\n key: \"compositionDidChangeAttachmentPreviewURL\",\n value: function compositionDidChangeAttachmentPreviewURL(t) {\n return this.compositionController.invalidateViewForObject(t), this.notifyEditorElement(\"change\");\n }\n }, {\n key: \"compositionDidRemoveAttachment\",\n value: function compositionDidRemoveAttachment(t) {\n var e = this.attachmentManager.unmanageAttachment(t);\n return this.notifyEditorElement(\"attachment-remove\", {\n attachment: e\n });\n }\n }, {\n key: \"compositionDidStartEditingAttachment\",\n value: function compositionDidStartEditingAttachment(t, e) {\n return this.attachmentLocationRange = this.composition.document.getLocationRangeOfAttachment(t), this.compositionController.installAttachmentEditorForAttachment(t, e), this.selectionManager.setLocationRange(this.attachmentLocationRange);\n }\n }, {\n key: \"compositionDidStopEditingAttachment\",\n value: function compositionDidStopEditingAttachment(t) {\n this.compositionController.uninstallAttachmentEditor(), this.attachmentLocationRange = null;\n }\n }, {\n key: \"compositionDidRequestChangingSelectionToLocationRange\",\n value: function compositionDidRequestChangingSelectionToLocationRange(t) {\n if (!this.loadingSnapshot || this.isFocused()) return this.requestedLocationRange = t, this.compositionRevisionWhenLocationRangeRequested = this.composition.revision, this.handlingInput ? void 0 : this.render();\n }\n }, {\n key: \"compositionWillLoadSnapshot\",\n value: function compositionWillLoadSnapshot() {\n this.loadingSnapshot = !0;\n }\n }, {\n key: \"compositionDidLoadSnapshot\",\n value: function compositionDidLoadSnapshot() {\n this.compositionController.refreshViewCache(), this.render(), this.loadingSnapshot = !1;\n }\n }, {\n key: \"getSelectionManager\",\n value: function getSelectionManager() {\n return this.selectionManager;\n }\n }, {\n key: \"attachmentManagerDidRequestRemovalOfAttachment\",\n value: function attachmentManagerDidRequestRemovalOfAttachment(t) {\n return this.removeAttachment(t);\n }\n }, {\n key: \"compositionControllerWillSyncDocumentView\",\n value: function compositionControllerWillSyncDocumentView() {\n return this.inputController.editorWillSyncDocumentView(), this.selectionManager.lock(), this.selectionManager.clearSelection();\n }\n }, {\n key: \"compositionControllerDidSyncDocumentView\",\n value: function compositionControllerDidSyncDocumentView() {\n return this.inputController.editorDidSyncDocumentView(), this.selectionManager.unlock(), this.updateCurrentActions(), this.notifyEditorElement(\"sync\");\n }\n }, {\n key: \"compositionControllerDidRender\",\n value: function compositionControllerDidRender() {\n 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 }\n }, {\n key: \"compositionControllerDidFocus\",\n value: function compositionControllerDidFocus() {\n return this.isFocusedInvisibly() && this.setLocationRange({\n index: 0,\n offset: 0\n }), this.toolbarController.hideDialog(), this.notifyEditorElement(\"focus\");\n }\n }, {\n key: \"compositionControllerDidBlur\",\n value: function compositionControllerDidBlur() {\n return this.notifyEditorElement(\"blur\");\n }\n }, {\n key: \"compositionControllerDidSelectAttachment\",\n value: function compositionControllerDidSelectAttachment(t, e) {\n return this.toolbarController.hideDialog(), this.composition.editAttachment(t, e);\n }\n }, {\n key: \"compositionControllerDidRequestDeselectingAttachment\",\n value: function compositionControllerDidRequestDeselectingAttachment(t) {\n var e = this.attachmentLocationRange || this.composition.document.getLocationRangeOfAttachment(t);\n return this.selectionManager.setLocationRange(e[1]);\n }\n }, {\n key: \"compositionControllerWillUpdateAttachment\",\n value: function compositionControllerWillUpdateAttachment(t) {\n return this.editor.recordUndoEntry(\"Edit Attachment\", {\n context: t.id,\n consolidatable: !0\n });\n }\n }, {\n key: \"compositionControllerDidRequestRemovalOfAttachment\",\n value: function compositionControllerDidRequestRemovalOfAttachment(t) {\n return this.removeAttachment(t);\n }\n }, {\n key: \"inputControllerWillHandleInput\",\n value: function inputControllerWillHandleInput() {\n this.handlingInput = !0, this.requestedRender = !1;\n }\n }, {\n key: \"inputControllerDidRequestRender\",\n value: function inputControllerDidRequestRender() {\n this.requestedRender = !0;\n }\n }, {\n key: \"inputControllerDidHandleInput\",\n value: function inputControllerDidHandleInput() {\n if (this.handlingInput = !1, this.requestedRender) return this.requestedRender = !1, this.render();\n }\n }, {\n key: \"inputControllerDidAllowUnhandledInput\",\n value: function inputControllerDidAllowUnhandledInput() {\n return this.notifyEditorElement(\"change\");\n }\n }, {\n key: \"inputControllerDidRequestReparse\",\n value: function inputControllerDidRequestReparse() {\n return this.reparse();\n }\n }, {\n key: \"inputControllerWillPerformTyping\",\n value: function inputControllerWillPerformTyping() {\n return this.recordTypingUndoEntry();\n }\n }, {\n key: \"inputControllerWillPerformFormatting\",\n value: function inputControllerWillPerformFormatting(t) {\n return this.recordFormattingUndoEntry(t);\n }\n }, {\n key: \"inputControllerWillCutText\",\n value: function inputControllerWillCutText() {\n return this.editor.recordUndoEntry(\"Cut\");\n }\n }, {\n key: \"inputControllerWillPaste\",\n value: function inputControllerWillPaste(t) {\n return this.editor.recordUndoEntry(\"Paste\"), this.pasting = !0, this.notifyEditorElement(\"before-paste\", {\n paste: t\n });\n }\n }, {\n key: \"inputControllerDidPaste\",\n value: function inputControllerDidPaste(t) {\n return t.range = this.pastedRange, this.pastedRange = null, this.pasting = null, this.notifyEditorElement(\"paste\", {\n paste: t\n });\n }\n }, {\n key: \"inputControllerWillMoveText\",\n value: function inputControllerWillMoveText() {\n return this.editor.recordUndoEntry(\"Move\");\n }\n }, {\n key: \"inputControllerWillAttachFiles\",\n value: function inputControllerWillAttachFiles() {\n return this.editor.recordUndoEntry(\"Drop Files\");\n }\n }, {\n key: \"inputControllerWillPerformUndo\",\n value: function inputControllerWillPerformUndo() {\n return this.editor.undo();\n }\n }, {\n key: \"inputControllerWillPerformRedo\",\n value: function inputControllerWillPerformRedo() {\n return this.editor.redo();\n }\n }, {\n key: \"inputControllerDidReceiveKeyboardCommand\",\n value: function inputControllerDidReceiveKeyboardCommand(t) {\n return this.toolbarController.applyKeyboardCommand(t);\n }\n }, {\n key: \"inputControllerDidStartDrag\",\n value: function inputControllerDidStartDrag() {\n this.locationRangeBeforeDrag = this.selectionManager.getLocationRange();\n }\n }, {\n key: \"inputControllerDidReceiveDragOverPoint\",\n value: function inputControllerDidReceiveDragOverPoint(t) {\n return this.selectionManager.setLocationRangeFromPointRange(t);\n }\n }, {\n key: \"inputControllerDidCancelDrag\",\n value: function inputControllerDidCancelDrag() {\n this.selectionManager.setLocationRange(this.locationRangeBeforeDrag), this.locationRangeBeforeDrag = null;\n }\n }, {\n key: \"locationRangeDidChange\",\n value: function locationRangeDidChange(t) {\n return this.composition.updateCurrentAttributes(), this.updateCurrentActions(), this.attachmentLocationRange && !Dt(this.attachmentLocationRange, t) && this.composition.stopEditingAttachment(), this.notifyEditorElement(\"selection-change\");\n }\n }, {\n key: \"toolbarDidClickButton\",\n value: function toolbarDidClickButton() {\n if (!this.getLocationRange()) return this.setLocationRange({\n index: 0,\n offset: 0\n });\n }\n }, {\n key: \"toolbarDidInvokeAction\",\n value: function toolbarDidInvokeAction(t, e) {\n return this.invokeAction(t, e);\n }\n }, {\n key: \"toolbarDidToggleAttribute\",\n value: function toolbarDidToggleAttribute(t) {\n if (this.recordFormattingUndoEntry(t), this.composition.toggleCurrentAttribute(t), this.render(), !this.selectionFrozen) return this.editorElement.focus();\n }\n }, {\n key: \"toolbarDidUpdateAttribute\",\n value: function toolbarDidUpdateAttribute(t, e) {\n if (this.recordFormattingUndoEntry(t), this.composition.setCurrentAttribute(t, e), this.render(), !this.selectionFrozen) return this.editorElement.focus();\n }\n }, {\n key: \"toolbarDidRemoveAttribute\",\n value: function toolbarDidRemoveAttribute(t) {\n if (this.recordFormattingUndoEntry(t), this.composition.removeCurrentAttribute(t), this.render(), !this.selectionFrozen) return this.editorElement.focus();\n }\n }, {\n key: \"toolbarWillShowDialog\",\n value: function toolbarWillShowDialog(t) {\n return this.composition.expandSelectionForEditing(), this.freezeSelection();\n }\n }, {\n key: \"toolbarDidShowDialog\",\n value: function toolbarDidShowDialog(t) {\n return this.notifyEditorElement(\"toolbar-dialog-show\", {\n dialogName: t\n });\n }\n }, {\n key: \"toolbarDidHideDialog\",\n value: function toolbarDidHideDialog(t) {\n return this.thawSelection(), this.editorElement.focus(), this.notifyEditorElement(\"toolbar-dialog-hide\", {\n dialogName: t\n });\n }\n }, {\n key: \"freezeSelection\",\n value: function freezeSelection() {\n if (!this.selectionFrozen) return this.selectionManager.lock(), this.composition.freezeSelection(), this.selectionFrozen = !0, this.render();\n }\n }, {\n key: \"thawSelection\",\n value: function thawSelection() {\n if (this.selectionFrozen) return this.composition.thawSelection(), this.selectionManager.unlock(), this.selectionFrozen = !1, this.render();\n }\n }, {\n key: \"canInvokeAction\",\n value: function canInvokeAction(t) {\n return !!this.actionIsExternal(t) || !(null === (e = this.actions[t]) || void 0 === e || null === (e = e.test) || void 0 === e || !e.call(this));\n var e;\n }\n }, {\n key: \"invokeAction\",\n value: function invokeAction(t, e) {\n return this.actionIsExternal(t) ? this.notifyEditorElement(\"action-invoke\", {\n actionName: t,\n invokingElement: e\n }) : null === (i = this.actions[t]) || void 0 === i || null === (i = i.perform) || void 0 === i ? void 0 : i.call(this);\n var i;\n }\n }, {\n key: \"actionIsExternal\",\n value: function actionIsExternal(t) {\n return /^x-./.test(t);\n }\n }, {\n key: \"getCurrentActions\",\n value: function getCurrentActions() {\n var t = {};\n\n for (var _e56 in this.actions) {\n t[_e56] = this.canInvokeAction(_e56);\n }\n\n return t;\n }\n }, {\n key: \"updateCurrentActions\",\n value: function updateCurrentActions() {\n var t = this.getCurrentActions();\n if (!Tt(t, this.currentActions)) return this.currentActions = t, this.toolbarController.updateActions(this.currentActions), this.notifyEditorElement(\"actions-change\", {\n actions: this.currentActions\n });\n }\n }, {\n key: \"runEditorFilters\",\n value: function runEditorFilters() {\n var _this74 = this;\n\n var t = this.composition.getSnapshot();\n if (Array.from(this.editor.filters).forEach(function (e) {\n var _t61 = t,\n i = _t61.document,\n n = _t61.selectedRange;\n t = e.call(_this74.editor, t) || {}, t.document || (t.document = i), t.selectedRange || (t.selectedRange = n);\n }), e = t, i = this.composition.getSnapshot(), !Dt(e.selectedRange, i.selectedRange) || !e.document.isEqualTo(i.document)) return this.composition.loadSnapshot(t);\n var e, i;\n }\n }, {\n key: \"updateInputElement\",\n value: function updateInputElement() {\n var t = function (t, e) {\n var i = xn[e];\n if (i) return i(t);\n throw new Error(\"unknown content type: \".concat(e));\n }(this.compositionController.getSerializableElement(), \"text/html\");\n\n return this.editorElement.setFormValue(t);\n }\n }, {\n key: \"notifyEditorElement\",\n value: function notifyEditorElement(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 }\n }, {\n key: \"removeAttachment\",\n value: function removeAttachment(t) {\n return this.editor.recordUndoEntry(\"Delete Attachment\"), this.composition.removeAttachment(t), this.render();\n }\n }, {\n key: \"recordFormattingUndoEntry\",\n value: function recordFormattingUndoEntry(t) {\n var e = mt(t),\n i = this.selectionManager.getLocationRange();\n if (e || !Lt(i)) return this.editor.recordUndoEntry(\"Formatting\", {\n context: this.getUndoContext(),\n consolidatable: !0\n });\n }\n }, {\n key: \"recordTypingUndoEntry\",\n value: function recordTypingUndoEntry() {\n return this.editor.recordUndoEntry(\"Typing\", {\n context: this.getUndoContext(this.currentAttributes),\n consolidatable: !0\n });\n }\n }, {\n key: \"getUndoContext\",\n value: function getUndoContext() {\n for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) {\n e[i] = arguments[i];\n }\n\n return [this.getLocationContext(), this.getTimeContext()].concat(_toConsumableArray(Array.from(e)));\n }\n }, {\n key: \"getLocationContext\",\n value: function getLocationContext() {\n var t = this.selectionManager.getLocationRange();\n return Lt(t) ? t[0].index : t;\n }\n }, {\n key: \"getTimeContext\",\n value: function getTimeContext() {\n return V.interval > 0 ? Math.floor(new Date().getTime() / V.interval) : 0;\n }\n }, {\n key: \"isFocused\",\n value: function isFocused() {\n var t;\n return this.editorElement === (null === (t = this.editorElement.ownerDocument) || void 0 === t ? void 0 : t.activeElement);\n }\n }, {\n key: \"isFocusedInvisibly\",\n value: function isFocusedInvisibly() {\n return this.isFocused() && !this.getLocationRange();\n }\n }, {\n key: \"actions\",\n get: function get() {\n return this.constructor.actions;\n }\n }]);\n\n return Mr;\n}(Yn);\n\nwi(Mr, \"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 _.pickFiles(this.editor.insertFiles);\n }\n }\n}), Mr.proxyMethod(\"getSelectionManager().setLocationRange\"), Mr.proxyMethod(\"getSelectionManager().getLocationRange\");\n\nvar Br = Object.freeze({\n __proto__: null,\n AttachmentEditorController: Kn,\n CompositionController: Gn,\n Controller: Yn,\n EditorController: Mr,\n InputController: sr,\n Level0InputController: hr,\n Level2InputController: br,\n ToolbarController: Pr\n}),\n _r = Object.freeze({\n __proto__: null,\n MutationObserver: Qn,\n SelectionChangeObserver: Ot\n}),\n jr = Object.freeze({\n __proto__: null,\n FileVerificationOperation: er,\n ImagePreloadOperation: ji\n});\n\nvt(\"trix-toolbar\", \"%t {\\n display: block;\\n}\\n\\n%t {\\n white-space: nowrap;\\n}\\n\\n%t [data-trix-dialog] {\\n display: none;\\n}\\n\\n%t [data-trix-dialog][data-trix-active] {\\n display: block;\\n}\\n\\n%t [data-trix-dialog] [data-trix-validate]:invalid {\\n background-color: #ffdddd;\\n}\");\n\nvar Wr = /*#__PURE__*/function (_HTMLElement) {\n _inherits(Wr, _HTMLElement);\n\n var _super42 = _createSuper(Wr);\n\n function Wr() {\n _classCallCheck(this, Wr);\n\n return _super42.apply(this, arguments);\n }\n\n _createClass(Wr, [{\n key: \"connectedCallback\",\n value: function connectedCallback() {\n \"\" === this.innerHTML && (this.innerHTML = U.getDefaultHTML());\n }\n }]);\n\n return Wr;\n}( /*#__PURE__*/_wrapNativeSuper(HTMLElement));\n\nvar Ur = 0;\n\nvar Vr = function Vr(t) {\n if (!t.hasAttribute(\"contenteditable\")) return t.setAttribute(\"contenteditable\", \"\"), function (t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n return e.times = 1, b(t, e);\n }(\"focus\", {\n onElement: t,\n withCallback: function withCallback() {\n return zr(t);\n }\n });\n},\n zr = function zr(t) {\n return qr(t), Hr(t);\n},\n qr = function qr(t) {\n var e, i;\n if (null !== (e = (i = document).queryCommandSupported) && void 0 !== e && e.call(i, \"enableObjectResizing\")) return document.execCommand(\"enableObjectResizing\", !1, !1), b(\"mscontrolselect\", {\n onElement: t,\n preventDefault: !0\n });\n},\n Hr = function Hr(t) {\n var e, i;\n\n if (null !== (e = (i = document).queryCommandSupported) && void 0 !== e && e.call(i, \"DefaultParagraphSeparator\")) {\n var _t62 = n.default.tagName;\n if ([\"div\", \"p\"].includes(_t62)) return document.execCommand(\"DefaultParagraphSeparator\", !1, _t62);\n }\n},\n Jr = a.forcesObjectResizing ? {\n display: \"inline\",\n width: \"auto\"\n} : {\n display: \"inline-block\",\n width: \"1px\"\n};\n\nvt(\"trix-editor\", \"%t {\\n display: block;\\n}\\n\\n%t:empty::before {\\n content: attr(placeholder);\\n color: graytext;\\n cursor: text;\\n pointer-events: none;\\n white-space: pre-line;\\n}\\n\\n%t a[contenteditable=false] {\\n cursor: text;\\n}\\n\\n%t img {\\n max-width: 100%;\\n height: auto;\\n}\\n\\n%t \".concat(e, \" figcaption textarea {\\n resize: none;\\n}\\n\\n%t \").concat(e, \" figcaption textarea.trix-autoresize-clone {\\n position: absolute;\\n left: -9999px;\\n max-height: 0px;\\n}\\n\\n%t \").concat(e, \" figcaption[data-trix-placeholder]:empty::before {\\n content: attr(data-trix-placeholder);\\n color: graytext;\\n}\\n\\n%t [data-trix-cursor-target] {\\n display: \").concat(Jr.display, \" !important;\\n width: \").concat(Jr.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}\"));\nvar Kr = new WeakMap(),\n Gr = new WeakSet();\n\nvar Yr = /*#__PURE__*/function () {\n function Yr(t) {\n _classCallCheck(this, Yr);\n\n var e, i;\n Mi(e = this, i = Gr), i.add(e), Bi(this, Kr, {\n writable: !0,\n value: void 0\n }), this.element = t, Ni(this, Kr, t.attachInternals());\n }\n\n _createClass(Yr, [{\n key: \"connectedCallback\",\n value: function connectedCallback() {\n Pi(this, Gr, $r).call(this);\n }\n }, {\n key: \"disconnectedCallback\",\n value: function disconnectedCallback() {}\n }, {\n key: \"labels\",\n get: function get() {\n return Di(this, Kr).labels;\n }\n }, {\n key: \"disabled\",\n get: function get() {\n var t;\n return null === (t = this.element.inputElement) || void 0 === t ? void 0 : t.disabled;\n },\n set: function set(t) {\n this.element.toggleAttribute(\"disabled\", t);\n }\n }, {\n key: \"required\",\n get: function get() {\n return this.element.hasAttribute(\"required\");\n },\n set: function set(t) {\n this.element.toggleAttribute(\"required\", t), Pi(this, Gr, $r).call(this);\n }\n }, {\n key: \"validity\",\n get: function get() {\n return Di(this, Kr).validity;\n }\n }, {\n key: \"validationMessage\",\n get: function get() {\n return Di(this, Kr).validationMessage;\n }\n }, {\n key: \"willValidate\",\n get: function get() {\n return Di(this, Kr).willValidate;\n }\n }, {\n key: \"setFormValue\",\n value: function setFormValue(t) {\n Pi(this, Gr, $r).call(this);\n }\n }, {\n key: \"checkValidity\",\n value: function checkValidity() {\n return Di(this, Kr).checkValidity();\n }\n }, {\n key: \"reportValidity\",\n value: function reportValidity() {\n return Di(this, Kr).reportValidity();\n }\n }, {\n key: \"setCustomValidity\",\n value: function setCustomValidity(t) {\n Pi(this, Gr, $r).call(this, t);\n }\n }]);\n\n return Yr;\n}();\n\nfunction $r() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\";\n var _this$element = this.element,\n e = _this$element.required,\n i = _this$element.value,\n n = e && !i,\n r = !!t,\n o = T(\"input\", {\n required: e\n }),\n s = t || o.validationMessage;\n Di(this, Kr).setValidity({\n valueMissing: n,\n customError: r\n }, s);\n}\n\nvar Xr = new WeakMap(),\n Zr = new WeakMap(),\n Qr = new WeakMap();\n\nvar to = /*#__PURE__*/function () {\n function to(t) {\n var _this75 = this;\n\n _classCallCheck(this, to);\n\n Bi(this, Xr, {\n writable: !0,\n value: void 0\n }), Bi(this, Zr, {\n writable: !0,\n value: function value(t) {\n t.defaultPrevented || t.target === _this75.element.form && _this75.element.reset();\n }\n }), Bi(this, Qr, {\n writable: !0,\n value: function value(t) {\n if (t.defaultPrevented) return;\n if (_this75.element.contains(t.target)) return;\n var e = y(t.target, {\n matchingSelector: \"label\"\n });\n e && Array.from(_this75.labels).includes(e) && _this75.element.focus();\n }\n }), this.element = t;\n }\n\n _createClass(to, [{\n key: \"connectedCallback\",\n value: function connectedCallback() {\n Ni(this, Xr, function (t) {\n if (t.hasAttribute(\"aria-label\") || t.hasAttribute(\"aria-labelledby\")) return;\n\n var e = function e() {\n var e = Array.from(t.labels).map(function (e) {\n if (!e.contains(t)) return e.textContent;\n }).filter(function (t) {\n return t;\n }),\n i = e.join(\" \");\n return i ? t.setAttribute(\"aria-label\", i) : t.removeAttribute(\"aria-label\");\n };\n\n return e(), b(\"focus\", {\n onElement: t,\n withCallback: e\n });\n }(this.element)), window.addEventListener(\"reset\", Di(this, Zr), !1), window.addEventListener(\"click\", Di(this, Qr), !1);\n }\n }, {\n key: \"disconnectedCallback\",\n value: function disconnectedCallback() {\n var t;\n null === (t = Di(this, Xr)) || void 0 === t || t.destroy(), window.removeEventListener(\"reset\", Di(this, Zr), !1), window.removeEventListener(\"click\", Di(this, Qr), !1);\n }\n }, {\n key: \"labels\",\n get: function get() {\n var t = [];\n this.element.id && this.element.ownerDocument && t.push.apply(t, _toConsumableArray(Array.from(this.element.ownerDocument.querySelectorAll(\"label[for='\".concat(this.element.id, \"']\")) || [])));\n var e = y(this.element, {\n matchingSelector: \"label\"\n });\n return e && [this.element, null].includes(e.control) && t.push(e), t;\n }\n }, {\n key: \"disabled\",\n get: function get() {\n return console.warn(\"This browser does not support the [disabled] attribute for trix-editor elements.\"), !1;\n },\n set: function set(t) {\n console.warn(\"This browser does not support the [disabled] attribute for trix-editor elements.\");\n }\n }, {\n key: \"required\",\n get: function get() {\n return console.warn(\"This browser does not support the [required] attribute for trix-editor elements.\"), !1;\n },\n set: function set(t) {\n console.warn(\"This browser does not support the [required] attribute for trix-editor elements.\");\n }\n }, {\n key: \"validity\",\n get: function get() {\n return console.warn(\"This browser does not support the validity property for trix-editor elements.\"), null;\n }\n }, {\n key: \"validationMessage\",\n get: function get() {\n return console.warn(\"This browser does not support the validationMessage property for trix-editor elements.\"), \"\";\n }\n }, {\n key: \"willValidate\",\n get: function get() {\n return console.warn(\"This browser does not support the willValidate property for trix-editor elements.\"), !1;\n }\n }, {\n key: \"setFormValue\",\n value: function setFormValue(t) {}\n }, {\n key: \"checkValidity\",\n value: function checkValidity() {\n return console.warn(\"This browser does not support checkValidity() for trix-editor elements.\"), !0;\n }\n }, {\n key: \"reportValidity\",\n value: function reportValidity() {\n return console.warn(\"This browser does not support reportValidity() for trix-editor elements.\"), !0;\n }\n }, {\n key: \"setCustomValidity\",\n value: function setCustomValidity(t) {\n console.warn(\"This browser does not support setCustomValidity(validationMessage) for trix-editor elements.\");\n }\n }]);\n\n return to;\n}();\n\nvar eo = new WeakMap();\n\nvar io = /*#__PURE__*/function (_HTMLElement2) {\n _inherits(io, _HTMLElement2);\n\n var _super43 = _createSuper(io);\n\n function io() {\n var _this76;\n\n _classCallCheck(this, io);\n\n _this76 = _super43.call(this), Bi(_assertThisInitialized(_this76), eo, {\n writable: !0,\n value: void 0\n }), Ni(_assertThisInitialized(_this76), eo, _this76.constructor.formAssociated ? new Yr(_assertThisInitialized(_this76)) : new to(_assertThisInitialized(_this76)));\n return _this76;\n }\n\n _createClass(io, [{\n key: \"trixId\",\n get: function get() {\n return this.hasAttribute(\"trix-id\") ? this.getAttribute(\"trix-id\") : (this.setAttribute(\"trix-id\", ++Ur), this.trixId);\n }\n }, {\n key: \"labels\",\n get: function get() {\n return Di(this, eo).labels;\n }\n }, {\n key: \"disabled\",\n get: function get() {\n return Di(this, eo).disabled;\n },\n set: function set(t) {\n Di(this, eo).disabled = t;\n }\n }, {\n key: \"required\",\n get: function get() {\n return Di(this, eo).required;\n },\n set: function set(t) {\n Di(this, eo).required = t;\n }\n }, {\n key: \"validity\",\n get: function get() {\n return Di(this, eo).validity;\n }\n }, {\n key: \"validationMessage\",\n get: function get() {\n return Di(this, eo).validationMessage;\n }\n }, {\n key: \"willValidate\",\n get: function get() {\n return Di(this, eo).willValidate;\n }\n }, {\n key: \"type\",\n get: function get() {\n return this.localName;\n }\n }, {\n key: \"toolbarElement\",\n get: function get() {\n var t;\n if (this.hasAttribute(\"toolbar\")) return null === (t = this.ownerDocument) || void 0 === t ? void 0 : t.getElementById(this.getAttribute(\"toolbar\"));\n\n if (this.parentNode) {\n var _t63 = \"trix-toolbar-\".concat(this.trixId);\n\n this.setAttribute(\"toolbar\", _t63);\n\n var _e57 = T(\"trix-toolbar\", {\n id: _t63\n });\n\n return this.parentNode.insertBefore(_e57, this), _e57;\n }\n }\n }, {\n key: \"form\",\n get: function get() {\n var t;\n return null === (t = this.inputElement) || void 0 === t ? void 0 : t.form;\n }\n }, {\n key: \"inputElement\",\n get: function get() {\n var t;\n if (this.hasAttribute(\"input\")) return null === (t = this.ownerDocument) || void 0 === t ? void 0 : t.getElementById(this.getAttribute(\"input\"));\n\n if (this.parentNode) {\n var _t64 = \"trix-input-\".concat(this.trixId);\n\n this.setAttribute(\"input\", _t64);\n\n var _e58 = T(\"input\", {\n type: \"hidden\",\n id: _t64\n });\n\n return this.parentNode.insertBefore(_e58, this.nextElementSibling), _e58;\n }\n }\n }, {\n key: \"editor\",\n get: function get() {\n var t;\n return null === (t = this.editorController) || void 0 === t ? void 0 : t.editor;\n }\n }, {\n key: \"name\",\n get: function get() {\n var t;\n return null === (t = this.inputElement) || void 0 === t ? void 0 : t.name;\n }\n }, {\n key: \"value\",\n get: function get() {\n var t;\n return null === (t = this.inputElement) || void 0 === t ? void 0 : t.value;\n },\n set: function set(t) {\n var e;\n this.defaultValue = t, null === (e = this.editor) || void 0 === e || e.loadHTML(this.defaultValue);\n }\n }, {\n key: \"notify\",\n value: function notify(t, e) {\n if (this.editorController) return v(\"trix-\".concat(t), {\n onElement: this,\n attributes: e\n });\n }\n }, {\n key: \"setFormValue\",\n value: function setFormValue(t) {\n this.inputElement && (this.inputElement.value = t, Di(this, eo).setFormValue(t));\n }\n }, {\n key: \"connectedCallback\",\n value: function connectedCallback() {\n var _this77 = this;\n\n this.hasAttribute(\"data-trix-internal\") || (Vr(this), function (t) {\n if (!t.hasAttribute(\"role\")) t.setAttribute(\"role\", \"textbox\");\n }(this), this.editorController || (v(\"trix-before-initialize\", {\n onElement: this\n }), this.editorController = new Mr({\n editorElement: this,\n html: this.defaultValue = this.value\n }), requestAnimationFrame(function () {\n return v(\"trix-initialize\", {\n onElement: _this77\n });\n })), this.editorController.registerSelectionManager(), Di(this, eo).connectedCallback(), function (t) {\n if (!document.querySelector(\":focus\") && t.hasAttribute(\"autofocus\") && document.querySelector(\"[autofocus]\") === t) t.focus();\n }(this));\n }\n }, {\n key: \"disconnectedCallback\",\n value: function disconnectedCallback() {\n var t;\n null === (t = this.editorController) || void 0 === t || t.unregisterSelectionManager(), Di(this, eo).disconnectedCallback();\n }\n }, {\n key: \"checkValidity\",\n value: function checkValidity() {\n return Di(this, eo).checkValidity();\n }\n }, {\n key: \"reportValidity\",\n value: function reportValidity() {\n return Di(this, eo).reportValidity();\n }\n }, {\n key: \"setCustomValidity\",\n value: function setCustomValidity(t) {\n Di(this, eo).setCustomValidity(t);\n }\n }, {\n key: \"formDisabledCallback\",\n value: function formDisabledCallback(t) {\n this.inputElement && (this.inputElement.disabled = t), this.toggleAttribute(\"contenteditable\", !t);\n }\n }, {\n key: \"formResetCallback\",\n value: function formResetCallback() {\n this.reset();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.value = this.defaultValue;\n }\n }]);\n\n return io;\n}( /*#__PURE__*/_wrapNativeSuper(HTMLElement));\n\nwi(io, \"formAssociated\", \"ElementInternals\" in window);\nvar no = {\n VERSION: t,\n config: z,\n core: Cn,\n models: Un,\n views: Vn,\n controllers: Br,\n observers: _r,\n operations: jr,\n elements: Object.freeze({\n __proto__: null,\n TrixEditorElement: io,\n TrixToolbarElement: Wr\n }),\n filters: Object.freeze({\n __proto__: null,\n Filter: Dn,\n attachmentGalleryFilter: Nn\n })\n};\nObject.assign(no, Un), window.Trix = no, setTimeout(function () {\n customElements.get(\"trix-toolbar\") || customElements.define(\"trix-toolbar\", Wr), customElements.get(\"trix-editor\") || customElements.define(\"trix-editor\", io);\n}, 0);\nexport { no as default };","/* eslint-disable no-param-reassign */\nimport autocomplete from 'autocompleter';\nimport axios from 'axios';\nimport Turbolinks from 'turbolinks';\n\nconst performSearch = (query, update, labelAttr = 'name', path = '/api/v2/search') => {\n const q = encodeURIComponent(query);\n axios.get(`${path}?q=${q}`).then((response) => {\n const suggestions = response.data.map((result) => {\n // If the resource is serialized in the api, it may have\n // and attributes top level. Hacky way to get around that as long\n // as title or name are used for the label\n if (labelAttr === 'attributes') {\n const label = result[labelAttr].title ? result[labelAttr].title : result[labelAttr].name;\n return { label, value: result.attributes.id };\n }\n\n return { label: result[labelAttr], value: result.id };\n });\n update(suggestions);\n });\n};\n\nconst options = (opts) => (\n {\n input: opts.input,\n minLength: 2,\n disableAutoSelect: true,\n preventSubmit: opts.preventSubmit,\n emptyMsg: 'Nothing found with that search term',\n fetch: (query, update) => { performSearch(query, update, opts.label, opts.path); },\n onSelect(item, input) {\n opts.input.value = item.label;\n if (opts.onSelectPath) {\n const url = opts.onSelectPath.replace('___ID___', item.value);\n Turbolinks.visit(url);\n } else input.form.submit();\n },\n debounceWaitMs: 200,\n }\n);\n\ndocument.addEventListener('turbolinks:load', () => {\n const autocompleteFields = [...document.querySelectorAll('.autocomplete-input')];\n autocompleteFields.forEach((input) => {\n // onSelectPath should be a window redirect when the item is selected\n const {\n label, path, type, onSelectPath,\n } = input.dataset;\n const opts = options({\n input, label, path, type, onSelectPath, preventSubmit: onSelectPath,\n });\n if (type) opts.emptyMsg = `No ${type} found with that search term`;\n autocomplete(opts);\n });\n});\n","import Combobox from '@ambiki/combobox';\nimport { visible, cancel, enabled } from '../helpers/dom-helper';\nimport { nextFrame } from '../helpers/timing';\n\nexport default class CommandPaletteElement extends HTMLElement {\n /**\n * @example\n * Key is keyboard token. Value is scope id.\n * { \"@\": \"users\", \"alist:\": \"visual-schedules\", \"goal:\": \"goals\" }\n */\n keyMappings = {};\n\n async connectedCallback() {\n this.input = this.querySelector('input');\n this.list = this.querySelector('command-palette-stack');\n\n if (!(this.input instanceof HTMLInputElement) || !this.list) return;\n\n // Registering before `input` addEventListener\n this.registerKeyMappings();\n\n this.combobox = new Combobox(this.input, this.list);\n this.list.setAttribute('role', 'presentation');\n\n this.onKeydown = this.onKeydown.bind(this);\n this.onInput = this.onInput.bind(this);\n this.startLoading = this.startLoading.bind(this);\n this.stopLoading = this.stopLoading.bind(this);\n\n this.input.addEventListener('keydown', this.onKeydown);\n this.input.addEventListener('input', this.onInput);\n this.addEventListener('command-palette-group:loadstart', this.startLoading);\n this.addEventListener('command-palette-group:loadend', this.stopLoading);\n\n await nextFrame();\n this.initializePalette();\n\n this.details = this.closest('details');\n if (!this.details) return;\n\n this.onToggle = this.onToggle.bind(this);\n this.details.addEventListener('toggle', this.onToggle);\n }\n\n disconnectedCallback() {\n this.destroyPalette();\n\n this.removeEventListener('command-palette-group:loadstart', this.startLoading);\n this.removeEventListener('command-palette-group:loadend', this.stopLoading);\n this.input.removeEventListener('keydown', this.onKeydown);\n this.input.removeEventListener('input', this.onInput);\n this.details.removeEventListener('toggle', this.onToggle);\n }\n\n static get observedAttributes() {\n return ['data-active-group'];\n }\n\n async attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue) return;\n\n switch (name) {\n case 'data-active-group': {\n const parsedNewValue = JSON.parse(newValue);\n if (parsedNewValue) {\n this.input.value = '';\n this.groups.forEach(filterGroup('', { scopeId: parsedNewValue.id })); // After we set the scope, groups can start fetching results from the API\n } else {\n this.groups.forEach(filterGroup('', { scopeId: null })); // Reset filtered items and groups when a scope is removed\n }\n\n await nextFrame();\n this.combobox.setActive(this.activableItems[0]);\n break;\n }\n default:\n break;\n }\n }\n\n onToggle() {\n if (this.details.hasAttribute('open')) {\n this.initializePalette();\n } else {\n this.destroyPalette();\n }\n }\n\n /**\n * Clean up all things here\n */\n destroyPalette() {\n this.combobox.stop();\n this.input.value = '';\n removeScope(this);\n this.removeAttribute('data-active-group');\n this.header?.removeAttribute('loading');\n this.items.forEach((item) => item.setAttribute('aria-selected', 'false'));\n }\n\n onKeydown(event) {\n switch (event.key) {\n case 'Enter':\n if (commit(this)) {\n cancel(event);\n }\n break;\n case 'Tab':\n if (updateScope(this)) {\n cancel(event);\n }\n break;\n case 'Backspace':\n if (removeScope(this)) {\n cancel(event);\n }\n break;\n default:\n break;\n }\n }\n\n onInput() {\n const query = this.input.value.trim();\n const targetGroupId = this.keyMappings[query.toLowerCase()] || '';\n const item = this.querySelector(`[data-target-group-id=\"${targetGroupId}\"]`);\n if (item && updateScopeFromItem(item, this)) return;\n\n const activeGroup = this.getAttribute('data-active-group');\n const parsedActiveGroup = JSON.parse(activeGroup);\n\n this.groups.forEach(filterGroup(query, { scopeId: parsedActiveGroup?.id }));\n this.combobox.setActive(this.activableItems[0]);\n }\n\n startLoading() {\n this.header?.setAttribute('loading', '');\n }\n\n stopLoading() {\n this.combobox.setActive(this.activableItems[0]); // Activate first option after fetching from API\n this.header?.removeAttribute('loading', '');\n }\n\n registerKeyMappings() {\n this.items\n .filter((item) => item.hasAttribute('data-trigger-keys'))\n .forEach((mapping) => {\n const { triggerKeys, targetGroupId } = mapping.dataset;\n const parsedTriggerKeys = JSON.parse(triggerKeys);\n if (!Array.isArray(parsedTriggerKeys)) {\n throw new Error('data-trigger-keys should be an array');\n }\n\n parsedTriggerKeys.forEach((key) => {\n if (this.keyMappings[key]) throw new Error(`Duplicate key detected: ${key}`);\n this.keyMappings[key.toLowerCase()] = targetGroupId;\n });\n });\n }\n\n initializePalette() {\n this.groups.forEach(filterGroup('', { scopeId: null }));\n this.combobox.start();\n this.combobox.setActive(this.activableItems[0]);\n const autofocus = this.querySelector('[autofocus]');\n autofocus?.focus();\n }\n\n get groups() {\n return Array.from(this.querySelectorAll('command-palette-group'));\n }\n\n get header() {\n return this.querySelector('command-palette-header');\n }\n\n get items() {\n return Array.from(this.querySelectorAll('command-palette-item'));\n }\n\n get activableItems() {\n return this.items.filter(activable);\n }\n}\n\nfunction commit(palette) {\n const item = palette.querySelector('[data-tracking]');\n if (!item) return false;\n if (item.getAttribute('aria-disabled') === 'true') return false;\n\n const anchor = item.firstElementChild;\n if (!anchor) return false;\n\n // When `href` is `#`, we just want to open the nested links, if any on Enter\n const href = anchor.getAttribute('href');\n if (href === '#') {\n updateScope(palette);\n } else {\n anchor.click();\n }\n return true;\n}\n\nfunction updateScope(palette) {\n const item = palette.querySelector('[data-tracking]');\n return updateScopeFromItem(item, palette);\n}\n\nfunction updateScopeFromItem(item, palette) {\n if (!(item instanceof HTMLElement)) return false;\n if (item.getAttribute('aria-disabled') === 'true') return false;\n\n const groupId = item.getAttribute('data-target-group-id');\n const groupTitle = item.getAttribute('data-target-group-name');\n if (!groupId || !groupTitle) return false;\n\n // Check if group is already active\n const activeGroup = JSON.parse(palette.getAttribute('data-active-group'));\n if (activeGroup?.id === groupId) return false;\n\n const targetGroup = palette.querySelector(`[data-group-id=\"${groupId}\"]`);\n if (!targetGroup) return false;\n\n const header = palette.querySelector('command-palette-header');\n const stack = palette.querySelector('command-palette-stack');\n if (!header || !stack) return false;\n\n // Inform other elements about the active group\n const stringifiedObject = JSON.stringify({ id: groupId, title: groupTitle });\n palette.setAttribute('data-active-group', stringifiedObject);\n header.dispatchEvent(new CustomEvent('command-palette:scopeUpdated', { detail: stringifiedObject }));\n stack.dispatchEvent(new CustomEvent('command-palette:scopeUpdated', { detail: stringifiedObject }));\n\n return item;\n}\n\nfunction removeScope(palette) {\n const header = palette.querySelector('command-palette-header');\n const stack = palette.querySelector('command-palette-stack');\n if (!header || !stack) return false;\n\n // Only remove if we have an active group and the input's length is 0\n if (palette.hasAttribute('data-active-group') && !palette.input.value.length) {\n palette.removeAttribute('data-active-group');\n header.dispatchEvent(new CustomEvent('command-palette:scopeRemoved'));\n stack.dispatchEvent(new CustomEvent('command-palette:scopeRemoved'));\n return true;\n }\n\n return false;\n}\n\nfunction filterGroup(query, { scopeId }) {\n return (group) => {\n group.dispatchEvent(new CustomEvent('command-palette:change', { detail: { query, scopeId } }));\n };\n}\n\nfunction activable(item) {\n return visible(item) && enabled(item);\n}\n","import axios from 'axios';\nimport debounce from 'lodash.debounce';\nimport { brandedId } from '../../helpers/random-id';\n\nexport default class CommandPaletteGroupElement extends HTMLElement {\n connectedCallback() {\n if (!this.hasAttribute('data-group-id')) {\n this.setAttribute('data-group-id', brandedId());\n }\n\n // Set `role` and label with the existing group title\n this.setAttribute('role', 'listbox');\n const title = this.querySelector('[data-group-title]');\n if (title) {\n const titleId = brandedId();\n title.id = titleId;\n this.setAttribute('aria-labelledby', titleId);\n }\n\n this.onChange = this.onChange.bind(this);\n this.fetchResults = debounce(this.fetchResults.bind(this), 300);\n\n this.addEventListener('command-palette:change', this.onChange);\n }\n\n disconnectedCallback() {\n this.removeEventListener('command-palette:change', this.onChange);\n }\n\n onChange(event) {\n const { query, scopeId } = event.detail;\n\n if (scopeId) {\n if (!isGroupActive(this, scopeId)) return;\n // if there is a src get remote items\n // else filter within the scope here\n if (this.src) {\n this.initializeFetch(this.src, query);\n } else {\n this.groupItems(scopeId).forEach(filterItems(query, { matching: 'data-search-term', scopeId }));\n }\n } else if (!this.src) {\n // filter all except the src\n this.items.forEach(filterItems(query, { matching: 'data-search-term' }));\n }\n }\n\n initializeFetch(src, query) {\n this.startLoading();\n this.fetchResults(src, query);\n }\n\n async fetchResults(src, query) {\n try {\n const { data } = await axios.get(src, {\n headers: { accept: 'text/fragment+html' },\n params: { q: query },\n });\n\n // Since this function is debounced, we cannot be sure that we'll always get fresh scoped data from the\n // arguments, hence we need to make a fresh search of the attributes;\n if ((!query && !this.palette.hasAttribute('data-active-group')) || !isGroupActive(this, this.activeGroup?.id)) {\n this.hidden = true;\n return;\n }\n\n this.innerHTML = data;\n this.hidden = !data; // Hide group if data is empty\n } catch (error) {\n this.innerHTML = renderErrorTemplate();\n } finally {\n this.stopLoading();\n }\n }\n\n startLoading() {\n this.palette?.dispatchEvent(\n new CustomEvent('command-palette-group:loadstart', { detail: { relatedTarget: this } })\n );\n }\n\n stopLoading() {\n this.palette?.dispatchEvent(new CustomEvent('command-palette-group:loadend', { detail: { relatedTarget: this } }));\n }\n\n groupItems(groupId) {\n if (!groupId || !isGroupActive(this, groupId)) return [];\n\n return this.items;\n }\n\n get src() {\n return this.getAttribute('src');\n }\n\n get items() {\n return Array.from(this.querySelectorAll('command-palette-item'));\n }\n\n get palette() {\n return this.closest('command-palette');\n }\n\n get activeGroup() {\n return JSON.parse(this.palette.getAttribute('data-active-group'));\n }\n}\n\nfunction filterItems(query, { matching, scopeId = null }) {\n return (target) => {\n const group = target.closest('command-palette-group');\n if (!(group instanceof HTMLElement)) return;\n\n if (query) {\n const value = target.getAttribute(matching) || target.textContent;\n const match = value?.toLowerCase().includes(query.toLowerCase());\n target.hidden = !match;\n\n const allItems = Array.from(group.querySelectorAll('command-palette-item'));\n group.hidden = allItems.every((item) => item.hidden);\n } else {\n target.hidden = false;\n if (scopeId) {\n group.hidden = !isGroupActive(group, scopeId); // Hide all except the active group\n } else {\n group.hidden = !group.hasAttribute('data-cp-homepage'); // Hide all except the homepage\n }\n }\n };\n}\n\nfunction isGroupActive(group, id) {\n return group.getAttribute('data-group-id') === id;\n}\n\nfunction renderErrorTemplate() {\n return `\n <div class=\"card text-center border-0 shadow-none mx-auto w-75\">\n <div class=\"card-body\">\n <h3 class=\"card-title text-danger\">An error occurred.</h3>\n <p class=\"card-text text-danger\">We can't process your data right now. Please try again later.</p>\n </div>\n </div>\n `;\n}\n","import { isEmpty } from '../../helpers/metal';\n\nexport default class CommandPaletteElement extends HTMLElement {\n connectedCallback() {\n this.addScope = this.addScope.bind(this);\n this.removeScope = this.removeScope.bind(this);\n\n this.addEventListener('command-palette:scopeUpdated', this.addScope);\n this.addEventListener('command-palette:scopeRemoved', this.removeScope);\n }\n\n disconnectedCallback() {\n this.removeEventListener('command-palette:scopeUpdated', this.addScope);\n this.removeEventListener('command-palette:scopeRemoved', this.removeScope);\n }\n\n addScope(event) {\n const object = JSON.parse(event.detail);\n if (isEmpty(object)) return;\n\n const { id, title } = object;\n if (!(this.container instanceof HTMLElement)) return;\n\n const template = `\n <div data-group-id=\"${id}\" class=\"d-inline-flex align-items-center\">\n <span class=\"d-block text-truncate\" style=\"max-width: 100px;\">${title}</span>\n <span> / </span>\n </div>\n `;\n\n this.container.innerHTML = template;\n }\n\n removeScope() {\n if (!(this.container instanceof HTMLElement)) return;\n\n this.container.innerHTML = '';\n }\n\n get container() {\n return this.querySelector('[data-scopes]');\n }\n}\n","export default class CommandPaletteItemElement extends HTMLElement {\n connectedCallback() {\n this.setAttribute('role', 'option');\n\n this.item = this.firstElementChild;\n if (!this.item) return;\n\n this.item.setAttribute('tabindex', '-1');\n }\n}\n","import tinykeys from 'tinykeys';\nimport { cancel, focusable } from '../helpers/dom-helper';\n\nexport default class DetailsDialogElement extends HTMLElement {\n connectedCallback() {\n this.details = this.closest('details');\n if (!this.details) return;\n\n this.setAttribute('role', 'dialog');\n this.setAttribute('aria-modal', 'true');\n\n this.details.addEventListener('toggle', onToggle);\n this.details.addEventListener('keydown', onKeydown);\n this.details.addEventListener('click', onClick);\n this.registerActivationHotkey();\n\n const summary = this.details.querySelector('summary');\n if (summary) {\n if (!summary.hasAttribute('role')) summary.setAttribute('role', 'button');\n }\n }\n\n disconnectedCallback() {\n close(this.details);\n\n if (this.details) {\n this.details.removeEventListener('toggle', onToggle);\n this.details.removeEventListener('keydown', onKeydown);\n this.details.removeEventListener('click', onClick);\n }\n }\n\n registerActivationHotkey() {\n const hotkey = this.getAttribute('data-activation-hotkey');\n if (!hotkey) return;\n\n tinykeys(window, {\n [hotkey]: (event) => {\n cancel(event);\n\n if (this.details.hasAttribute('open')) {\n close(this.details);\n } else {\n open(this.details);\n }\n },\n });\n }\n}\n\nfunction onToggle(event) {\n const details = event.currentTarget;\n\n if (details.hasAttribute('open')) {\n details.dispatchEvent(new CustomEvent('details-dialog:open', { bubbles: true }));\n open(details);\n } else {\n close(details);\n details.dispatchEvent(new CustomEvent('details-dialog:close', { bubbles: true }));\n }\n}\n\nfunction onKeydown(event) {\n const details = event.currentTarget;\n if (event.key === 'Escape') {\n close(details);\n cancel(event);\n }\n}\n\nfunction onClick(event) {\n const { target } = event;\n if (!(target instanceof HTMLElement)) return;\n\n const details = target.closest('details');\n if (!details) return;\n\n if (target.closest('[data-dialog-close]')) {\n close(details);\n }\n}\n\nfunction open(details) {\n const dialog = details.querySelector('details-dialog');\n\n details.setAttribute('open', '');\n if (dialog) {\n dialog.addEventListener('submit', checkFormSubmission);\n dialog.addEventListener('keydown', interceptTabbing);\n focusFirstElement(dialog);\n }\n}\n\nfunction close(details) {\n details.removeAttribute('open');\n const dialog = details.querySelector('details-dialog');\n\n if (dialog) {\n dialog.removeEventListener('submit', checkFormSubmission);\n dialog.removeEventListener('keydown', interceptTabbing);\n dialog.removeAttribute('tabindex');\n }\n\n const summary = details.querySelector('summary');\n if (summary && summary.getAttribute('role') !== 'none') summary.focus();\n}\n\nfunction interceptTabbing(event) {\n if (event.key !== 'Tab') return;\n const dialog = event.currentTarget;\n\n event.preventDefault();\n\n const focusableElements = Array.from(dialog.querySelectorAll('*')).filter(focusable);\n if (focusableElements.length === 0) return;\n\n const movement = event.shiftKey ? -1 : 1;\n const root = this.getRootNode();\n const currentFocus = this.contains(root.activeElement) ? root.activeElement : null;\n let targetIndex = movement === -1 ? -1 : 0;\n\n if (currentFocus instanceof HTMLElement) {\n const currentIndex = focusableElements.indexOf(currentFocus);\n if (currentIndex !== -1) {\n targetIndex = currentIndex + movement;\n }\n }\n\n if (targetIndex < 0) {\n targetIndex = focusableElements.length - 1;\n } else {\n targetIndex %= focusableElements.length;\n }\n\n focusableElements[targetIndex].focus();\n}\n\nfunction focusFirstElement(dialog) {\n const autofocusableElement = Array.from(dialog.querySelectorAll('[autofocus]')).filter(focusable)[0];\n\n if (autofocusableElement) {\n autofocusableElement.focus();\n } else {\n dialog.setAttribute('tabindex', '-1');\n dialog.focus();\n }\n}\n\nfunction checkFormSubmission(event) {\n const form = event.target;\n if (!(form instanceof HTMLFormElement)) return;\n\n if (form.getAttribute('method') === 'dialog') {\n event.preventDefault();\n\n const details = form.closest('details');\n if (details) close(details);\n }\n}\n","export function nextFrame() {\n return new Promise(requestAnimationFrame);\n}\n\nexport function nextEventLoop() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\n\n/**\n * @param {HTMLElement} transitionElement\n * @returns {Promise<void>}\n * @example\n * async open() {\n * await waitForTransition(myElement);\n * // do something\n * }\n */\nexport function waitForTransition(transitionElement) {\n const durationPadding = 5;\n const duration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n\n const handler = ({ target }) => {\n if (target !== transitionElement) return;\n\n called = true;\n transitionElement.removeEventListener('transitionend', handler);\n };\n\n transitionElement.addEventListener('transitionend', handler);\n return new Promise((resolve) => {\n setTimeout(() => {\n if (!called) {\n transitionElement.dispatchEvent(new Event('transitionend'));\n }\n resolve();\n }, duration);\n });\n}\n\n/**\n * @param {HTMLElement} element\n * @returns {number}\n */\nexport function getTransitionDurationFromElement(element) {\n if (!element) return 0;\n\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) return 0;\n\n // eslint-disable-next-line prefer-destructuring\n transitionDuration = transitionDuration.split(',')[0];\n // eslint-disable-next-line prefer-destructuring\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * 1000;\n}\n","import { isEmpty } from '../../helpers/metal';\nimport { observeMutations } from '../../helpers/observers';\n\nexport default class CommandPaletteStack extends HTMLElement {\n connectedCallback() {\n this.activateNamedGroup = this.activateNamedGroup.bind(this);\n this.activateDefaultGroup = this.activateDefaultGroup.bind(this);\n\n this.addEventListener('command-palette:scopeUpdated', this.activateNamedGroup);\n this.addEventListener('command-palette:scopeRemoved', this.activateDefaultGroup);\n\n observeMutations(this.toggleDataEmpty.bind(this), this, {\n childList: true,\n subtree: true,\n attributeFilter: ['hidden'],\n });\n }\n\n disconnectedCallback() {\n this.removeEventListener('command-palette:scopeUpdated', this.activateNamedGroup);\n this.removeEventListener('command-palette:scopeRemoved', this.activateDefaultGroup);\n }\n\n /**\n * Hide all other groups except the active one\n */\n activateNamedGroup(event) {\n const object = JSON.parse(event.detail);\n if (isEmpty(object)) return;\n\n const { id } = object;\n this.groups.forEach((group) => {\n group.hidden = group.dataset.groupId !== id;\n });\n }\n\n /**\n * Hide all other groups except the homepage\n */\n activateDefaultGroup() {\n this.groups.forEach((group) => {\n group.hidden = !group.hasAttribute('data-cp-homepage');\n });\n }\n\n toggleDataEmpty() {\n const allHidden = this.groups.every((group) => group.hidden);\n this.toggleAttribute('data-empty', allHidden);\n }\n\n get groups() {\n return Array.from(this.querySelectorAll('command-palette-group'));\n }\n}\n","/**\n * @param {Function} callback\n * @param {HTMLElement} target\n * @param {MutationObserverInit} options\n */\n// eslint-disable-next-line import/prefer-default-export\nexport function observeMutations(callback, target, options) {\n const observer = new MutationObserver((mutations) => {\n observer.disconnect();\n Promise.resolve().then(start);\n callback.call(this, mutations);\n });\n\n function start() {\n if (target.isConnected) observer.observe(target, options);\n }\n\n start();\n}\n","import axios from 'axios';\n\n/* eslint-disable no-underscore-dangle */\nexport default class StrongPassword {\n constructor(options = {}) {\n this.resultContainer = options.container;\n this.password = null;\n this.confirmation = null;\n this.results = {};\n this.score = 0;\n this.disabled = false;\n }\n\n validate = async (password) => {\n if (this.disabled) return true;\n\n this.password = password;\n this.results = await this.result();\n if (this.resultContainer) {\n const existingResults = document.getElementById('strong_password_results');\n if (existingResults) existingResults.remove();\n this.resultContainer.insertAdjacentHTML('afterend', this.resultsHtml());\n }\n return this.valid();\n }\n\n matches = (confirmation) => {\n if (this.disabled) return true;\n\n this.confirmation = confirmation;\n const existingMsg = document.getElementById('confirmation');\n if (existingMsg) existingMsg.remove();\n if (this.confirmation.length === 0) return false;\n\n const results = document.getElementById('results_list');\n if (!results) return false;\n\n const li = document.createElement('li');\n li.id = 'confirmation';\n li.classList = this.confirmation === this.password ? 'text-success' : 'text-warning';\n results.append(li);\n li.innerHTML = this.confirmation === this.password ? '<i class=\"bi bi-check2\"></i> Passwords match' : '<i class=\"bi bi-x\"></i> Passwords do not match';\n return this.valid();\n }\n\n result = async () => {\n const strengthResponse = await this.sufficientStrength(this.password);\n this.score = strengthResponse.score;\n\n return {\n sufficientLength: {\n valid: this.sufficientLength(this.password),\n explanation: 'Between 12-128 characters',\n },\n strength: {\n valid: strengthResponse.value,\n explanation: strengthResponse.value ? 'Strong password' : 'Your password is not strong enough. Avoid common words. Try making it longer.',\n },\n };\n }\n\n resultsHtml = () => {\n let html = '<div id=\"strong_password_results\" class=\"mt-2\"><div class=\"d-flex flex-row w-100 mb-2\">';\n let color = this.score >= 1 ? 'success' : 'danger';\n if (color !== 'success') color = this.score < 1 && this.score >= 0.5 ? 'warning' : 'danger';\n const bar = '<div class=\"password-bar';\n for (let index = 0; index < 4; index += 1) {\n let styled;\n switch (index) {\n case 0:\n styled = this.score >= 0;\n break;\n case 1:\n styled = this.score >= 0.25;\n break;\n case 2:\n styled = this.score >= 0.5;\n break;\n case 3:\n styled = this.score >= 1;\n break;\n default:\n styled = false;\n break;\n }\n html += `${bar} ${styled ? `bg-${color}` : ''}\"></div>`;\n }\n html += '</div><ul id=\"results_list\" class=\"list-unstyled text-md\">';\n Object.keys(this.results).forEach((r) => {\n const o = this.results[r];\n const icon = o.valid ? '<i class=\"bi bi-check2\"></i>' : '<i class=\"bi bi-x\"></i>';\n html = `${html}<li class=\"text-${o.valid ? 'success' : 'warning'}\">${icon} <span>${o.explanation}</span></li>`;\n });\n return `${html}</ul></div>`;\n }\n\n sufficientLength = () => {\n const regex = /^.{12,128}/;\n return regex.test(this.password);\n }\n\n sufficientStrength = () => new Promise((resolve) => {\n axios.get('/api/v2/black-knight/ask', {\n params: { password: this.password },\n }).then((response) => {\n resolve(response.data);\n }).catch((error) => {\n if (error.code === 'ERR_BAD_REQUEST') {\n // The server throws a 422 on blank passwords. Clearly not a password of sufficient strength.\n resolve({ score: 0, value: false });\n } else {\n console.error(`Error during password strength check: ${error.message}`);\n // It should be rare that this throws an error. Disable the plugin and\n // show everything as valid to let the server side checking handle it.\n // console.error(`Error during password strength check: ${error.message}`);\n this.disabled = true;\n }\n });\n })\n\n valid = () => this.password === this.confirmation\n && this.score >= 1\n && !Object.keys(this.results).map((r) => r.valid).includes(false);\n}\n","import Vue from 'vue';\n\nexport const EventBus = new Vue();\n","import consumer from './consumer';\nimport RoomVisitorChannel from './room_visitor_channel';\nimport log from '../lib/logger';\n\nexport default class RoomChannel {\n constructor(options) {\n this.store = options.store; // Vuex store\n this.roomId = options.roomId;\n this.viewerId = options.viewerId || this.store.state.userId;\n this.channel = null;\n this.isResolved = null;\n }\n\n init = () =>\n new Promise((resolve) => {\n this.isResolved = resolve;\n this.createSubscription();\n });\n\n createSubscription = () => {\n const { roomId, viewerId, store, isResolved } = this;\n\n this.channel = consumer.subscriptions.create(\n {\n channel: 'RoomChannel',\n id: roomId,\n user_id: viewerId,\n },\n {\n connected() {\n // Called when the subscription is ready for use on the server\n isResolved();\n log.info('Room Channel connected');\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n log.info('Room Channel disconnected');\n },\n\n received: async (data) => {\n log.debug('Room Channel data received', data);\n if (data.type === 'new_visitor') {\n if (!data.visitor.id) return;\n if (data.visitor.id === store.state.visitor.id) return;\n log.info('Room visitor arrived');\n log.debug('Arrived visitor', data.visitor);\n store.dispatch('handleRoomVisitorArrival', { visitor: data.visitor, sendReply: true });\n } else if (data.type === 'help_requested') {\n log.info('Help requested');\n log.debug('Visitor requesting help', data.visitorId);\n store.commit('handleVisitorRequestingHelp', { visitorId: data.visitorId, requestedHelp: true });\n } else if (data.type === 'session_id') {\n if (store.state.visitor.eventId === data.eventId) {\n store.commit('setActiveSessionId', data.sessionId);\n // If the participant(patient/observer) joins earlier than the therapist, their `roomsSessionId` is null.\n // So when the therapist opens the session, we set their respective `roomsSessionId`.\n store.commit('updateVisitor', { roomsSessionId: data.sessionId });\n }\n } else if (data.visitor_left !== undefined) {\n log.info('Room visitor left');\n log.debug('Leaving visitor data', data.visitor_left);\n store.dispatch('handleRoomVisitorDeparture', data.visitor_left);\n } else if (data.type === 'visitor_left') {\n log.info('Room visitor left');\n log.debug('Leaving visitor data', data.visitor.id);\n store.dispatch('handleRoomVisitorDeparture', data.visitor.id);\n } else if (data.type === 'new_visitor_channel') {\n // Do nothing if it's already subscribed\n if (store.state.roomVisitorChannels[data.sentBy]) return;\n // If the room owner, need to connect to the RoomVisitorChannel\n // of the visitor sending the request\n if (store.state.visitor.id === store.state.ownerId) {\n const channel = new RoomVisitorChannel({ roomId: this.roomId, line: data.line, store });\n await channel.init();\n this.store.commit('storeVisitorChannel', {\n id: data.sentBy,\n line: channel.line,\n channel: channel.channel,\n });\n }\n } else if (data.type === 'reload_window') {\n if (store.state.visitor.id === data.id) {\n window.location.reload();\n }\n } else if (data.type === 'show_notification_modal') {\n if (store.state.visitor.id === data.id) {\n store.commit('setNotificationModalMsg', data.message);\n }\n } else if (data.type === 'welcome_reply' && data.visitor.id !== store.state.visitor.id) {\n store.dispatch('handleRoomVisitorArrival', { visitor: data.visitor, sendReply: false });\n if (store.state.ownerId === store.state.visitor.id) {\n store.commit('storeActiveVisitorAudioMessage', { visitorId: data.sentBy, base64Audio: data.audio });\n store.commit('storeActiveVisitorName', { visitorId: data.sentBy, enteredName: data.name });\n }\n } else if (data.type === 'end_session' && data.id !== store.state.visitor.id) {\n store.commit('layout/setCallRatingVisibility', true);\n }\n },\n }\n );\n };\n}\n","import consumer from './consumer';\nimport VisualScheduleChannelCreator from '../visual-schedules/lib/channel_creator';\nimport log from '../lib/logger';\n\nexport default class RoomSessionChannel {\n constructor(options) {\n this.store = options.store; // Vuex store\n this.roomsSessionId = options.roomsSessionId;\n this.viewerId = options.viewerId;\n this.channel = null;\n this.isResolved = null;\n }\n\n init = () =>\n new Promise((resolve) => {\n this.isResolved = resolve;\n this.createSubscription();\n });\n\n createSubscription = () => {\n const { roomsSessionId, viewerId, store, isResolved } = this;\n this.channel = consumer.subscriptions.create(\n {\n channel: 'RoomsSessionChannel',\n id: roomsSessionId,\n user_id: viewerId,\n },\n {\n connected() {\n // Called when the subscription is ready for use on the server\n isResolved();\n log.info('Room Session Channel connected');\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n log.info('Room Session Channel disconnected');\n },\n\n received(data) {\n // Called when there's incoming data on the websocket for this channel\n log.debug('Room Session Channel data received', data);\n // Ignore if this message is intended for only one participant\n if (data.for_viewer !== undefined && data.for_viewer !== null && viewerId !== data.for_viewer) return;\n\n const owner = store.state.visitor.id === store.state.ownerId;\n if (data.room_started === true) {\n store.commit('setRoomSessionStarted', true);\n } else if (data.meeting_mode !== undefined) {\n store.commit('admin/toggleMeeting', data.meeting_mode);\n } else if (data.participant_connected_to_session !== undefined) {\n if (owner) {\n // At this point we only want to update `primaryTherapistInSession`, because the participant hasn't yet\n // joined the session.\n store.state.roomSessionChannel.perform('therapist_entered_session', { syncState: false });\n }\n this.syncSupervisorState(data);\n } else if (data.participant_entered_session !== undefined) {\n if (owner) {\n // When the participant joins the session, we want to synchronize the state of the therapist with the\n // connected participant.\n this.sendCurrentSessionState(data.participant_entered_session);\n }\n store.dispatch('handleRoomsSessionVisitorArrival', { visitorId: data.participant_entered_session });\n } else if (data.therapist_entered_session !== undefined) {\n // When the participant is already there in the session and the therapist somehow gets disconnected or their\n // browser reloads and then joins the session again, we want to update the therapist's state to the\n // already existing participants.\n const { activeVisitors } = store.state;\n if (owner && data.sync_state && activeVisitors.length > 0) {\n activeVisitors.forEach((visitor) => {\n this.sendCurrentSessionState(visitor.id);\n });\n }\n store.dispatch('setTherapistSessionActiveState', true);\n this.syncSupervisorState(data);\n } else if (data.therapist_left_session !== undefined) {\n store.dispatch('setTherapistSessionActiveState', false);\n } else if (data.sync_whiteboard_for !== undefined) {\n if (owner) this.syncWhiteBoardCanvasObjects(data.sync_whiteboard_for);\n } else if (data.sync_resources_for !== undefined) {\n if (owner) this.syncResourceCanvasObjects(data.sync_resources_for);\n } else if (data.toast_errors !== undefined) {\n store.commit('admin/setToastErrors', data.toast_errors);\n } else if (data.action === 'set_demoing_participant') {\n const { id, name } = data;\n store.commit('demoMode/setDemoingParticipant', { id, name });\n } else if (data.whiteboard_status !== undefined) {\n store.commit('layout/setWhiteBoardMode', data.whiteboard_status);\n } else if (data.canvas_object !== undefined) {\n store.dispatch('canvas/addCanvasObject', data.canvas_object.object);\n } else if (data.canvas_object_update !== undefined) {\n // Do not update artists' state, it will mess up mouse position\n if (store.state.visitor.id === data.canvas_object_update.object.artistId) return;\n store.dispatch('canvas/updateCanvasObject', data.canvas_object_update.object);\n } else if (data.canvas_clear === true) {\n store.dispatch('canvas/clearCanvasObjects', data.canvasId);\n } else if (data.canvas_clear_object !== undefined) {\n store.commit('canvas/removeCanvasObject', data.canvas_clear_object);\n } else if (data.resource_canvas_lock_active !== undefined) {\n store.dispatch('resource/handleResourceCanvasLocked', {\n selectableState: data.resource_canvas_lock_active,\n canvasId: 'resource-canvas',\n });\n } else if (data.screenshare_status !== undefined && !owner) {\n store.commit('layout/setScreenshareMode', data.screenshare_status);\n } else if (data.resource_status !== undefined) {\n store.commit('layout/setResourceMode', data.resource_status);\n if (!data.resource_status) store.commit('canvas/resetCanvasPosition');\n } else if (data.resource_selection !== undefined) {\n store.dispatch('resource/handleResourceSelection', data);\n } else if (data.canvas_position !== undefined) {\n store.commit('canvas/updateCanvasPosition', { canvasId: data.canvasId, num: data.canvas_position });\n } else if (data.click_beacon_active !== undefined) {\n store.commit('sharingMedia/setClickBeaconActive', data.click_beacon_active);\n } else if (data.click_beacon_coordinates !== undefined) {\n const { participant } = data.click_beacon_coordinates;\n const { visitor, ownerId } = store.state;\n\n // If click beacon creator is current user, return\n if (participant.id === visitor.id) return;\n // If click beacon creator is not therapist, and if click beacon creator is not demoing, and if\n // current user is not demoing, and if current user is not owner, return\n if (\n participant.id !== ownerId &&\n !store.getters['demoMode/isDemoing'](participant.id) &&\n !store.getters['demoMode/isDemoing'](visitor.id) &&\n !owner\n )\n return;\n\n store.dispatch('sharingMedia/handleClickBeacon', data.click_beacon_coordinates);\n } else if (data.resource_interact_mode !== undefined) {\n store.commit('resource/setInteractMode', data.resource_interact_mode);\n } else if (data.settings !== undefined && owner) {\n if (data.settings.user) store.commit('settings/storeUserSettings', data.settings.user);\n if (data.settings.patient) store.commit('settings/updateSinglePatientSetting', data.settings.patient);\n if (data.settings.patients) store.commit('settings/storeAllPatientSettings', data.settings.patients);\n if (data.settings.organization)\n store.commit('settings/setOrganizationSettings', data.settings.organization);\n } else if (\n data.settings !== undefined &&\n data.settings.patient &&\n store.state.visitor.id === data.settings.patient.id\n ) {\n store.commit('settings/storePatientSettings', data.settings.patient);\n if (data.settings.organization)\n store.commit('settings/setOrganizationSettings', data.settings.organization);\n } else if (data.action === 'visual_schedule_initialized') {\n if (store.state.visitor.id !== data.id) {\n new VisualScheduleChannelCreator({ store, sessionId: data.sessionId }).createChannel();\n store.commit('setVisualSchedule', data.visualSchedule);\n store.commit('layout/toggleVisualSchedule', true);\n store.commit('setUserId', store.state.visitor.id);\n store.dispatch('startVisualScheduleSharing', { streamerId: data.streamerId });\n }\n } else if (data.action === 'visual_schedule_hidden') {\n if (store.state.visitor.id !== data.id) {\n store.commit('layout/toggleVisualSchedule', false);\n store.dispatch('stopVisualScheduleSharing');\n }\n } else if (data.action === 'room_timer') {\n if (data.duration !== undefined) {\n store.commit('roomTimer/setDurationSecs', data.duration);\n }\n if (data.timePassed !== undefined) {\n store.commit('roomTimer/setTimePassed', data.timePassed);\n }\n if (store.state.visitor.id !== data.id) {\n if (data.showTimer !== undefined) {\n store.commit('layout/setRoomTimerVisibility', data.showTimer);\n store.commit('roomTimer/setVisibleToParticipants', data.showTimer);\n }\n if (data.startTimer) {\n store.commit('roomTimer/play');\n } else if (data.startTimer !== undefined) store.commit('roomTimer/pause');\n if (data.clear) {\n store.commit('roomTimer/clear');\n }\n if (data.playSound !== undefined) {\n store.commit('roomTimer/setPlaySound', data.playSound);\n }\n }\n } else if (data.action === 'stream_management') {\n switch (data.type) {\n case 'mic':\n store.dispatch('janus/handleRemoteMic', data);\n break;\n\n case 'video':\n store.dispatch('janus/handleRemoteVideo', data);\n break;\n\n case 'remove':\n store.dispatch('janus/handleRemoteRemoval', data);\n break;\n default:\n break;\n }\n } else if (data.action === 'participant_admin') {\n let action = 'layout/handleRemoteVisibleArea';\n let payload;\n switch (data.type) {\n case 'whiteboard_active':\n action = 'sharingMedia/handleRemoteWhiteboardLock';\n payload = { data, canvasId: 'whiteboard-canvas' };\n break;\n case 'secondary_media_visible':\n payload = { data, mutation: 'setSecondaryMediaVisible', prop: 'secondaryMediaHidden' };\n break;\n case 'sidebar_active':\n payload = { data, mutation: 'toggleToolbar', prop: 'toolBarHidden' };\n break;\n case 'screen_cleared':\n payload = { data, mutation: 'toggleAllHidden', prop: 'screenCleared' };\n break;\n case 'participant_navigator_visible':\n payload = { data, mutation: 'setParticipantNavigatorVisible', prop: 'participantNavigatorHidden' };\n break;\n default:\n break;\n }\n store.dispatch(action, payload);\n } else if (data.action === 'spotlight_participant') {\n store.commit('layout/setSpotlightedParticipant', data.id);\n } else if (data.action === 'sync_supervisor_settings') {\n // We do not want to update the supervisor's state.\n // It causes double re-render of the component.\n if (store.state.visitor.id === data.visitor_id) return;\n store.commit('setSupervisorVisibility', data.supervisor_is_visible);\n }\n },\n\n sendCurrentSessionState(targetUserId) {\n const { state, getters } = store;\n const { activeSessionId, roomSessionChannel, layout, visualSchedule, sharingMedia, demoMode } = state;\n const { whiteBoardMode, resourceMode } = layout;\n // Therapist is active, but we don't want to synchronize the settings at this point because we already handle\n // the update at the parent level. Synchronizing here will result in an infinite loop.\n roomSessionChannel.perform('therapist_entered_session', { syncState: false });\n // Whiteboard\n if (whiteBoardMode) {\n roomSessionChannel.perform('start_whiteboard', { for_viewer: targetUserId });\n } else {\n roomSessionChannel.perform('end_whiteboard', { for_viewer: targetUserId });\n }\n // Resource library\n if (resourceMode) {\n roomSessionChannel.perform('start_resource', { for_viewer: targetUserId });\n roomSessionChannel.perform('select_resource', {\n id: state.resource.sharingResourceId,\n position: state.canvas.canvasPositions['resource-canvas'],\n for_viewer: targetUserId,\n });\n roomSessionChannel.perform('resource_interact_mode', {\n mode: state.resource.interactMode,\n for_viewer: targetUserId,\n });\n roomSessionChannel.perform('click_beacon_active', {\n status: state.sharingMedia.clickBeaconActive,\n for_viewer: targetUserId,\n });\n roomSessionChannel.perform('resource_canvas_lock_active', {\n locked: state.resource.resourceDrawingLocked,\n for_viewer: targetUserId,\n });\n } else {\n roomSessionChannel.perform('end_resource', { for_viewer: targetUserId });\n }\n // Click Beacon\n if (sharingMedia.clickBeaconActive) {\n roomSessionChannel.perform('click_beacon_active', { status: true, for_viewer: targetUserId });\n } else {\n roomSessionChannel.perform('click_beacon_active', { status: false, for_viewer: targetUserId });\n }\n // Visual Schedule\n if (getters.isVisualScheduleSharing) {\n roomSessionChannel.perform('visual_schedule_initialized', {\n id: state.visitor.id,\n sessionId: activeSessionId,\n visualSchedule,\n streamerId: state.visualScheduleSharing.streamerId,\n for_viewer: targetUserId,\n });\n } else {\n roomSessionChannel.perform('visual_schedule_hidden', {\n id: state.visitor.id,\n for_viewer: targetUserId,\n });\n }\n // Room Timer\n roomSessionChannel.perform('room_timer', {\n id: state.visitor.id,\n showTimer: state.roomTimer.visibleToParticipants,\n startTimer: state.roomTimer.running,\n playSound: state.roomTimer.playSound,\n duration: state.roomTimer.duration,\n timePassed: state.roomTimer.timePassed,\n for_viewer: targetUserId,\n });\n // Demoing participant\n if (demoMode.demoingParticipant.id) {\n const { id, name } = demoMode.demoingParticipant;\n roomSessionChannel.perform('set_demoing_participant', { id, name, for_viewer: targetUserId });\n }\n // Screenshare ?\n },\n\n syncSupervisorState(data) {\n const { state } = store;\n const { visitor, supervisors, ownerId, supervisorIsVisible, roomSessionChannel } = state;\n\n const supervisorIds = Array.from(supervisors, (s) => s.userId);\n if (!supervisorIds.includes(visitor.id)) return;\n if (supervisorIds.includes(data.participant_connected_to_session)) return;\n\n roomSessionChannel.perform('sync_supervisor_settings', {\n visitorId: visitor.id,\n supervisorIsVisible,\n for_viewer: data.therapist_entered_session ? ownerId : data.participant_connected_to_session,\n });\n },\n\n syncWhiteBoardCanvasObjects(targetUserId) {\n const { state } = store;\n const { roomSessionChannel, canvas } = state;\n const wbCanvas = canvas.canvases['whiteboard-canvas'];\n if (wbCanvas) {\n // Sync all the objects\n // eslint-disable-next-line no-underscore-dangle\n wbCanvas._objects.forEach((object) => {\n let jsonObj;\n const keys = ['artistId', 'id', 'sourcePath', 'perPixelTargetFind', 'canvasId'];\n // Convert to JSON\n if (object.sourcePath) {\n // item is svg\n jsonObj = object.toDatalessObject(keys);\n } else {\n // item is drawn path\n jsonObj = object.toJSON(keys);\n }\n if (!jsonObj.canvasId) jsonObj.canvasId = 'whiteboard-canvas';\n roomSessionChannel.perform('canvas_object', { object: jsonObj, for_viewer: targetUserId });\n });\n }\n },\n\n syncResourceCanvasObjects(targetUserId) {\n const { state } = store;\n const { roomSessionChannel, canvas } = state;\n const resourceCanvas = canvas.canvases['resource-canvas'];\n if (resourceCanvas) {\n // Sync all the objects\n // eslint-disable-next-line no-underscore-dangle\n resourceCanvas._objects.forEach((object) => {\n let jsonObj;\n const keys = ['artistId', 'id', 'sourcePath', 'perPixelTargetFind', 'canvasId', 'pageNumber'];\n // Convert to JSON\n if (object.sourcePath) {\n // item is svg\n jsonObj = object.toDatalessObject(keys);\n } else {\n // item is drawn path\n jsonObj = object.toJSON(keys);\n }\n if (!jsonObj.canvasId) jsonObj.canvasId = 'resource-canvas';\n roomSessionChannel.perform('canvas_object', { object: jsonObj, for_viewer: targetUserId });\n });\n }\n },\n }\n );\n };\n}\n","// eslint-disable-next-line import/prefer-default-export\nexport function onDropdownClose(dropdown) {\n $(dropdown).find('.selected').not('.active').removeClass('selected');\n}\n","// Selectively require necessary controllers for the front_pages\n\nimport { Application } from '@hotwired/stimulus';\nimport ScrollReveal from 'stimulus-scroll-reveal';\n\nimport FocusController from './focus_controller';\nimport LandingPageNavController from './landing_page_nav_controller';\nimport PopCardController from './pop_card_controller';\nimport PricingPageController from './pricing_page_controller';\nimport SideNavController from './side_nav_controller';\nimport ToastController from './toast_controller';\nimport ToggleSectionController from './toggle_section_controller';\nimport TrayCardController from './tray_card_controller';\nimport TrayNavController from './tray_nav_controller';\nimport CarouselController from './carousel_controller';\nimport SectionAnchorController from './section_anchor_controller';\n\nconst application = Application.start();\n\nwindow.Stimulus = application;\n\napplication.register('focus', FocusController);\napplication.register('pop-card', PopCardController);\napplication.register('pricing-page', PricingPageController);\napplication.register('landing-page-nav', LandingPageNavController);\napplication.register('scroll-reveal', ScrollReveal);\napplication.register('side-nav', SideNavController);\napplication.register('toast', ToastController);\napplication.register('toggle-section', ToggleSectionController);\napplication.register('tray-card', TrayCardController);\napplication.register('tray-nav', TrayNavController);\napplication.register('carousel', CarouselController);\napplication.register('section-anchor', SectionAnchorController);\n","// app/javascript/channels/notification_channel.js\n\nimport consumer from './consumer';\n\nconsumer.subscriptions.create('Noticed::NotificationChannel', {\n connected() {},\n\n disconnected() {},\n\n received(data) {\n const count = data.unread_count;\n const unreadCount = count > 9 ? '9+' : count;\n // Dispatch an event with unread count\n const event = new CustomEvent('notifications-unread-count', {\n detail: {\n unreadCount,\n },\n });\n window.dispatchEvent(event);\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/**\n * selectize.js (v0.12.6)\n * Copyright (c) 2013–2015 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\n/*jshint curly:false */\n\n/*jshint browser:true */\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['jquery', 'sifter', 'microplugin'], factory);\n } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n module.exports = factory(require('jquery'), require('sifter'), require('microplugin'));\n } else {\n root.Selectize = factory(root.jQuery, root.Sifter, root.MicroPlugin);\n }\n})(this, function ($, Sifter, MicroPlugin) {\n 'use strict';\n\n var highlight = function highlight($element, pattern) {\n if (typeof pattern === 'string' && !pattern.length) return;\n var regex = typeof pattern === 'string' ? new RegExp(pattern, 'i') : pattern;\n\n var highlight = function highlight(node) {\n var skip = 0; // Wrap matching part of text node with highlighting <span>, e.g.\n // Soccer -> <span class=\"highlight\">Soc</span>cer for regex = /soc/i\n\n if (node.nodeType === 3) {\n var pos = node.data.search(regex);\n\n if (pos >= 0 && node.data.length > 0) {\n var match = node.data.match(regex);\n var spannode = document.createElement('span');\n spannode.className = 'highlight';\n var middlebit = node.splitText(pos);\n var endbit = middlebit.splitText(match[0].length);\n var middleclone = middlebit.cloneNode(true);\n spannode.appendChild(middleclone);\n middlebit.parentNode.replaceChild(spannode, middlebit);\n skip = 1;\n }\n } // Recurse element node, looking for child text nodes to highlight, unless element \n // is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n else if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && (node.className !== 'highlight' || node.tagName !== 'SPAN')) {\n for (var i = 0; i < node.childNodes.length; ++i) {\n i += highlight(node.childNodes[i]);\n }\n }\n\n return skip;\n };\n\n return $element.each(function () {\n highlight(this);\n });\n };\n /**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with() and pass js strict mode\n */\n\n\n $.fn.removeHighlight = function () {\n return this.find(\"span.highlight\").each(function () {\n this.parentNode.firstChild.nodeName;\n var parent = this.parentNode;\n parent.replaceChild(this.firstChild, this);\n parent.normalize();\n }).end();\n };\n\n var MicroEvent = function MicroEvent() {};\n\n MicroEvent.prototype = {\n on: function on(event, fct) {\n this._events = this._events || {};\n this._events[event] = this._events[event] || [];\n\n this._events[event].push(fct);\n },\n off: function off(event, fct) {\n var n = arguments.length;\n if (n === 0) return delete this._events;\n if (n === 1) return delete this._events[event];\n this._events = this._events || {};\n if (event in this._events === false) return;\n\n this._events[event].splice(this._events[event].indexOf(fct), 1);\n },\n trigger: function trigger(event\n /* , args... */\n ) {\n this._events = this._events || {};\n if (event in this._events === false) return;\n\n for (var i = 0; i < this._events[event].length; i++) {\n this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\n }\n }\n };\n /**\n * Mixin will delegate all MicroEvent.js function in the destination object.\n *\n * - MicroEvent.mixin(Foobar) will make Foobar able to use MicroEvent\n *\n * @param {object} the object which will support MicroEvent\n */\n\n MicroEvent.mixin = function (destObject) {\n var props = ['on', 'off', 'trigger'];\n\n for (var i = 0; i < props.length; i++) {\n destObject.prototype[props[i]] = MicroEvent.prototype[props[i]];\n }\n };\n\n var IS_MAC = /Mac/.test(navigator.userAgent);\n var KEY_A = 65;\n var KEY_COMMA = 188;\n var KEY_RETURN = 13;\n var KEY_ESC = 27;\n var KEY_LEFT = 37;\n var KEY_UP = 38;\n var KEY_P = 80;\n var KEY_RIGHT = 39;\n var KEY_DOWN = 40;\n var KEY_N = 78;\n var KEY_BACKSPACE = 8;\n var KEY_DELETE = 46;\n var KEY_SHIFT = 16;\n var KEY_CMD = IS_MAC ? 91 : 17;\n var KEY_CTRL = IS_MAC ? 18 : 17;\n var KEY_TAB = 9;\n var TAG_SELECT = 1;\n var TAG_INPUT = 2; // for now, android support in general is too spotty to support validity\n\n var SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !!document.createElement('input').validity;\n\n var isset = function isset(object) {\n return typeof object !== 'undefined';\n };\n /**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n * 'str' -> 'str'\n * null -> ''\n * undefined -> ''\n * true -> '1'\n * false -> '0'\n * 0 -> '0'\n * 1 -> '1'\n *\n * @param {string} value\n * @returns {string|null}\n */\n\n\n var hash_key = function hash_key(value) {\n if (typeof value === 'undefined' || value === null) return null;\n if (typeof value === 'boolean') return value ? '1' : '0';\n return value + '';\n };\n /**\n * Escapes a string for use within HTML.\n *\n * @param {string} str\n * @returns {string}\n */\n\n\n var escape_html = function escape_html(str) {\n return (str + '').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"');\n };\n /**\n * Escapes \"$\" characters in replacement strings.\n *\n * @param {string} str\n * @returns {string}\n */\n\n\n var escape_replace = function escape_replace(str) {\n return (str + '').replace(/\\$/g, '$$$$');\n };\n\n var hook = {};\n /**\n * Wraps `method` on `self` so that `fn`\n * is invoked before the original method.\n *\n * @param {object} self\n * @param {string} method\n * @param {function} fn\n */\n\n hook.before = function (self, method, fn) {\n var original = self[method];\n\n self[method] = function () {\n fn.apply(self, arguments);\n return original.apply(self, arguments);\n };\n };\n /**\n * Wraps `method` on `self` so that `fn`\n * is invoked after the original method.\n *\n * @param {object} self\n * @param {string} method\n * @param {function} fn\n */\n\n\n hook.after = function (self, method, fn) {\n var original = self[method];\n\n self[method] = function () {\n var result = original.apply(self, arguments);\n fn.apply(self, arguments);\n return result;\n };\n };\n /**\n * Wraps `fn` so that it can only be invoked once.\n *\n * @param {function} fn\n * @returns {function}\n */\n\n\n var once = function once(fn) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n fn.apply(this, arguments);\n };\n };\n /**\n * Wraps `fn` so that it can only be called once\n * every `delay` milliseconds (invoked on the falling edge).\n *\n * @param {function} fn\n * @param {int} delay\n * @returns {function}\n */\n\n\n var debounce = function debounce(fn, delay) {\n var timeout;\n return function () {\n var self = this;\n var args = arguments;\n window.clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n fn.apply(self, args);\n }, delay);\n };\n };\n /**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n * @param {object} self\n * @param {array} types\n * @param {function} fn\n */\n\n\n var debounce_events = function debounce_events(self, types, fn) {\n var type;\n var trigger = self.trigger;\n var event_args = {}; // override trigger method\n\n self.trigger = function () {\n var type = arguments[0];\n\n if (types.indexOf(type) !== -1) {\n event_args[type] = arguments;\n } else {\n return trigger.apply(self, arguments);\n }\n }; // invoke provided function\n\n\n fn.apply(self, []);\n self.trigger = trigger; // trigger queued events\n\n for (type in event_args) {\n if (event_args.hasOwnProperty(type)) {\n trigger.apply(self, event_args[type]);\n }\n }\n };\n /**\n * A workaround for http://bugs.jquery.com/ticket/6696\n *\n * @param {object} $parent - Parent element to listen on.\n * @param {string} event - Event name.\n * @param {string} selector - Descendant selector to filter by.\n * @param {function} fn - Event handler.\n */\n\n\n var watchChildEvent = function watchChildEvent($parent, event, selector, fn) {\n $parent.on(event, selector, function (e) {\n var child = e.target;\n\n while (child && child.parentNode !== $parent[0]) {\n child = child.parentNode;\n }\n\n e.currentTarget = child;\n return fn.apply(this, [e]);\n });\n };\n /**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n * - start\n * - length\n *\n * @param {object} input\n * @returns {object}\n */\n\n\n var getSelection = function getSelection(input) {\n var result = {};\n\n if ('selectionStart' in input) {\n result.start = input.selectionStart;\n result.length = input.selectionEnd - result.start;\n } else if (document.selection) {\n input.focus();\n var sel = document.selection.createRange();\n var selLen = document.selection.createRange().text.length;\n sel.moveStart('character', -input.value.length);\n result.start = sel.text.length - selLen;\n result.length = selLen;\n }\n\n return result;\n };\n /**\n * Copies CSS properties from one element to another.\n *\n * @param {object} $from\n * @param {object} $to\n * @param {array} properties\n */\n\n\n var transferStyles = function transferStyles($from, $to, properties) {\n var i,\n n,\n styles = {};\n\n if (properties) {\n for (i = 0, n = properties.length; i < n; i++) {\n styles[properties[i]] = $from.css(properties[i]);\n }\n } else {\n styles = $from.css();\n }\n\n $to.css(styles);\n };\n /**\n * Measures the width of a string within a\n * parent element (in pixels).\n *\n * @param {string} str\n * @param {object} $parent\n * @returns {int}\n */\n\n\n var measureString = function measureString(str, $parent) {\n if (!str) {\n return 0;\n }\n\n if (!Selectize.$testInput) {\n Selectize.$testInput = $('<span />').css({\n position: 'absolute',\n top: -99999,\n left: -99999,\n width: 'auto',\n padding: 0,\n whiteSpace: 'pre'\n }).appendTo('body');\n }\n\n Selectize.$testInput.text(str);\n transferStyles($parent, Selectize.$testInput, ['letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform']);\n return Selectize.$testInput.width();\n };\n /**\n * Sets up an input to grow horizontally as the user\n * types. If the value is changed manually, you can\n * trigger the \"update\" handler to resize:\n *\n * $input.trigger('update');\n *\n * @param {object} $input\n */\n\n\n var autoGrow = function autoGrow($input) {\n var currentWidth = null;\n\n var update = function update(e, options) {\n var value, keyCode, printable, placeholder, width;\n var shift, character, selection;\n e = e || window.event || {};\n options = options || {};\n if (e.metaKey || e.altKey) return;\n if (!options.force && $input.data('grow') === false) return;\n value = $input.val();\n\n if (e.type && e.type.toLowerCase() === 'keydown') {\n keyCode = e.keyCode;\n printable = keyCode >= 48 && keyCode <= 57 || // 0-9\n keyCode >= 65 && keyCode <= 90 || // a-z\n keyCode >= 96 && keyCode <= 111 || // numpad 0-9, numeric operators\n keyCode >= 186 && keyCode <= 222 || // semicolon, equal, comma, dash, etc.\n keyCode === 32 // space\n ;\n\n if (keyCode === KEY_DELETE || keyCode === KEY_BACKSPACE) {\n selection = getSelection($input[0]);\n\n if (selection.length) {\n value = value.substring(0, selection.start) + value.substring(selection.start + selection.length);\n } else if (keyCode === KEY_BACKSPACE && selection.start) {\n value = value.substring(0, selection.start - 1) + value.substring(selection.start + 1);\n } else if (keyCode === KEY_DELETE && typeof selection.start !== 'undefined') {\n value = value.substring(0, selection.start) + value.substring(selection.start + 1);\n }\n } else if (printable) {\n shift = e.shiftKey;\n character = String.fromCharCode(e.keyCode);\n if (shift) character = character.toUpperCase();else character = character.toLowerCase();\n value += character;\n }\n }\n\n placeholder = $input.attr('placeholder');\n\n if (!value && placeholder) {\n value = placeholder;\n }\n\n width = measureString(value, $input) + 4;\n\n if (width !== currentWidth) {\n currentWidth = width;\n $input.width(width);\n $input.triggerHandler('resize');\n }\n };\n\n $input.on('keydown keyup update blur', update);\n update();\n };\n\n var domToString = function domToString(d) {\n var tmp = document.createElement('div');\n tmp.appendChild(d.cloneNode(true));\n return tmp.innerHTML;\n };\n\n var logError = function logError(message, options) {\n if (!options) options = {};\n var component = \"Selectize\";\n console.error(component + \": \" + message);\n\n if (options.explanation) {\n // console.group is undefined in <IE11\n if (console.group) console.group();\n console.error(options.explanation);\n if (console.group) console.groupEnd();\n }\n };\n\n var Selectize = function Selectize($input, settings) {\n var key,\n i,\n n,\n dir,\n input,\n self = this;\n input = $input[0];\n input.selectize = self; // detect rtl environment\n\n var computedStyle = window.getComputedStyle && window.getComputedStyle(input, null);\n dir = computedStyle ? computedStyle.getPropertyValue('direction') : input.currentStyle && input.currentStyle.direction;\n dir = dir || $input.parents('[dir]:first').attr('dir') || ''; // setup default state\n\n $.extend(self, {\n order: 0,\n settings: settings,\n $input: $input,\n tabIndex: $input.attr('tabindex') || '',\n tagType: input.tagName.toLowerCase() === 'select' ? TAG_SELECT : TAG_INPUT,\n rtl: /rtl/i.test(dir),\n eventNS: '.selectize' + ++Selectize.count,\n highlightedValue: null,\n isBlurring: false,\n isOpen: false,\n isDisabled: false,\n isRequired: $input.is('[required]'),\n isInvalid: false,\n isLocked: false,\n isFocused: false,\n isInputHidden: false,\n isSetup: false,\n isShiftDown: false,\n isCmdDown: false,\n isCtrlDown: false,\n ignoreFocus: false,\n ignoreBlur: false,\n ignoreHover: false,\n hasOptions: false,\n currentResults: null,\n lastValue: '',\n caretPos: 0,\n loading: 0,\n loadedSearches: {},\n $activeOption: null,\n $activeItems: [],\n optgroups: {},\n options: {},\n userOptions: {},\n items: [],\n renderCache: {},\n onSearchChange: settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)\n }); // search system\n\n self.sifter = new Sifter(this.options, {\n diacritics: settings.diacritics\n }); // build options table\n\n if (self.settings.options) {\n for (i = 0, n = self.settings.options.length; i < n; i++) {\n self.registerOption(self.settings.options[i]);\n }\n\n delete self.settings.options;\n } // build optgroup table\n\n\n if (self.settings.optgroups) {\n for (i = 0, n = self.settings.optgroups.length; i < n; i++) {\n self.registerOptionGroup(self.settings.optgroups[i]);\n }\n\n delete self.settings.optgroups;\n } // option-dependent defaults\n\n\n self.settings.mode = self.settings.mode || (self.settings.maxItems === 1 ? 'single' : 'multi');\n\n if (typeof self.settings.hideSelected !== 'boolean') {\n self.settings.hideSelected = self.settings.mode === 'multi';\n }\n\n self.initializePlugins(self.settings.plugins);\n self.setupCallbacks();\n self.setupTemplates();\n self.setup();\n }; // mixins\n // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n\n MicroEvent.mixin(Selectize);\n\n if (typeof MicroPlugin !== \"undefined\") {\n MicroPlugin.mixin(Selectize);\n } else {\n logError(\"Dependency MicroPlugin is missing\", {\n explanation: \"Make sure you either: (1) are using the \\\"standalone\\\" \" + \"version of Selectize, or (2) require MicroPlugin before you \" + \"load Selectize.\"\n });\n } // methods\n // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n\n $.extend(Selectize.prototype, {\n /**\n * Creates all elements and sets up event bindings.\n */\n setup: function setup() {\n var self = this;\n var settings = self.settings;\n var eventNS = self.eventNS;\n var $window = $(window);\n var $document = $(document);\n var $input = self.$input;\n var $wrapper;\n var $control;\n var $control_input;\n var $dropdown;\n var $dropdown_content;\n var $dropdown_parent;\n var inputMode;\n var timeout_blur;\n var timeout_focus;\n var classes;\n var classes_plugins;\n var inputId;\n inputMode = self.settings.mode;\n classes = $input.attr('class') || '';\n $wrapper = $('<div>').addClass(settings.wrapperClass).addClass(classes).addClass(inputMode);\n $control = $('<div>').addClass(settings.inputClass).addClass('items').appendTo($wrapper);\n $control_input = $('<input type=\"text\" autocomplete=\"off\" />').appendTo($control).attr('tabindex', $input.is(':disabled') ? '-1' : self.tabIndex);\n $dropdown_parent = $(settings.dropdownParent || $wrapper);\n $dropdown = $('<div>').addClass(settings.dropdownClass).addClass(inputMode).hide().appendTo($dropdown_parent);\n $dropdown_content = $('<div>').addClass(settings.dropdownContentClass).appendTo($dropdown);\n\n if (inputId = $input.attr('id')) {\n $control_input.attr('id', inputId + '-selectized');\n $(\"label[for='\" + inputId + \"']\").attr('for', inputId + '-selectized');\n }\n\n if (self.settings.copyClassesToDropdown) {\n $dropdown.addClass(classes);\n }\n\n $wrapper.css({\n width: $input[0].style.width\n });\n\n if (self.plugins.names.length) {\n classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n $wrapper.addClass(classes_plugins);\n $dropdown.addClass(classes_plugins);\n }\n\n if ((settings.maxItems === null || settings.maxItems > 1) && self.tagType === TAG_SELECT) {\n $input.attr('multiple', 'multiple');\n }\n\n if (self.settings.placeholder) {\n $control_input.attr('placeholder', settings.placeholder);\n } // if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\n\n if (!self.settings.splitOn && self.settings.delimiter) {\n var delimiterEscaped = self.settings.delimiter.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n self.settings.splitOn = new RegExp('\\\\s*' + delimiterEscaped + '+\\\\s*');\n }\n\n if ($input.attr('autocorrect')) {\n $control_input.attr('autocorrect', $input.attr('autocorrect'));\n }\n\n if ($input.attr('autocapitalize')) {\n $control_input.attr('autocapitalize', $input.attr('autocapitalize'));\n }\n\n $control_input[0].type = $input[0].type;\n self.$wrapper = $wrapper;\n self.$control = $control;\n self.$control_input = $control_input;\n self.$dropdown = $dropdown;\n self.$dropdown_content = $dropdown_content;\n $dropdown.on('mouseenter mousedown click', '[data-disabled]>[data-selectable]', function (e) {\n e.stopImmediatePropagation();\n });\n $dropdown.on('mouseenter', '[data-selectable]', function () {\n return self.onOptionHover.apply(self, arguments);\n });\n $dropdown.on('mousedown click', '[data-selectable]', function () {\n return self.onOptionSelect.apply(self, arguments);\n });\n watchChildEvent($control, 'mousedown', '*:not(input)', function () {\n return self.onItemSelect.apply(self, arguments);\n });\n autoGrow($control_input);\n $control.on({\n mousedown: function mousedown() {\n return self.onMouseDown.apply(self, arguments);\n },\n click: function click() {\n return self.onClick.apply(self, arguments);\n }\n });\n $control_input.on({\n mousedown: function mousedown(e) {\n e.stopPropagation();\n },\n keydown: function keydown() {\n return self.onKeyDown.apply(self, arguments);\n },\n keyup: function keyup() {\n return self.onKeyUp.apply(self, arguments);\n },\n keypress: function keypress() {\n return self.onKeyPress.apply(self, arguments);\n },\n resize: function resize() {\n self.positionDropdown.apply(self, []);\n },\n blur: function blur() {\n return self.onBlur.apply(self, arguments);\n },\n focus: function focus() {\n self.ignoreBlur = false;\n return self.onFocus.apply(self, arguments);\n },\n paste: function paste() {\n return self.onPaste.apply(self, arguments);\n }\n });\n $document.on('keydown' + eventNS, function (e) {\n self.isCmdDown = e[IS_MAC ? 'metaKey' : 'ctrlKey'];\n self.isCtrlDown = e[IS_MAC ? 'altKey' : 'ctrlKey'];\n self.isShiftDown = e.shiftKey;\n });\n $document.on('keyup' + eventNS, function (e) {\n if (e.keyCode === KEY_CTRL) self.isCtrlDown = false;\n if (e.keyCode === KEY_SHIFT) self.isShiftDown = false;\n if (e.keyCode === KEY_CMD) self.isCmdDown = false;\n });\n $document.on('mousedown' + eventNS, function (e) {\n if (self.isFocused) {\n // prevent events on the dropdown scrollbar from causing the control to blur\n if (e.target === self.$dropdown[0] || e.target.parentNode === self.$dropdown[0]) {\n return false;\n } // blur on click outside\n\n\n if (!self.$control.has(e.target).length && e.target !== self.$control[0]) {\n self.blur(e.target);\n }\n }\n });\n $window.on(['scroll' + eventNS, 'resize' + eventNS].join(' '), function () {\n if (self.isOpen) {\n self.positionDropdown.apply(self, arguments);\n }\n });\n $window.on('mousemove' + eventNS, function () {\n self.ignoreHover = false;\n }); // store original children and tab index so that they can be\n // restored when the destroy() method is called.\n\n this.revertSettings = {\n $children: $input.children().detach(),\n tabindex: $input.attr('tabindex')\n };\n $input.attr('tabindex', -1).hide().after(self.$wrapper);\n\n if ($.isArray(settings.items)) {\n self.setValue(settings.items);\n delete settings.items;\n } // feature detect for the validation API\n\n\n if (SUPPORTS_VALIDITY_API) {\n $input.on('invalid' + eventNS, function (e) {\n e.preventDefault();\n self.isInvalid = true;\n self.refreshState();\n });\n }\n\n self.updateOriginalInput();\n self.refreshItems();\n self.refreshState();\n self.updatePlaceholder();\n self.isSetup = true;\n\n if ($input.is(':disabled')) {\n self.disable();\n }\n\n self.on('change', this.onChange);\n $input.data('selectize', self);\n $input.addClass('selectized');\n self.trigger('initialize'); // preload options\n\n if (settings.preload === true) {\n self.onSearchChange('');\n }\n },\n\n /**\n * Sets up default rendering functions.\n */\n setupTemplates: function setupTemplates() {\n var self = this;\n var field_label = self.settings.labelField;\n var field_optgroup = self.settings.optgroupLabelField;\n var templates = {\n 'optgroup': function optgroup(data) {\n return '<div class=\"optgroup\">' + data.html + '</div>';\n },\n 'optgroup_header': function optgroup_header(data, escape) {\n return '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n },\n 'option': function option(data, escape) {\n return '<div class=\"option\">' + escape(data[field_label]) + '</div>';\n },\n 'item': function item(data, escape) {\n return '<div class=\"item\">' + escape(data[field_label]) + '</div>';\n },\n 'option_create': function option_create(data, escape) {\n return '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>…</div>';\n }\n };\n self.settings.render = $.extend({}, templates, self.settings.render);\n },\n\n /**\n * Maps fired events to callbacks provided\n * in the settings used when creating the control.\n */\n setupCallbacks: function setupCallbacks() {\n var key,\n fn,\n callbacks = {\n 'initialize': 'onInitialize',\n 'change': 'onChange',\n 'item_add': 'onItemAdd',\n 'item_remove': 'onItemRemove',\n 'clear': 'onClear',\n 'option_add': 'onOptionAdd',\n 'option_remove': 'onOptionRemove',\n 'option_clear': 'onOptionClear',\n 'optgroup_add': 'onOptionGroupAdd',\n 'optgroup_remove': 'onOptionGroupRemove',\n 'optgroup_clear': 'onOptionGroupClear',\n 'dropdown_open': 'onDropdownOpen',\n 'dropdown_close': 'onDropdownClose',\n 'type': 'onType',\n 'load': 'onLoad',\n 'focus': 'onFocus',\n 'blur': 'onBlur'\n };\n\n for (key in callbacks) {\n if (callbacks.hasOwnProperty(key)) {\n fn = this.settings[callbacks[key]];\n if (fn) this.on(key, fn);\n }\n }\n },\n\n /**\n * Triggered when the main control element\n * has a click event.\n *\n * @param {object} e\n * @return {boolean}\n */\n onClick: function onClick(e) {\n var self = this; // necessary for mobile webkit devices (manual focus triggering\n // is ignored unless invoked within a click event)\n // also necessary to reopen a dropdown that has been closed by\n // closeAfterSelect\n\n if (!self.isFocused || !self.isOpen) {\n self.focus();\n e.preventDefault();\n }\n },\n\n /**\n * Triggered when the main control element\n * has a mouse down event.\n *\n * @param {object} e\n * @return {boolean}\n */\n onMouseDown: function onMouseDown(e) {\n var self = this;\n var defaultPrevented = e.isDefaultPrevented();\n var $target = $(e.target);\n\n if (self.isFocused) {\n // retain focus by preventing native handling. if the\n // event target is the input it should not be modified.\n // otherwise, text selection within the input won't work.\n if (e.target !== self.$control_input[0]) {\n if (self.settings.mode === 'single') {\n // toggle dropdown\n self.isOpen ? self.close() : self.open();\n } else if (!defaultPrevented) {\n self.setActiveItem(null);\n }\n\n return false;\n }\n } else {\n // give control focus\n if (!defaultPrevented) {\n window.setTimeout(function () {\n self.focus();\n }, 0);\n }\n }\n },\n\n /**\n * Triggered when the value of the control has been changed.\n * This should propagate the event to the original DOM\n * input / select element.\n */\n onChange: function onChange() {\n this.$input.trigger('change');\n },\n\n /**\n * Triggered on <input> paste.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onPaste: function onPaste(e) {\n var self = this;\n\n if (self.isFull() || self.isInputHidden || self.isLocked) {\n e.preventDefault();\n return;\n } // If a regex or string is included, this will split the pasted\n // input and create Items for each separate value\n\n\n if (self.settings.splitOn) {\n // Wait for pasted text to be recognized in value\n setTimeout(function () {\n var pastedText = self.$control_input.val();\n\n if (!pastedText.match(self.settings.splitOn)) {\n return;\n }\n\n var splitInput = $.trim(pastedText).split(self.settings.splitOn);\n\n for (var i = 0, n = splitInput.length; i < n; i++) {\n self.createItem(splitInput[i]);\n }\n }, 0);\n }\n },\n\n /**\n * Triggered on <input> keypress.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onKeyPress: function onKeyPress(e) {\n if (this.isLocked) return e && e.preventDefault();\n var character = String.fromCharCode(e.keyCode || e.which);\n\n if (this.settings.create && this.settings.mode === 'multi' && character === this.settings.delimiter) {\n this.createItem();\n e.preventDefault();\n return false;\n }\n },\n\n /**\n * Triggered on <input> keydown.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onKeyDown: function onKeyDown(e) {\n var isInput = e.target === this.$control_input[0];\n var self = this;\n\n if (self.isLocked) {\n if (e.keyCode !== KEY_TAB) {\n e.preventDefault();\n }\n\n return;\n }\n\n switch (e.keyCode) {\n case KEY_A:\n if (self.isCmdDown) {\n self.selectAll();\n return;\n }\n\n break;\n\n case KEY_ESC:\n if (self.isOpen) {\n e.preventDefault();\n e.stopPropagation();\n self.close();\n }\n\n return;\n\n case KEY_N:\n if (!e.ctrlKey || e.altKey) break;\n\n case KEY_DOWN:\n if (!self.isOpen && self.hasOptions) {\n self.open();\n } else if (self.$activeOption) {\n self.ignoreHover = true;\n var $next = self.getAdjacentOption(self.$activeOption, 1);\n if ($next.length) self.setActiveOption($next, true, true);\n }\n\n e.preventDefault();\n return;\n\n case KEY_P:\n if (!e.ctrlKey || e.altKey) break;\n\n case KEY_UP:\n if (self.$activeOption) {\n self.ignoreHover = true;\n var $prev = self.getAdjacentOption(self.$activeOption, -1);\n if ($prev.length) self.setActiveOption($prev, true, true);\n }\n\n e.preventDefault();\n return;\n\n case KEY_RETURN:\n if (self.isOpen && self.$activeOption) {\n self.onOptionSelect({\n currentTarget: self.$activeOption\n });\n e.preventDefault();\n }\n\n return;\n\n case KEY_LEFT:\n self.advanceSelection(-1, e);\n return;\n\n case KEY_RIGHT:\n self.advanceSelection(1, e);\n return;\n\n case KEY_TAB:\n if (self.settings.selectOnTab && self.isOpen && self.$activeOption) {\n self.onOptionSelect({\n currentTarget: self.$activeOption\n }); // Default behaviour is to jump to the next field, we only want this\n // if the current field doesn't accept any more entries\n\n if (!self.isFull()) {\n e.preventDefault();\n }\n }\n\n if (self.settings.create && self.createItem()) {\n e.preventDefault();\n }\n\n return;\n\n case KEY_BACKSPACE:\n case KEY_DELETE:\n self.deleteSelection(e);\n return;\n }\n\n if ((self.isFull() || self.isInputHidden) && !(IS_MAC ? e.metaKey : e.ctrlKey)) {\n e.preventDefault();\n return;\n }\n },\n\n /**\n * Triggered on <input> keyup.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onKeyUp: function onKeyUp(e) {\n var self = this;\n if (self.isLocked) return e && e.preventDefault();\n var value = self.$control_input.val() || '';\n\n if (self.lastValue !== value) {\n self.lastValue = value;\n self.onSearchChange(value);\n self.refreshOptions();\n self.trigger('type', value);\n }\n },\n\n /**\n * Invokes the user-provide option provider / loader.\n *\n * Note: this function is debounced in the Selectize\n * constructor (by `settings.loadThrottle` milliseconds)\n *\n * @param {string} value\n */\n onSearchChange: function onSearchChange(value) {\n var self = this;\n var fn = self.settings.load;\n if (!fn) return;\n if (self.loadedSearches.hasOwnProperty(value)) return;\n self.loadedSearches[value] = true;\n self.load(function (callback) {\n fn.apply(self, [value, callback]);\n });\n },\n\n /**\n * Triggered on <input> focus.\n *\n * @param {object} e (optional)\n * @returns {boolean}\n */\n onFocus: function onFocus(e) {\n var self = this;\n var wasFocused = self.isFocused;\n\n if (self.isDisabled) {\n self.blur();\n e && e.preventDefault();\n return false;\n }\n\n if (self.ignoreFocus) return;\n self.isFocused = true;\n if (self.settings.preload === 'focus') self.onSearchChange('');\n if (!wasFocused) self.trigger('focus');\n\n if (!self.$activeItems.length) {\n self.showInput();\n self.setActiveItem(null);\n self.refreshOptions(!!self.settings.openOnFocus);\n }\n\n self.refreshState();\n },\n\n /**\n * Triggered on <input> blur.\n *\n * @param {object} e\n * @param {Element} dest\n */\n onBlur: function onBlur(e, dest) {\n var self = this;\n if (!self.isFocused) return;\n self.isFocused = false;\n\n if (self.ignoreFocus) {\n return;\n } else if (!self.ignoreBlur && document.activeElement === self.$dropdown_content[0]) {\n // necessary to prevent IE closing the dropdown when the scrollbar is clicked\n self.ignoreBlur = true;\n self.onFocus(e);\n return;\n }\n\n var deactivate = function deactivate() {\n self.close();\n self.setTextboxValue('');\n self.setActiveItem(null);\n self.setActiveOption(null);\n self.setCaret(self.items.length);\n self.refreshState(); // IE11 bug: element still marked as active\n\n dest && dest.focus && dest.focus();\n self.isBlurring = false;\n self.ignoreFocus = false;\n self.trigger('blur');\n };\n\n self.isBlurring = true;\n self.ignoreFocus = true;\n\n if (self.settings.create && self.settings.createOnBlur) {\n self.createItem(null, false, deactivate);\n } else {\n deactivate();\n }\n },\n\n /**\n * Triggered when the user rolls over\n * an option in the autocomplete dropdown menu.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onOptionHover: function onOptionHover(e) {\n if (this.ignoreHover) return;\n this.setActiveOption(e.currentTarget, false);\n },\n\n /**\n * Triggered when the user clicks on an option\n * in the autocomplete dropdown menu.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onOptionSelect: function onOptionSelect(e) {\n var value,\n $target,\n $option,\n self = this;\n\n if (e.preventDefault) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n $target = $(e.currentTarget);\n\n if ($target.hasClass('create')) {\n self.createItem(null, function () {\n if (self.settings.closeAfterSelect) {\n self.close();\n }\n });\n } else {\n value = $target.attr('data-value');\n\n if (typeof value !== 'undefined') {\n self.lastQuery = null;\n self.setTextboxValue('');\n self.addItem(value);\n\n if (self.settings.closeAfterSelect) {\n self.close();\n } else if (!self.settings.hideSelected && e.type && /mouse/.test(e.type)) {\n self.setActiveOption(self.getOption(value));\n }\n }\n }\n },\n\n /**\n * Triggered when the user clicks on an item\n * that has been selected.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onItemSelect: function onItemSelect(e) {\n var self = this;\n if (self.isLocked) return;\n\n if (self.settings.mode === 'multi') {\n e.preventDefault();\n self.setActiveItem(e.currentTarget, e);\n }\n },\n\n /**\n * Invokes the provided method that provides\n * results to a callback---which are then added\n * as options to the control.\n *\n * @param {function} fn\n */\n load: function load(fn) {\n var self = this;\n var $wrapper = self.$wrapper.addClass(self.settings.loadingClass);\n self.loading++;\n fn.apply(self, [function (results) {\n self.loading = Math.max(self.loading - 1, 0);\n\n if (results && results.length) {\n self.addOption(results);\n self.refreshOptions(self.isFocused && !self.isInputHidden);\n }\n\n if (!self.loading) {\n $wrapper.removeClass(self.settings.loadingClass);\n }\n\n self.trigger('load', results);\n }]);\n },\n\n /**\n * Sets the input field of the control to the specified value.\n *\n * @param {string} value\n */\n setTextboxValue: function setTextboxValue(value) {\n var $input = this.$control_input;\n var changed = $input.val() !== value;\n\n if (changed) {\n $input.val(value).triggerHandler('update');\n this.lastValue = value;\n }\n },\n\n /**\n * Returns the value of the control. If multiple items\n * can be selected (e.g. <select multiple>), this returns\n * an array. If only one item can be selected, this\n * returns a string.\n *\n * @returns {mixed}\n */\n getValue: function getValue() {\n if (this.tagType === TAG_SELECT && this.$input.attr('multiple')) {\n return this.items;\n } else {\n return this.items.join(this.settings.delimiter);\n }\n },\n\n /**\n * Resets the selected items to the given value.\n *\n * @param {mixed} value\n */\n setValue: function setValue(value, silent) {\n var events = silent ? [] : ['change'];\n debounce_events(this, events, function () {\n this.clear(silent);\n this.addItems(value, silent);\n });\n },\n\n /**\n * Sets the selected item.\n *\n * @param {object} $item\n * @param {object} e (optional)\n */\n setActiveItem: function setActiveItem($item, e) {\n var self = this;\n var eventName;\n var i, idx, begin, end, item, swap;\n var $last;\n if (self.settings.mode === 'single') return;\n $item = $($item); // clear the active selection\n\n if (!$item.length) {\n $(self.$activeItems).removeClass('active');\n self.$activeItems = [];\n\n if (self.isFocused) {\n self.showInput();\n }\n\n return;\n } // modify selection\n\n\n eventName = e && e.type.toLowerCase();\n\n if (eventName === 'mousedown' && self.isShiftDown && self.$activeItems.length) {\n $last = self.$control.children('.active:last');\n begin = Array.prototype.indexOf.apply(self.$control[0].childNodes, [$last[0]]);\n end = Array.prototype.indexOf.apply(self.$control[0].childNodes, [$item[0]]);\n\n if (begin > end) {\n swap = begin;\n begin = end;\n end = swap;\n }\n\n for (i = begin; i <= end; i++) {\n item = self.$control[0].childNodes[i];\n\n if (self.$activeItems.indexOf(item) === -1) {\n $(item).addClass('active');\n self.$activeItems.push(item);\n }\n }\n\n e.preventDefault();\n } else if (eventName === 'mousedown' && self.isCtrlDown || eventName === 'keydown' && this.isShiftDown) {\n if ($item.hasClass('active')) {\n idx = self.$activeItems.indexOf($item[0]);\n self.$activeItems.splice(idx, 1);\n $item.removeClass('active');\n } else {\n self.$activeItems.push($item.addClass('active')[0]);\n }\n } else {\n $(self.$activeItems).removeClass('active');\n self.$activeItems = [$item.addClass('active')[0]];\n } // ensure control has focus\n\n\n self.hideInput();\n\n if (!this.isFocused) {\n self.focus();\n }\n },\n\n /**\n * Sets the selected item in the dropdown menu\n * of available options.\n *\n * @param {object} $object\n * @param {boolean} scroll\n * @param {boolean} animate\n */\n setActiveOption: function setActiveOption($option, scroll, animate) {\n var height_menu, height_item, y;\n var scroll_top, scroll_bottom;\n var self = this;\n if (self.$activeOption) self.$activeOption.removeClass('active');\n self.$activeOption = null;\n $option = $($option);\n if (!$option.length) return;\n self.$activeOption = $option.addClass('active');\n\n if (scroll || !isset(scroll)) {\n height_menu = self.$dropdown_content.height();\n height_item = self.$activeOption.outerHeight(true);\n scroll = self.$dropdown_content.scrollTop() || 0;\n y = self.$activeOption.offset().top - self.$dropdown_content.offset().top + scroll;\n scroll_top = y;\n scroll_bottom = y - height_menu + height_item;\n\n if (y + height_item > height_menu + scroll) {\n self.$dropdown_content.stop().animate({\n scrollTop: scroll_bottom\n }, animate ? self.settings.scrollDuration : 0);\n } else if (y < scroll) {\n self.$dropdown_content.stop().animate({\n scrollTop: scroll_top\n }, animate ? self.settings.scrollDuration : 0);\n }\n }\n },\n\n /**\n * Selects all items (CTRL + A).\n */\n selectAll: function selectAll() {\n var self = this;\n if (self.settings.mode === 'single') return;\n self.$activeItems = Array.prototype.slice.apply(self.$control.children(':not(input)').addClass('active'));\n\n if (self.$activeItems.length) {\n self.hideInput();\n self.close();\n }\n\n self.focus();\n },\n\n /**\n * Hides the input element out of view, while\n * retaining its focus.\n */\n hideInput: function hideInput() {\n var self = this;\n self.setTextboxValue('');\n self.$control_input.css({\n opacity: 0,\n position: 'absolute',\n left: self.rtl ? 10000 : -10000\n });\n self.isInputHidden = true;\n },\n\n /**\n * Restores input visibility.\n */\n showInput: function showInput() {\n this.$control_input.css({\n opacity: 1,\n position: 'relative',\n left: 0\n });\n this.isInputHidden = false;\n },\n\n /**\n * Gives the control focus.\n */\n focus: function focus() {\n var self = this;\n if (self.isDisabled) return;\n self.ignoreFocus = true;\n self.$control_input[0].focus();\n window.setTimeout(function () {\n self.ignoreFocus = false;\n self.onFocus();\n }, 0);\n },\n\n /**\n * Forces the control out of focus.\n *\n * @param {Element} dest\n */\n blur: function blur(dest) {\n this.$control_input[0].blur();\n this.onBlur(null, dest);\n },\n\n /**\n * Returns a function that scores an object\n * to show how good of a match it is to the\n * provided query.\n *\n * @param {string} query\n * @param {object} options\n * @return {function}\n */\n getScoreFunction: function getScoreFunction(query) {\n return this.sifter.getScoreFunction(query, this.getSearchOptions());\n },\n\n /**\n * Returns search options for sifter (the system\n * for scoring and sorting results).\n *\n * @see https://github.com/brianreavis/sifter.js\n * @return {object}\n */\n getSearchOptions: function getSearchOptions() {\n var settings = this.settings;\n var sort = settings.sortField;\n\n if (typeof sort === 'string') {\n sort = [{\n field: sort\n }];\n }\n\n return {\n fields: settings.searchField,\n conjunction: settings.searchConjunction,\n sort: sort,\n nesting: settings.nesting\n };\n },\n\n /**\n * Searches through available options and returns\n * a sorted array of matches.\n *\n * Returns an object containing:\n *\n * - query {string}\n * - tokens {array}\n * - total {int}\n * - items {array}\n *\n * @param {string} query\n * @returns {object}\n */\n search: function search(query) {\n var i, value, score, result, calculateScore;\n var self = this;\n var settings = self.settings;\n var options = this.getSearchOptions(); // validate user-provided result scoring function\n\n if (settings.score) {\n calculateScore = self.settings.score.apply(this, [query]);\n\n if (typeof calculateScore !== 'function') {\n throw new Error('Selectize \"score\" setting must be a function that returns a function');\n }\n } // perform search\n\n\n if (query !== self.lastQuery) {\n self.lastQuery = query;\n result = self.sifter.search(query, $.extend(options, {\n score: calculateScore\n }));\n self.currentResults = result;\n } else {\n result = $.extend(true, {}, self.currentResults);\n } // filter out selected items\n\n\n if (settings.hideSelected) {\n for (i = result.items.length - 1; i >= 0; i--) {\n if (self.items.indexOf(hash_key(result.items[i].id)) !== -1) {\n result.items.splice(i, 1);\n }\n }\n }\n\n return result;\n },\n\n /**\n * Refreshes the list of available options shown\n * in the autocomplete dropdown menu.\n *\n * @param {boolean} triggerDropdown\n */\n refreshOptions: function refreshOptions(triggerDropdown) {\n var i, j, k, n, groups, groups_order, option, option_html, optgroup, optgroups, html, html_children, has_create_option;\n var $active, $active_before, $create;\n\n if (typeof triggerDropdown === 'undefined') {\n triggerDropdown = true;\n }\n\n var self = this;\n var query = $.trim(self.$control_input.val());\n var results = self.search(query);\n var $dropdown_content = self.$dropdown_content;\n var active_before = self.$activeOption && hash_key(self.$activeOption.attr('data-value')); // build markup\n\n n = results.items.length;\n\n if (typeof self.settings.maxOptions === 'number') {\n n = Math.min(n, self.settings.maxOptions);\n } // render and group available options individually\n\n\n groups = {};\n groups_order = [];\n\n for (i = 0; i < n; i++) {\n option = self.options[results.items[i].id];\n option_html = self.render('option', option);\n optgroup = option[self.settings.optgroupField] || '';\n optgroups = $.isArray(optgroup) ? optgroup : [optgroup];\n\n for (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n optgroup = optgroups[j];\n\n if (!self.optgroups.hasOwnProperty(optgroup)) {\n optgroup = '';\n }\n\n if (!groups.hasOwnProperty(optgroup)) {\n groups[optgroup] = document.createDocumentFragment();\n groups_order.push(optgroup);\n }\n\n groups[optgroup].appendChild(option_html);\n }\n } // sort optgroups\n\n\n if (this.settings.lockOptgroupOrder) {\n groups_order.sort(function (a, b) {\n var a_order = self.optgroups[a].$order || 0;\n var b_order = self.optgroups[b].$order || 0;\n return a_order - b_order;\n });\n } // render optgroup headers & join groups\n\n\n html = document.createDocumentFragment();\n\n for (i = 0, n = groups_order.length; i < n; i++) {\n optgroup = groups_order[i];\n\n if (self.optgroups.hasOwnProperty(optgroup) && groups[optgroup].childNodes.length) {\n // render the optgroup header and options within it,\n // then pass it to the wrapper template\n html_children = document.createDocumentFragment();\n html_children.appendChild(self.render('optgroup_header', self.optgroups[optgroup]));\n html_children.appendChild(groups[optgroup]);\n html.appendChild(self.render('optgroup', $.extend({}, self.optgroups[optgroup], {\n html: domToString(html_children),\n dom: html_children\n })));\n } else {\n html.appendChild(groups[optgroup]);\n }\n }\n\n $dropdown_content.html(html); // highlight matching terms inline\n\n if (self.settings.highlight) {\n $dropdown_content.removeHighlight();\n\n if (results.query.length && results.tokens.length) {\n for (i = 0, n = results.tokens.length; i < n; i++) {\n highlight($dropdown_content, results.tokens[i].regex);\n }\n }\n } // add \"selected\" class to selected options\n\n\n if (!self.settings.hideSelected) {\n for (i = 0, n = self.items.length; i < n; i++) {\n self.getOption(self.items[i]).addClass('selected');\n }\n } // add create option\n\n\n has_create_option = self.canCreate(query);\n\n if (has_create_option) {\n $dropdown_content.prepend(self.render('option_create', {\n input: query\n }));\n $create = $($dropdown_content[0].childNodes[0]);\n } // activate\n\n\n self.hasOptions = results.items.length > 0 || has_create_option;\n\n if (self.hasOptions) {\n if (results.items.length > 0) {\n $active_before = active_before && self.getOption(active_before);\n\n if ($active_before && $active_before.length) {\n $active = $active_before;\n } else if (self.settings.mode === 'single' && self.items.length) {\n $active = self.getOption(self.items[0]);\n }\n\n if (!$active || !$active.length) {\n if ($create && !self.settings.addPrecedence) {\n $active = self.getAdjacentOption($create, 1);\n } else {\n $active = $dropdown_content.find('[data-selectable]:first');\n }\n }\n } else {\n $active = $create;\n }\n\n self.setActiveOption($active);\n\n if (triggerDropdown && !self.isOpen) {\n self.open();\n }\n } else {\n self.setActiveOption(null);\n\n if (triggerDropdown && self.isOpen) {\n self.close();\n }\n }\n },\n\n /**\n * Adds an available option. If it already exists,\n * nothing will happen. Note: this does not refresh\n * the options list dropdown (use `refreshOptions`\n * for that).\n *\n * Usage:\n *\n * this.addOption(data)\n *\n * @param {object|array} data\n */\n addOption: function addOption(data) {\n var i,\n n,\n value,\n self = this;\n\n if ($.isArray(data)) {\n for (i = 0, n = data.length; i < n; i++) {\n self.addOption(data[i]);\n }\n\n return;\n }\n\n if (value = self.registerOption(data)) {\n self.userOptions[value] = true;\n self.lastQuery = null;\n self.trigger('option_add', value, data);\n }\n },\n\n /**\n * Registers an option to the pool of options.\n *\n * @param {object} data\n * @return {boolean|string}\n */\n registerOption: function registerOption(data) {\n var key = hash_key(data[this.settings.valueField]);\n if (typeof key === 'undefined' || key === null || this.options.hasOwnProperty(key)) return false;\n data.$order = data.$order || ++this.order;\n this.options[key] = data;\n return key;\n },\n\n /**\n * Registers an option group to the pool of option groups.\n *\n * @param {object} data\n * @return {boolean|string}\n */\n registerOptionGroup: function registerOptionGroup(data) {\n var key = hash_key(data[this.settings.optgroupValueField]);\n if (!key) return false;\n data.$order = data.$order || ++this.order;\n this.optgroups[key] = data;\n return key;\n },\n\n /**\n * Registers a new optgroup for options\n * to be bucketed into.\n *\n * @param {string} id\n * @param {object} data\n */\n addOptionGroup: function addOptionGroup(id, data) {\n data[this.settings.optgroupValueField] = id;\n\n if (id = this.registerOptionGroup(data)) {\n this.trigger('optgroup_add', id, data);\n }\n },\n\n /**\n * Removes an existing option group.\n *\n * @param {string} id\n */\n removeOptionGroup: function removeOptionGroup(id) {\n if (this.optgroups.hasOwnProperty(id)) {\n delete this.optgroups[id];\n this.renderCache = {};\n this.trigger('optgroup_remove', id);\n }\n },\n\n /**\n * Clears all existing option groups.\n */\n clearOptionGroups: function clearOptionGroups() {\n this.optgroups = {};\n this.renderCache = {};\n this.trigger('optgroup_clear');\n },\n\n /**\n * Updates an option available for selection. If\n * it is visible in the selected items or options\n * dropdown, it will be re-rendered automatically.\n *\n * @param {string} value\n * @param {object} data\n */\n updateOption: function updateOption(value, data) {\n var self = this;\n var $item, $item_new;\n var value_new, index_item, cache_items, cache_options, order_old;\n value = hash_key(value);\n value_new = hash_key(data[self.settings.valueField]); // sanity checks\n\n if (value === null) return;\n if (!self.options.hasOwnProperty(value)) return;\n if (typeof value_new !== 'string') throw new Error('Value must be set in option data');\n order_old = self.options[value].$order; // update references\n\n if (value_new !== value) {\n delete self.options[value];\n index_item = self.items.indexOf(value);\n\n if (index_item !== -1) {\n self.items.splice(index_item, 1, value_new);\n }\n }\n\n data.$order = data.$order || order_old;\n self.options[value_new] = data; // invalidate render cache\n\n cache_items = self.renderCache['item'];\n cache_options = self.renderCache['option'];\n\n if (cache_items) {\n delete cache_items[value];\n delete cache_items[value_new];\n }\n\n if (cache_options) {\n delete cache_options[value];\n delete cache_options[value_new];\n } // update the item if it's selected\n\n\n if (self.items.indexOf(value_new) !== -1) {\n $item = self.getItem(value);\n $item_new = $(self.render('item', data));\n if ($item.hasClass('active')) $item_new.addClass('active');\n $item.replaceWith($item_new);\n } // invalidate last query because we might have updated the sortField\n\n\n self.lastQuery = null; // update dropdown contents\n\n if (self.isOpen) {\n self.refreshOptions(false);\n }\n },\n\n /**\n * Removes a single option.\n *\n * @param {string} value\n * @param {boolean} silent\n */\n removeOption: function removeOption(value, silent) {\n var self = this;\n value = hash_key(value);\n var cache_items = self.renderCache['item'];\n var cache_options = self.renderCache['option'];\n if (cache_items) delete cache_items[value];\n if (cache_options) delete cache_options[value];\n delete self.userOptions[value];\n delete self.options[value];\n self.lastQuery = null;\n self.trigger('option_remove', value);\n self.removeItem(value, silent);\n },\n\n /**\n * Clears all options.\n */\n clearOptions: function clearOptions() {\n var self = this;\n self.loadedSearches = {};\n self.userOptions = {};\n self.renderCache = {};\n var options = self.options;\n $.each(self.options, function (key, value) {\n if (self.items.indexOf(key) == -1) {\n delete options[key];\n }\n });\n self.options = self.sifter.items = options;\n self.lastQuery = null;\n self.trigger('option_clear');\n },\n\n /**\n * Returns the jQuery element of the option\n * matching the given value.\n *\n * @param {string} value\n * @returns {object}\n */\n getOption: function getOption(value) {\n return this.getElementWithValue(value, this.$dropdown_content.find('[data-selectable]'));\n },\n\n /**\n * Returns the jQuery element of the next or\n * previous selectable option.\n *\n * @param {object} $option\n * @param {int} direction can be 1 for next or -1 for previous\n * @return {object}\n */\n getAdjacentOption: function getAdjacentOption($option, direction) {\n var $options = this.$dropdown.find('[data-selectable]');\n var index = $options.index($option) + direction;\n return index >= 0 && index < $options.length ? $options.eq(index) : $();\n },\n\n /**\n * Finds the first element with a \"data-value\" attribute\n * that matches the given value.\n *\n * @param {mixed} value\n * @param {object} $els\n * @return {object}\n */\n getElementWithValue: function getElementWithValue(value, $els) {\n value = hash_key(value);\n\n if (typeof value !== 'undefined' && value !== null) {\n for (var i = 0, n = $els.length; i < n; i++) {\n if ($els[i].getAttribute('data-value') === value) {\n return $($els[i]);\n }\n }\n }\n\n return $();\n },\n\n /**\n * Returns the jQuery element of the item\n * matching the given value.\n *\n * @param {string} value\n * @returns {object}\n */\n getItem: function getItem(value) {\n return this.getElementWithValue(value, this.$control.children());\n },\n\n /**\n * \"Selects\" multiple items at once. Adds them to the list\n * at the current caret position.\n *\n * @param {string} value\n * @param {boolean} silent\n */\n addItems: function addItems(values, silent) {\n this.buffer = document.createDocumentFragment();\n var childNodes = this.$control[0].childNodes;\n\n for (var i = 0; i < childNodes.length; i++) {\n this.buffer.appendChild(childNodes[i]);\n }\n\n var items = $.isArray(values) ? values : [values];\n\n for (var i = 0, n = items.length; i < n; i++) {\n this.isPending = i < n - 1;\n this.addItem(items[i], silent);\n }\n\n var control = this.$control[0];\n control.insertBefore(this.buffer, control.firstChild);\n this.buffer = null;\n },\n\n /**\n * \"Selects\" an item. Adds it to the list\n * at the current caret position.\n *\n * @param {string} value\n * @param {boolean} silent\n */\n addItem: function addItem(value, silent) {\n var events = silent ? [] : ['change'];\n debounce_events(this, events, function () {\n var $item, $option, $options;\n var self = this;\n var inputMode = self.settings.mode;\n var i, active, value_next, wasFull;\n value = hash_key(value);\n\n if (self.items.indexOf(value) !== -1) {\n if (inputMode === 'single') self.close();\n return;\n }\n\n if (!self.options.hasOwnProperty(value)) return;\n if (inputMode === 'single') self.clear(silent);\n if (inputMode === 'multi' && self.isFull()) return;\n $item = $(self.render('item', self.options[value]));\n wasFull = self.isFull();\n self.items.splice(self.caretPos, 0, value);\n self.insertAtCaret($item);\n\n if (!self.isPending || !wasFull && self.isFull()) {\n self.refreshState();\n }\n\n if (self.isSetup) {\n $options = self.$dropdown_content.find('[data-selectable]'); // update menu / remove the option (if this is not one item being added as part of series)\n\n if (!self.isPending) {\n $option = self.getOption(value);\n value_next = self.getAdjacentOption($option, 1).attr('data-value');\n self.refreshOptions(self.isFocused && inputMode !== 'single');\n\n if (value_next) {\n self.setActiveOption(self.getOption(value_next));\n }\n } // hide the menu if the maximum number of items have been selected or no options are left\n\n\n if (!$options.length || self.isFull()) {\n self.close();\n } else if (!self.isPending) {\n self.positionDropdown();\n }\n\n self.updatePlaceholder();\n self.trigger('item_add', value, $item);\n\n if (!self.isPending) {\n self.updateOriginalInput({\n silent: silent\n });\n }\n }\n });\n },\n\n /**\n * Removes the selected item matching\n * the provided value.\n *\n * @param {string} value\n */\n removeItem: function removeItem(value, silent) {\n var self = this;\n var $item, i, idx;\n $item = value instanceof $ ? value : self.getItem(value);\n value = hash_key($item.attr('data-value'));\n i = self.items.indexOf(value);\n\n if (i !== -1) {\n $item.remove();\n\n if ($item.hasClass('active')) {\n idx = self.$activeItems.indexOf($item[0]);\n self.$activeItems.splice(idx, 1);\n }\n\n self.items.splice(i, 1);\n self.lastQuery = null;\n\n if (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n self.removeOption(value, silent);\n }\n\n if (i < self.caretPos) {\n self.setCaret(self.caretPos - 1);\n }\n\n self.refreshState();\n self.updatePlaceholder();\n self.updateOriginalInput({\n silent: silent\n });\n self.positionDropdown();\n self.trigger('item_remove', value, $item);\n }\n },\n\n /**\n * Invokes the `create` method provided in the\n * selectize options that should provide the data\n * for the new item, given the user input.\n *\n * Once this completes, it will be added\n * to the item list.\n *\n * @param {string} value\n * @param {boolean} [triggerDropdown]\n * @param {function} [callback]\n * @return {boolean}\n */\n createItem: function createItem(input, triggerDropdown) {\n var self = this;\n var caret = self.caretPos;\n input = input || $.trim(self.$control_input.val() || '');\n var callback = arguments[arguments.length - 1];\n if (typeof callback !== 'function') callback = function callback() {};\n\n if (typeof triggerDropdown !== 'boolean') {\n triggerDropdown = true;\n }\n\n if (!self.canCreate(input)) {\n callback();\n return false;\n }\n\n self.lock();\n var setup = typeof self.settings.create === 'function' ? this.settings.create : function (input) {\n var data = {};\n data[self.settings.labelField] = input;\n data[self.settings.valueField] = input;\n return data;\n };\n var create = once(function (data) {\n self.unlock();\n if (!data || _typeof(data) !== 'object') return callback();\n var value = hash_key(data[self.settings.valueField]);\n if (typeof value !== 'string') return callback();\n self.setTextboxValue('');\n self.addOption(data);\n self.setCaret(caret);\n self.addItem(value);\n self.refreshOptions(triggerDropdown && self.settings.mode !== 'single');\n callback(data);\n });\n var output = setup.apply(this, [input, create]);\n\n if (typeof output !== 'undefined') {\n create(output);\n }\n\n return true;\n },\n\n /**\n * Re-renders the selected item lists.\n */\n refreshItems: function refreshItems() {\n this.lastQuery = null;\n\n if (this.isSetup) {\n this.addItem(this.items);\n }\n\n this.refreshState();\n this.updateOriginalInput();\n },\n\n /**\n * Updates all state-dependent attributes\n * and CSS classes.\n */\n refreshState: function refreshState() {\n this.refreshValidityState();\n this.refreshClasses();\n },\n\n /**\n * Update the `required` attribute of both input and control input.\n *\n * The `required` property needs to be activated on the control input\n * for the error to be displayed at the right place. `required` also\n * needs to be temporarily deactivated on the input since the input is\n * hidden and can't show errors.\n */\n refreshValidityState: function refreshValidityState() {\n if (!this.isRequired) return false;\n var invalid = !this.items.length;\n this.isInvalid = invalid;\n this.$control_input.prop('required', invalid);\n this.$input.prop('required', !invalid);\n },\n\n /**\n * Updates all state-dependent CSS classes.\n */\n refreshClasses: function refreshClasses() {\n var self = this;\n var isFull = self.isFull();\n var isLocked = self.isLocked;\n self.$wrapper.toggleClass('rtl', self.rtl);\n self.$control.toggleClass('focus', self.isFocused).toggleClass('disabled', self.isDisabled).toggleClass('required', self.isRequired).toggleClass('invalid', self.isInvalid).toggleClass('locked', isLocked).toggleClass('full', isFull).toggleClass('not-full', !isFull).toggleClass('input-active', self.isFocused && !self.isInputHidden).toggleClass('dropdown-active', self.isOpen).toggleClass('has-options', !$.isEmptyObject(self.options)).toggleClass('has-items', self.items.length > 0);\n self.$control_input.data('grow', !isFull && !isLocked);\n },\n\n /**\n * Determines whether or not more items can be added\n * to the control without exceeding the user-defined maximum.\n *\n * @returns {boolean}\n */\n isFull: function isFull() {\n return this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n },\n\n /**\n * Refreshes the original <select> or <input>\n * element to reflect the current state.\n */\n updateOriginalInput: function updateOriginalInput(opts) {\n var i,\n n,\n options,\n label,\n self = this;\n opts = opts || {};\n\n if (self.tagType === TAG_SELECT) {\n options = [];\n\n for (i = 0, n = self.items.length; i < n; i++) {\n label = self.options[self.items[i]][self.settings.labelField] || '';\n options.push('<option value=\"' + escape_html(self.items[i]) + '\" selected=\"selected\">' + escape_html(label) + '</option>');\n }\n\n if (!options.length && !this.$input.attr('multiple')) {\n options.push('<option value=\"\" selected=\"selected\"></option>');\n }\n\n self.$input.html(options.join(''));\n } else {\n self.$input.val(self.getValue());\n self.$input.attr('value', self.$input.val());\n }\n\n if (self.isSetup) {\n if (!opts.silent) {\n self.trigger('change', self.$input.val());\n }\n }\n },\n\n /**\n * Shows/hide the input placeholder depending\n * on if there items in the list already.\n */\n updatePlaceholder: function updatePlaceholder() {\n if (!this.settings.placeholder) return;\n var $input = this.$control_input;\n\n if (this.items.length) {\n $input.removeAttr('placeholder');\n } else {\n $input.attr('placeholder', this.settings.placeholder);\n }\n\n $input.triggerHandler('update', {\n force: true\n });\n },\n\n /**\n * Shows the autocomplete dropdown containing\n * the available options.\n */\n open: function open() {\n var self = this;\n if (self.isLocked || self.isOpen || self.settings.mode === 'multi' && self.isFull()) return;\n self.focus();\n self.isOpen = true;\n self.refreshState();\n self.$dropdown.css({\n visibility: 'hidden',\n display: 'block'\n });\n self.positionDropdown();\n self.$dropdown.css({\n visibility: 'visible'\n });\n self.trigger('dropdown_open', self.$dropdown);\n },\n\n /**\n * Closes the autocomplete dropdown menu.\n */\n close: function close() {\n var self = this;\n var trigger = self.isOpen;\n\n if (self.settings.mode === 'single' && self.items.length) {\n self.hideInput(); // Do not trigger blur while inside a blur event,\n // this fixes some weird tabbing behavior in FF and IE.\n // See #1164\n\n if (!self.isBlurring) {\n self.$control_input.blur(); // close keyboard on iOS\n }\n }\n\n self.isOpen = false;\n self.$dropdown.hide();\n self.setActiveOption(null);\n self.refreshState();\n if (trigger) self.trigger('dropdown_close', self.$dropdown);\n },\n\n /**\n * Calculates and applies the appropriate\n * position of the dropdown.\n */\n positionDropdown: function positionDropdown() {\n var $control = this.$control;\n var offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();\n offset.top += $control.outerHeight(true);\n this.$dropdown.css({\n width: $control[0].getBoundingClientRect().width,\n top: offset.top,\n left: offset.left\n });\n },\n\n /**\n * Resets / clears all selected items\n * from the control.\n *\n * @param {boolean} silent\n */\n clear: function clear(silent) {\n var self = this;\n if (!self.items.length) return;\n self.$control.children(':not(input)').remove();\n self.items = [];\n self.lastQuery = null;\n self.setCaret(0);\n self.setActiveItem(null);\n self.updatePlaceholder();\n self.updateOriginalInput({\n silent: silent\n });\n self.refreshState();\n self.showInput();\n self.trigger('clear');\n },\n\n /**\n * A helper method for inserting an element\n * at the current caret position.\n *\n * @param {object} $el\n */\n insertAtCaret: function insertAtCaret($el) {\n var caret = Math.min(this.caretPos, this.items.length);\n var el = $el[0];\n var target = this.buffer || this.$control[0];\n\n if (caret === 0) {\n target.insertBefore(el, target.firstChild);\n } else {\n target.insertBefore(el, target.childNodes[caret]);\n }\n\n this.setCaret(caret + 1);\n },\n\n /**\n * Removes the current selected item(s).\n *\n * @param {object} e (optional)\n * @returns {boolean}\n */\n deleteSelection: function deleteSelection(e) {\n var i, n, direction, selection, values, caret, option_select, $option_select, $tail;\n var self = this;\n direction = e && e.keyCode === KEY_BACKSPACE ? -1 : 1;\n selection = getSelection(self.$control_input[0]);\n\n if (self.$activeOption && !self.settings.hideSelected) {\n option_select = self.getAdjacentOption(self.$activeOption, -1).attr('data-value');\n } // determine items that will be removed\n\n\n values = [];\n\n if (self.$activeItems.length) {\n $tail = self.$control.children('.active:' + (direction > 0 ? 'last' : 'first'));\n caret = self.$control.children(':not(input)').index($tail);\n\n if (direction > 0) {\n caret++;\n }\n\n for (i = 0, n = self.$activeItems.length; i < n; i++) {\n values.push($(self.$activeItems[i]).attr('data-value'));\n }\n\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n } else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n if (direction < 0 && selection.start === 0 && selection.length === 0) {\n values.push(self.items[self.caretPos - 1]);\n } else if (direction > 0 && selection.start === self.$control_input.val().length) {\n values.push(self.items[self.caretPos]);\n }\n } // allow the callback to abort\n\n\n if (!values.length || typeof self.settings.onDelete === 'function' && self.settings.onDelete.apply(self, [values]) === false) {\n return false;\n } // perform removal\n\n\n if (typeof caret !== 'undefined') {\n self.setCaret(caret);\n }\n\n while (values.length) {\n self.removeItem(values.pop());\n }\n\n self.showInput();\n self.positionDropdown();\n self.refreshOptions(true); // select previous option\n\n if (option_select) {\n $option_select = self.getOption(option_select);\n\n if ($option_select.length) {\n self.setActiveOption($option_select);\n }\n }\n\n return true;\n },\n\n /**\n * Selects the previous / next item (depending\n * on the `direction` argument).\n *\n * > 0 - right\n * < 0 - left\n *\n * @param {int} direction\n * @param {object} e (optional)\n */\n advanceSelection: function advanceSelection(direction, e) {\n var tail, selection, idx, valueLength, cursorAtEdge, $tail;\n var self = this;\n if (direction === 0) return;\n if (self.rtl) direction *= -1;\n tail = direction > 0 ? 'last' : 'first';\n selection = getSelection(self.$control_input[0]);\n\n if (self.isFocused && !self.isInputHidden) {\n valueLength = self.$control_input.val().length;\n cursorAtEdge = direction < 0 ? selection.start === 0 && selection.length === 0 : selection.start === valueLength;\n\n if (cursorAtEdge && !valueLength) {\n self.advanceCaret(direction, e);\n }\n } else {\n $tail = self.$control.children('.active:' + tail);\n\n if ($tail.length) {\n idx = self.$control.children(':not(input)').index($tail);\n self.setActiveItem(null);\n self.setCaret(direction > 0 ? idx + 1 : idx);\n }\n }\n },\n\n /**\n * Moves the caret left / right.\n *\n * @param {int} direction\n * @param {object} e (optional)\n */\n advanceCaret: function advanceCaret(direction, e) {\n var self = this,\n fn,\n $adj;\n if (direction === 0) return;\n fn = direction > 0 ? 'next' : 'prev';\n\n if (self.isShiftDown) {\n $adj = self.$control_input[fn]();\n\n if ($adj.length) {\n self.hideInput();\n self.setActiveItem($adj);\n e && e.preventDefault();\n }\n } else {\n self.setCaret(self.caretPos + direction);\n }\n },\n\n /**\n * Moves the caret to the specified index.\n *\n * @param {int} i\n */\n setCaret: function setCaret(i) {\n var self = this;\n\n if (self.settings.mode === 'single') {\n i = self.items.length;\n } else {\n i = Math.max(0, Math.min(self.items.length, i));\n }\n\n if (!self.isPending) {\n // the input must be moved by leaving it in place and moving the\n // siblings, due to the fact that focus cannot be restored once lost\n // on mobile webkit devices\n var j, n, fn, $children, $child;\n $children = self.$control.children(':not(input)');\n\n for (j = 0, n = $children.length; j < n; j++) {\n $child = $($children[j]).detach();\n\n if (j < i) {\n self.$control_input.before($child);\n } else {\n self.$control.append($child);\n }\n }\n }\n\n self.caretPos = i;\n },\n\n /**\n * Disables user input on the control. Used while\n * items are being asynchronously created.\n */\n lock: function lock() {\n this.close();\n this.isLocked = true;\n this.refreshState();\n },\n\n /**\n * Re-enables user input on the control.\n */\n unlock: function unlock() {\n this.isLocked = false;\n this.refreshState();\n },\n\n /**\n * Disables user input on the control completely.\n * While disabled, it cannot receive focus.\n */\n disable: function disable() {\n var self = this;\n self.$input.prop('disabled', true);\n self.$control_input.prop('disabled', true).prop('tabindex', -1);\n self.isDisabled = true;\n self.lock();\n },\n\n /**\n * Enables the control so that it can respond\n * to focus and user input.\n */\n enable: function enable() {\n var self = this;\n self.$input.prop('disabled', false);\n self.$control_input.prop('disabled', false).prop('tabindex', self.tabIndex);\n self.isDisabled = false;\n self.unlock();\n },\n\n /**\n * Completely destroys the control and\n * unbinds all event listeners so that it can\n * be garbage collected.\n */\n destroy: function destroy() {\n var self = this;\n var eventNS = self.eventNS;\n var revertSettings = self.revertSettings;\n self.trigger('destroy');\n self.off();\n self.$wrapper.remove();\n self.$dropdown.remove();\n self.$input.html('').append(revertSettings.$children).removeAttr('tabindex').removeClass('selectized').attr({\n tabindex: revertSettings.tabindex\n }).show();\n self.$control_input.removeData('grow');\n self.$input.removeData('selectize');\n\n if (--Selectize.count == 0 && Selectize.$testInput) {\n Selectize.$testInput.remove();\n Selectize.$testInput = undefined;\n }\n\n $(window).off(eventNS);\n $(document).off(eventNS);\n $(document.body).off(eventNS);\n delete self.$input[0].selectize;\n },\n\n /**\n * A helper method for rendering \"item\" and\n * \"option\" templates, given the data.\n *\n * @param {string} templateName\n * @param {object} data\n * @returns {string}\n */\n render: function render(templateName, data) {\n var value, id, label;\n var html = '';\n var cache = false;\n var self = this;\n var regex_tag = /^[\\t \\r\\n]*<([a-z][a-z0-9\\-_]*(?:\\:[a-z][a-z0-9\\-_]*)?)/i;\n\n if (templateName === 'option' || templateName === 'item') {\n value = hash_key(data[self.settings.valueField]);\n cache = !!value;\n } // pull markup from cache if it exists\n\n\n if (cache) {\n if (!isset(self.renderCache[templateName])) {\n self.renderCache[templateName] = {};\n }\n\n if (self.renderCache[templateName].hasOwnProperty(value)) {\n return self.renderCache[templateName][value];\n }\n } // render markup\n\n\n html = $(self.settings.render[templateName].apply(this, [data, escape_html])); // add mandatory attributes\n\n if (templateName === 'option' || templateName === 'option_create') {\n if (!data[self.settings.disabledField]) {\n html.attr('data-selectable', '');\n }\n } else if (templateName === 'optgroup') {\n id = data[self.settings.optgroupValueField] || '';\n html.attr('data-group', id);\n\n if (data[self.settings.disabledField]) {\n html.attr('data-disabled', '');\n }\n }\n\n if (templateName === 'option' || templateName === 'item') {\n html.attr('data-value', value || '');\n } // update cache\n\n\n if (cache) {\n self.renderCache[templateName][value] = html[0];\n }\n\n return html[0];\n },\n\n /**\n * Clears the render cache for a template. If\n * no template is given, clears all render\n * caches.\n *\n * @param {string} templateName\n */\n clearCache: function clearCache(templateName) {\n var self = this;\n\n if (typeof templateName === 'undefined') {\n self.renderCache = {};\n } else {\n delete self.renderCache[templateName];\n }\n },\n\n /**\n * Determines whether or not to display the\n * create item prompt, given a user input.\n *\n * @param {string} input\n * @return {boolean}\n */\n canCreate: function canCreate(input) {\n var self = this;\n if (!self.settings.create) return false;\n var filter = self.settings.createFilter;\n return input.length && (typeof filter !== 'function' || filter.apply(self, [input])) && (typeof filter !== 'string' || new RegExp(filter).test(input)) && (!(filter instanceof RegExp) || filter.test(input));\n }\n });\n Selectize.count = 0;\n Selectize.defaults = {\n options: [],\n optgroups: [],\n plugins: [],\n delimiter: ',',\n splitOn: null,\n // regexp or string for splitting up values from a paste command\n persist: true,\n diacritics: true,\n create: false,\n createOnBlur: false,\n createFilter: null,\n highlight: true,\n openOnFocus: true,\n maxOptions: 1000,\n maxItems: null,\n hideSelected: null,\n addPrecedence: false,\n selectOnTab: false,\n preload: false,\n allowEmptyOption: false,\n closeAfterSelect: false,\n scrollDuration: 60,\n loadThrottle: 300,\n loadingClass: 'loading',\n dataAttr: 'data-data',\n optgroupField: 'optgroup',\n valueField: 'value',\n labelField: 'text',\n disabledField: 'disabled',\n optgroupLabelField: 'label',\n optgroupValueField: 'value',\n lockOptgroupOrder: false,\n sortField: '$order',\n searchField: ['text'],\n searchConjunction: 'and',\n mode: null,\n wrapperClass: 'selectize-control',\n inputClass: 'selectize-input',\n dropdownClass: 'selectize-dropdown',\n dropdownContentClass: 'selectize-dropdown-content',\n dropdownParent: null,\n copyClassesToDropdown: true,\n\n /*\n load : null, // function(query, callback) { ... }\n score : null, // function(search) { ... }\n onInitialize : null, // function() { ... }\n onChange : null, // function(value) { ... }\n onItemAdd : null, // function(value, $item) { ... }\n onItemRemove : null, // function(value) { ... }\n onClear : null, // function() { ... }\n onOptionAdd : null, // function(value, data) { ... }\n onOptionRemove : null, // function(value) { ... }\n onOptionClear : null, // function() { ... }\n onOptionGroupAdd : null, // function(id, data) { ... }\n onOptionGroupRemove : null, // function(id) { ... }\n onOptionGroupClear : null, // function() { ... }\n onDropdownOpen : null, // function($dropdown) { ... }\n onDropdownClose : null, // function($dropdown) { ... }\n onType : null, // function(str) { ... }\n onDelete : null, // function(values) { ... }\n */\n render: {\n /*\n item: null,\n optgroup: null,\n optgroup_header: null,\n option: null,\n option_create: null\n */\n }\n };\n\n $.fn.selectize = function (settings_user) {\n var defaults = $.fn.selectize.defaults;\n var settings = $.extend({}, defaults, settings_user);\n var attr_data = settings.dataAttr;\n var field_label = settings.labelField;\n var field_value = settings.valueField;\n var field_disabled = settings.disabledField;\n var field_optgroup = settings.optgroupField;\n var field_optgroup_label = settings.optgroupLabelField;\n var field_optgroup_value = settings.optgroupValueField;\n /**\n * Initializes selectize from a <input type=\"text\"> element.\n *\n * @param {object} $input\n * @param {object} settings_element\n */\n\n var init_textbox = function init_textbox($input, settings_element) {\n var i, n, values, option;\n var data_raw = $input.attr(attr_data);\n\n if (!data_raw) {\n var value = $.trim($input.val() || '');\n if (!settings.allowEmptyOption && !value.length) return;\n values = value.split(settings.delimiter);\n\n for (i = 0, n = values.length; i < n; i++) {\n option = {};\n option[field_label] = values[i];\n option[field_value] = values[i];\n settings_element.options.push(option);\n }\n\n settings_element.items = values;\n } else {\n settings_element.options = JSON.parse(data_raw);\n\n for (i = 0, n = settings_element.options.length; i < n; i++) {\n settings_element.items.push(settings_element.options[i][field_value]);\n }\n }\n };\n /**\n * Initializes selectize from a <select> element.\n *\n * @param {object} $input\n * @param {object} settings_element\n */\n\n\n var init_select = function init_select($input, settings_element) {\n var i,\n n,\n tagName,\n $children,\n order = 0;\n var options = settings_element.options;\n var optionsMap = {};\n\n var readData = function readData($el) {\n var data = attr_data && $el.attr(attr_data);\n\n if (typeof data === 'string' && data.length) {\n return JSON.parse(data);\n }\n\n return null;\n };\n\n var addOption = function addOption($option, group) {\n $option = $($option);\n var value = hash_key($option.val());\n if (!value && !settings.allowEmptyOption) return; // if the option already exists, it's probably been\n // duplicated in another optgroup. in this case, push\n // the current group to the \"optgroup\" property on the\n // existing option so that it's rendered in both places.\n\n if (optionsMap.hasOwnProperty(value)) {\n if (group) {\n var arr = optionsMap[value][field_optgroup];\n\n if (!arr) {\n optionsMap[value][field_optgroup] = group;\n } else if (!$.isArray(arr)) {\n optionsMap[value][field_optgroup] = [arr, group];\n } else {\n arr.push(group);\n }\n }\n\n return;\n }\n\n var option = readData($option) || {};\n option[field_label] = option[field_label] || $option.text();\n option[field_value] = option[field_value] || value;\n option[field_disabled] = option[field_disabled] || $option.prop('disabled');\n option[field_optgroup] = option[field_optgroup] || group;\n optionsMap[value] = option;\n options.push(option);\n\n if ($option.is(':selected')) {\n settings_element.items.push(value);\n }\n };\n\n var addGroup = function addGroup($optgroup) {\n var i, n, id, optgroup, $options;\n $optgroup = $($optgroup);\n id = $optgroup.attr('label');\n\n if (id) {\n optgroup = readData($optgroup) || {};\n optgroup[field_optgroup_label] = id;\n optgroup[field_optgroup_value] = id;\n optgroup[field_disabled] = $optgroup.prop('disabled');\n settings_element.optgroups.push(optgroup);\n }\n\n $options = $('option', $optgroup);\n\n for (i = 0, n = $options.length; i < n; i++) {\n addOption($options[i], id);\n }\n };\n\n settings_element.maxItems = $input.attr('multiple') ? null : 1;\n $children = $input.children();\n\n for (i = 0, n = $children.length; i < n; i++) {\n tagName = $children[i].tagName.toLowerCase();\n\n if (tagName === 'optgroup') {\n addGroup($children[i]);\n } else if (tagName === 'option') {\n addOption($children[i]);\n }\n }\n };\n\n return this.each(function () {\n if (this.selectize) return;\n var instance;\n var $input = $(this);\n var tag_name = this.tagName.toLowerCase();\n var placeholder = $input.attr('placeholder') || $input.attr('data-placeholder');\n\n if (!placeholder && !settings.allowEmptyOption) {\n placeholder = $input.children('option[value=\"\"]').text();\n }\n\n var settings_element = {\n 'placeholder': placeholder,\n 'options': [],\n 'optgroups': [],\n 'items': []\n };\n\n if (tag_name === 'select') {\n init_select($input, settings_element);\n } else {\n init_textbox($input, settings_element);\n }\n\n instance = new Selectize($input, $.extend(true, {}, defaults, settings_element, settings_user));\n });\n };\n\n $.fn.selectize.defaults = Selectize.defaults;\n $.fn.selectize.support = {\n validity: SUPPORTS_VALIDITY_API\n };\n Selectize.define('drag_drop', function (options) {\n if (!$.fn.sortable) throw new Error('The \"drag_drop\" plugin requires jQuery UI \"sortable\".');\n if (this.settings.mode !== 'multi') return;\n var self = this;\n\n self.lock = function () {\n var original = self.lock;\n return function () {\n var sortable = self.$control.data('sortable');\n if (sortable) sortable.disable();\n return original.apply(self, arguments);\n };\n }();\n\n self.unlock = function () {\n var original = self.unlock;\n return function () {\n var sortable = self.$control.data('sortable');\n if (sortable) sortable.enable();\n return original.apply(self, arguments);\n };\n }();\n\n self.setup = function () {\n var original = self.setup;\n return function () {\n original.apply(this, arguments);\n var $control = self.$control.sortable({\n items: '[data-value]',\n forcePlaceholderSize: true,\n disabled: self.isLocked,\n start: function start(e, ui) {\n ui.placeholder.css('width', ui.helper.css('width'));\n $control.css({\n overflow: 'visible'\n });\n },\n stop: function stop() {\n $control.css({\n overflow: 'hidden'\n });\n var active = self.$activeItems ? self.$activeItems.slice() : null;\n var values = [];\n $control.children('[data-value]').each(function () {\n values.push($(this).attr('data-value'));\n });\n self.setValue(values);\n self.setActiveItem(active);\n }\n });\n };\n }();\n });\n Selectize.define('dropdown_header', function (options) {\n var self = this;\n options = $.extend({\n title: 'Untitled',\n headerClass: 'selectize-dropdown-header',\n titleRowClass: 'selectize-dropdown-header-title',\n labelClass: 'selectize-dropdown-header-label',\n closeClass: 'selectize-dropdown-header-close',\n html: function html(data) {\n return '<div class=\"' + data.headerClass + '\">' + '<div class=\"' + data.titleRowClass + '\">' + '<span class=\"' + data.labelClass + '\">' + data.title + '</span>' + '<a href=\"javascript:void(0)\" class=\"' + data.closeClass + '\">×</a>' + '</div>' + '</div>';\n }\n }, options);\n\n self.setup = function () {\n var original = self.setup;\n return function () {\n original.apply(self, arguments);\n self.$dropdown_header = $(options.html(options));\n self.$dropdown.prepend(self.$dropdown_header);\n };\n }();\n });\n Selectize.define('optgroup_columns', function (options) {\n var self = this;\n options = $.extend({\n equalizeWidth: true,\n equalizeHeight: true\n }, options);\n\n this.getAdjacentOption = function ($option, direction) {\n var $options = $option.closest('[data-group]').find('[data-selectable]');\n var index = $options.index($option) + direction;\n return index >= 0 && index < $options.length ? $options.eq(index) : $();\n };\n\n this.onKeyDown = function () {\n var original = self.onKeyDown;\n return function (e) {\n var index, $option, $options, $optgroup;\n\n if (this.isOpen && (e.keyCode === KEY_LEFT || e.keyCode === KEY_RIGHT)) {\n self.ignoreHover = true;\n $optgroup = this.$activeOption.closest('[data-group]');\n index = $optgroup.find('[data-selectable]').index(this.$activeOption);\n\n if (e.keyCode === KEY_LEFT) {\n $optgroup = $optgroup.prev('[data-group]');\n } else {\n $optgroup = $optgroup.next('[data-group]');\n }\n\n $options = $optgroup.find('[data-selectable]');\n $option = $options.eq(Math.min($options.length - 1, index));\n\n if ($option.length) {\n this.setActiveOption($option);\n }\n\n return;\n }\n\n return original.apply(this, arguments);\n };\n }();\n\n var getScrollbarWidth = function getScrollbarWidth() {\n var div;\n var width = getScrollbarWidth.width;\n var doc = document;\n\n if (typeof width === 'undefined') {\n div = doc.createElement('div');\n div.innerHTML = '<div style=\"width:50px;height:50px;position:absolute;left:-50px;top:-50px;overflow:auto;\"><div style=\"width:1px;height:100px;\"></div></div>';\n div = div.firstChild;\n doc.body.appendChild(div);\n width = getScrollbarWidth.width = div.offsetWidth - div.clientWidth;\n doc.body.removeChild(div);\n }\n\n return width;\n };\n\n var equalizeSizes = function equalizeSizes() {\n var i, n, height_max, width, width_last, width_parent, $optgroups;\n $optgroups = $('[data-group]', self.$dropdown_content);\n n = $optgroups.length;\n if (!n || !self.$dropdown_content.width()) return;\n\n if (options.equalizeHeight) {\n height_max = 0;\n\n for (i = 0; i < n; i++) {\n height_max = Math.max(height_max, $optgroups.eq(i).height());\n }\n\n $optgroups.css({\n height: height_max\n });\n }\n\n if (options.equalizeWidth) {\n width_parent = self.$dropdown_content.innerWidth() - getScrollbarWidth();\n width = Math.round(width_parent / n);\n $optgroups.css({\n width: width\n });\n\n if (n > 1) {\n width_last = width_parent - width * (n - 1);\n $optgroups.eq(n - 1).css({\n width: width_last\n });\n }\n }\n };\n\n if (options.equalizeHeight || options.equalizeWidth) {\n hook.after(this, 'positionDropdown', equalizeSizes);\n hook.after(this, 'refreshOptions', equalizeSizes);\n }\n });\n Selectize.define('remove_button', function (options) {\n options = $.extend({\n label: '×',\n title: 'Remove',\n className: 'remove',\n append: true\n }, options);\n\n var singleClose = function singleClose(thisRef, options) {\n options.className = 'remove-single';\n var self = thisRef;\n var html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n /**\n * Appends an element as a child (with raw HTML).\n *\n * @param {string} html_container\n * @param {string} html_element\n * @return {string}\n */\n\n var append = function append(html_container, html_element) {\n return $('<span>').append(html_container).append(html_element);\n };\n\n thisRef.setup = function () {\n var original = self.setup;\n return function () {\n // override the item rendering method to add the button to each\n if (options.append) {\n var id = $(self.$input.context).attr('id');\n var selectizer = $('#' + id);\n var render_item = self.settings.render.item;\n\n self.settings.render.item = function (data) {\n return append(render_item.apply(thisRef, arguments), html);\n };\n }\n\n original.apply(thisRef, arguments); // add event listener\n\n thisRef.$control.on('click', '.' + options.className, function (e) {\n e.preventDefault();\n if (self.isLocked) return;\n self.clear();\n });\n };\n }();\n };\n\n var multiClose = function multiClose(thisRef, options) {\n var self = thisRef;\n var html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n /**\n * Appends an element as a child (with raw HTML).\n *\n * @param {string} html_container\n * @param {string} html_element\n * @return {string}\n */\n\n var append = function append(html_container, html_element) {\n var pos = html_container.search(/(<\\/[^>]+>\\s*)$/);\n return html_container.substring(0, pos) + html_element + html_container.substring(pos);\n };\n\n thisRef.setup = function () {\n var original = self.setup;\n return function () {\n // override the item rendering method to add the button to each\n if (options.append) {\n var render_item = self.settings.render.item;\n\n self.settings.render.item = function (data) {\n return append(render_item.apply(thisRef, arguments), html);\n };\n }\n\n original.apply(thisRef, arguments); // add event listener\n\n thisRef.$control.on('click', '.' + options.className, function (e) {\n e.preventDefault();\n if (self.isLocked) return;\n var $item = $(e.currentTarget).parent();\n self.setActiveItem($item);\n\n if (self.deleteSelection()) {\n self.setCaret(self.items.length);\n }\n });\n };\n }();\n };\n\n if (this.settings.mode === 'single') {\n singleClose(this, options);\n return;\n } else {\n multiClose(this, options);\n }\n });\n Selectize.define('restore_on_backspace', function (options) {\n var self = this;\n\n options.text = options.text || function (option) {\n return option[this.settings.labelField];\n };\n\n this.onKeyDown = function () {\n var original = self.onKeyDown;\n return function (e) {\n var index, option;\n\n if (e.keyCode === KEY_BACKSPACE && this.$control_input.val() === '' && !this.$activeItems.length) {\n index = this.caretPos - 1;\n\n if (index >= 0 && index < this.items.length) {\n option = this.options[this.items[index]];\n\n if (this.deleteSelection(e)) {\n this.setTextboxValue(options.text.apply(this, [option]));\n this.refreshOptions(true);\n }\n\n e.preventDefault();\n return;\n }\n }\n\n return original.apply(this, arguments);\n };\n }();\n });\n return Selectize;\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/**\n * sifter.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n module.exports = factory();\n } else {\n root.Sifter = factory();\n }\n})(this, function () {\n /**\n * Textually searches arrays and hashes of objects\n * by property (or multiple properties). Designed\n * specifically for autocomplete.\n *\n * @constructor\n * @param {array|object} items\n * @param {object} items\n */\n var Sifter = function Sifter(items, settings) {\n this.items = items;\n this.settings = settings || {\n diacritics: true\n };\n };\n /**\n * Splits a search string into an array of individual\n * regexps to be used to match results.\n *\n * @param {string} query\n * @returns {array}\n */\n\n\n Sifter.prototype.tokenize = function (query) {\n query = trim(String(query || '').toLowerCase());\n if (!query || !query.length) return [];\n var i, n, regex, letter;\n var tokens = [];\n var words = query.split(/ +/);\n\n for (i = 0, n = words.length; i < n; i++) {\n regex = escape_regex(words[i]);\n\n if (this.settings.diacritics) {\n for (letter in DIACRITICS) {\n if (DIACRITICS.hasOwnProperty(letter)) {\n regex = regex.replace(new RegExp(letter, 'g'), DIACRITICS[letter]);\n }\n }\n }\n\n tokens.push({\n string: words[i],\n regex: new RegExp(regex, 'i')\n });\n }\n\n return tokens;\n };\n /**\n * Iterates over arrays and hashes.\n *\n * ```\n * this.iterator(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n * @param {array|object} object\n */\n\n\n Sifter.prototype.iterator = function (object, callback) {\n var iterator;\n\n if (is_array(object)) {\n iterator = Array.prototype.forEach || function (callback) {\n for (var i = 0, n = this.length; i < n; i++) {\n callback(this[i], i, this);\n }\n };\n } else {\n iterator = function iterator(callback) {\n for (var key in this) {\n if (this.hasOwnProperty(key)) {\n callback(this[key], key, this);\n }\n }\n };\n }\n\n iterator.apply(object, [callback]);\n };\n /**\n * Returns a function to be used to score individual results.\n *\n * Good matches will have a higher score than poor matches.\n * If an item is not a match, 0 will be returned by the function.\n *\n * @param {object|string} search\n * @param {object} options (optional)\n * @returns {function}\n */\n\n\n Sifter.prototype.getScoreFunction = function (search, options) {\n var self, fields, tokens, token_count, nesting;\n self = this;\n search = self.prepareSearch(search, options);\n tokens = search.tokens;\n fields = search.options.fields;\n token_count = tokens.length;\n nesting = search.options.nesting;\n /**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n * @param {mixed} value\n * @param {object} token\n * @return {number}\n */\n\n var scoreValue = function scoreValue(value, token) {\n var score, pos;\n if (!value) return 0;\n value = String(value || '');\n pos = value.search(token.regex);\n if (pos === -1) return 0;\n score = token.string.length / value.length;\n if (pos === 0) score += 0.5;\n return score;\n };\n /**\n * Calculates the score of an object\n * against the search query.\n *\n * @param {object} token\n * @param {object} data\n * @return {number}\n */\n\n\n var scoreObject = function () {\n var field_count = fields.length;\n\n if (!field_count) {\n return function () {\n return 0;\n };\n }\n\n if (field_count === 1) {\n return function (token, data) {\n return scoreValue(getattr(data, fields[0], nesting), token);\n };\n }\n\n return function (token, data) {\n for (var i = 0, sum = 0; i < field_count; i++) {\n sum += scoreValue(getattr(data, fields[i], nesting), token);\n }\n\n return sum / field_count;\n };\n }();\n\n if (!token_count) {\n return function () {\n return 0;\n };\n }\n\n if (token_count === 1) {\n return function (data) {\n return scoreObject(tokens[0], data);\n };\n }\n\n if (search.options.conjunction === 'and') {\n return function (data) {\n var score;\n\n for (var i = 0, sum = 0; i < token_count; i++) {\n score = scoreObject(tokens[i], data);\n if (score <= 0) return 0;\n sum += score;\n }\n\n return sum / token_count;\n };\n } else {\n return function (data) {\n for (var i = 0, sum = 0; i < token_count; i++) {\n sum += scoreObject(tokens[i], data);\n }\n\n return sum / token_count;\n };\n }\n };\n /**\n * Returns a function that can be used to compare two\n * results, for sorting purposes. If no sorting should\n * be performed, `null` will be returned.\n *\n * @param {string|object} search\n * @param {object} options\n * @return function(a,b)\n */\n\n\n Sifter.prototype.getSortFunction = function (search, options) {\n var i, n, self, field, fields, fields_count, multiplier, multipliers, get_field, implicit_score, sort;\n self = this;\n search = self.prepareSearch(search, options);\n sort = !search.query && options.sort_empty || options.sort;\n /**\n * Fetches the specified sort field value\n * from a search result item.\n *\n * @param {string} name\n * @param {object} result\n * @return {mixed}\n */\n\n get_field = function get_field(name, result) {\n if (name === '$score') return result.score;\n return getattr(self.items[result.id], name, options.nesting);\n }; // parse options\n\n\n fields = [];\n\n if (sort) {\n for (i = 0, n = sort.length; i < n; i++) {\n if (search.query || sort[i].field !== '$score') {\n fields.push(sort[i]);\n }\n }\n } // the \"$score\" field is implied to be the primary\n // sort field, unless it's manually specified\n\n\n if (search.query) {\n implicit_score = true;\n\n for (i = 0, n = fields.length; i < n; i++) {\n if (fields[i].field === '$score') {\n implicit_score = false;\n break;\n }\n }\n\n if (implicit_score) {\n fields.unshift({\n field: '$score',\n direction: 'desc'\n });\n }\n } else {\n for (i = 0, n = fields.length; i < n; i++) {\n if (fields[i].field === '$score') {\n fields.splice(i, 1);\n break;\n }\n }\n }\n\n multipliers = [];\n\n for (i = 0, n = fields.length; i < n; i++) {\n multipliers.push(fields[i].direction === 'desc' ? -1 : 1);\n } // build function\n\n\n fields_count = fields.length;\n\n if (!fields_count) {\n return null;\n } else if (fields_count === 1) {\n field = fields[0].field;\n multiplier = multipliers[0];\n return function (a, b) {\n return multiplier * cmp(get_field(field, a), get_field(field, b));\n };\n } else {\n return function (a, b) {\n var i, result, a_value, b_value, field;\n\n for (i = 0; i < fields_count; i++) {\n field = fields[i].field;\n result = multipliers[i] * cmp(get_field(field, a), get_field(field, b));\n if (result) return result;\n }\n\n return 0;\n };\n }\n };\n /**\n * Parses a search query and returns an object\n * with tokens and fields ready to be populated\n * with results.\n *\n * @param {string} query\n * @param {object} options\n * @returns {object}\n */\n\n\n Sifter.prototype.prepareSearch = function (query, options) {\n if (_typeof(query) === 'object') return query;\n options = extend({}, options);\n var option_fields = options.fields;\n var option_sort = options.sort;\n var option_sort_empty = options.sort_empty;\n if (option_fields && !is_array(option_fields)) options.fields = [option_fields];\n if (option_sort && !is_array(option_sort)) options.sort = [option_sort];\n if (option_sort_empty && !is_array(option_sort_empty)) options.sort_empty = [option_sort_empty];\n return {\n options: options,\n query: String(query || '').toLowerCase(),\n tokens: this.tokenize(query),\n total: 0,\n items: []\n };\n };\n /**\n * Searches through all items and returns a sorted array of matches.\n *\n * The `options` parameter can contain:\n *\n * - fields {string|array}\n * - sort {array}\n * - score {function}\n * - filter {bool}\n * - limit {integer}\n *\n * Returns an object containing:\n *\n * - options {object}\n * - query {string}\n * - tokens {array}\n * - total {int}\n * - items {array}\n *\n * @param {string} query\n * @param {object} options\n * @returns {object}\n */\n\n\n Sifter.prototype.search = function (query, options) {\n var self = this,\n value,\n score,\n search,\n calculateScore;\n var fn_sort;\n var fn_score;\n search = this.prepareSearch(query, options);\n options = search.options;\n query = search.query; // generate result scoring function\n\n fn_score = options.score || self.getScoreFunction(search); // perform search and sort\n\n if (query.length) {\n self.iterator(self.items, function (item, id) {\n score = fn_score(item);\n\n if (options.filter === false || score > 0) {\n search.items.push({\n 'score': score,\n 'id': id\n });\n }\n });\n } else {\n self.iterator(self.items, function (item, id) {\n search.items.push({\n 'score': 1,\n 'id': id\n });\n });\n }\n\n fn_sort = self.getSortFunction(search, options);\n if (fn_sort) search.items.sort(fn_sort); // apply limits\n\n search.total = search.items.length;\n\n if (typeof options.limit === 'number') {\n search.items = search.items.slice(0, options.limit);\n }\n\n return search;\n }; // utilities\n // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n\n var cmp = function cmp(a, b) {\n if (typeof a === 'number' && typeof b === 'number') {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n a = asciifold(String(a || ''));\n b = asciifold(String(b || ''));\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n };\n\n var extend = function extend(a, b) {\n var i, n, k, object;\n\n for (i = 1, n = arguments.length; i < n; i++) {\n object = arguments[i];\n if (!object) continue;\n\n for (k in object) {\n if (object.hasOwnProperty(k)) {\n a[k] = object[k];\n }\n }\n }\n\n return a;\n };\n /**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @param {Boolean} nesting Handle nesting or not\n * @return {Object} The resolved property value\n */\n\n\n var getattr = function getattr(obj, name, nesting) {\n if (!obj || !name) return;\n if (!nesting) return obj[name];\n var names = name.split(\".\");\n\n while (names.length && (obj = obj[names.shift()])) {\n ;\n }\n\n return obj;\n };\n\n var trim = function trim(str) {\n return (str + '').replace(/^\\s+|\\s+$|/g, '');\n };\n\n var escape_regex = function escape_regex(str) {\n return (str + '').replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n };\n\n var is_array = Array.isArray || typeof $ !== 'undefined' && $.isArray || function (object) {\n return Object.prototype.toString.call(object) === '[object Array]';\n };\n\n var DIACRITICS = {\n 'a': '[aḀá¸Ä‚ăÂâÇǎȺⱥȦȧẠạÄäÀà ÃáĀÄÃãÅåąĄÃąĄ]',\n 'b': '[bâ¢Î²Î’B฿ðŒá›’]',\n 'c': '[cĆćĈĉČÄÄŠÄ‹CÌ„c̄ÇçḈḉȻȼƇƈɕᴄCc]',\n 'd': '[dÄŽÄḊḋá¸á¸‘Ḍá¸á¸’ḓḎá¸ÄÄ‘D̦d̦ƉɖƊɗƋƌáµá¶á¶‘ȡᴅDdð]',\n 'e': '[eÉéÈèÊêḘḙĚěĔĕẼẽḚḛẺẻĖėËëĒēȨȩĘęᶒɆɇȄȅẾếỀá»á»„ễỂểḜá¸á¸–ḗḔḕȆȇẸẹỆệⱸᴇEeɘÇÆÆε]',\n 'f': '[fƑƒḞḟ]',\n 'g': '[gɢ₲ǤǥĜÄÄžÄŸÄ¢Ä£Æ“É Ä Ä¡]',\n 'h': '[hĤĥĦħḨḩẖẖḤḥḢḣɦʰǶƕ]',\n 'i': '[iÃÃÌìĬÄÎîÇÇÃïḮḯĨĩĮįĪīỈỉȈȉȊȋỊịḬá¸Æ—ɨɨ̆ᵻᶖİiIıɪIi]',\n 'j': '[jȷĴĵɈɉÊɟʲ]',\n 'k': '[kƘƙê€êḰḱǨǩḲḳḴḵκϰâ‚]',\n 'l': '[lÅłĽľĻļĹĺḶḷḸḹḼḽḺḻĿŀȽƚⱠⱡⱢɫɬᶅÉȴʟLl]',\n 'n': '[nŃńǸǹŇňÑñṄṅŅņṆṇṊṋṈṉN̈n̈ÆÉ²È Æžáµ°á¶‡É³ÈµÉ´ï¼®ï½ŽÅŠÅ‹]',\n 'o': '[oØøÖöÓóÒòÔôǑǒÅÅ‘ÅŽÅȮȯỌá»ÆŸÉµÆ ơỎá»ÅŒÅÕõǪǫȌÈÕ•Ö…]',\n 'p': '[pṔṕṖṗⱣᵽƤƥᵱ]',\n 'q': '[qê–ê—Ê ÉŠÉ‹ê˜ê™q̃]',\n 'r': '[rŔŕɌÉŘřŖŗṘṙÈȑȒȓṚṛⱤɽ]',\n 's': '[sŚśṠṡṢṣꞨꞩŜÅŠšŞşȘșS̈s̈]',\n 't': '[tŤťṪṫŢţṬá¹Æ®ÊˆÈšÈ›á¹°á¹±á¹®á¹¯Æ¬Æ]',\n 'u': '[uŬÅɄʉỤụÜüÚúÙùÛûǓǔŰűŬÅƯưỦủŪūŨũŲųȔȕ∪]',\n 'v': '[vṼṽṾṿƲʋêžêŸâ±±Ê‹]',\n 'w': '[wẂẃẀáºÅ´Åµáº„ẅẆẇẈẉ]',\n 'x': '[xẌáºáºŠáº‹Ï‡]',\n 'y': '[yÃýỲỳŶŷŸÿỸỹẎáºá»´á»µÉŽÉƳƴ]',\n 'z': '[zŹźáºáº‘ŽžŻżẒẓẔẕƵƶ]'\n };\n\n var asciifold = function () {\n var i, n, k, chunk;\n var foreignletters = '';\n var lookup = {};\n\n for (k in DIACRITICS) {\n if (DIACRITICS.hasOwnProperty(k)) {\n chunk = DIACRITICS[k].substring(2, DIACRITICS[k].length - 1);\n foreignletters += chunk;\n\n for (i = 0, n = chunk.length; i < n; i++) {\n lookup[chunk.charAt(i)] = k;\n }\n }\n }\n\n var regexp = new RegExp('[' + foreignletters + ']', 'g');\n return function (str) {\n return str.replace(regexp, function (foreignletter) {\n return lookup[foreignletter];\n }).toLowerCase();\n };\n }(); // export\n // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n\n return Sifter;\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/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n module.exports = factory();\n } else {\n root.MicroPlugin = factory();\n }\n})(this, function () {\n var MicroPlugin = {};\n\n MicroPlugin.mixin = function (Interface) {\n Interface.plugins = {};\n /**\n * Initializes the listed plugins (with options).\n * Acceptable formats:\n *\n * List (without options):\n * ['a', 'b', 'c']\n *\n * List (with options):\n * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n *\n * Hash (with options):\n * {'a': { ... }, 'b': { ... }, 'c': { ... }}\n *\n * @param {mixed} plugins\n */\n\n Interface.prototype.initializePlugins = function (plugins) {\n var i, n, key;\n var self = this;\n var queue = [];\n self.plugins = {\n names: [],\n settings: {},\n requested: {},\n loaded: {}\n };\n\n if (utils.isArray(plugins)) {\n for (i = 0, n = plugins.length; i < n; i++) {\n if (typeof plugins[i] === 'string') {\n queue.push(plugins[i]);\n } else {\n self.plugins.settings[plugins[i].name] = plugins[i].options;\n queue.push(plugins[i].name);\n }\n }\n } else if (plugins) {\n for (key in plugins) {\n if (plugins.hasOwnProperty(key)) {\n self.plugins.settings[key] = plugins[key];\n queue.push(key);\n }\n }\n }\n\n while (queue.length) {\n self.require(queue.shift());\n }\n };\n\n Interface.prototype.loadPlugin = function (name) {\n var self = this;\n var plugins = self.plugins;\n var plugin = Interface.plugins[name];\n\n if (!Interface.plugins.hasOwnProperty(name)) {\n throw new Error('Unable to find \"' + name + '\" plugin');\n }\n\n plugins.requested[name] = true;\n plugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n plugins.names.push(name);\n };\n /**\n * Initializes a plugin.\n *\n * @param {string} name\n */\n\n\n Interface.prototype.require = function (name) {\n var self = this;\n var plugins = self.plugins;\n\n if (!self.plugins.loaded.hasOwnProperty(name)) {\n if (plugins.requested[name]) {\n throw new Error('Plugin has circular dependency (\"' + name + '\")');\n }\n\n self.loadPlugin(name);\n }\n\n return plugins.loaded[name];\n };\n /**\n * Registers a plugin.\n *\n * @param {string} name\n * @param {function} fn\n */\n\n\n Interface.define = function (name, fn) {\n Interface.plugins[name] = {\n 'name': name,\n 'fn': fn\n };\n };\n };\n\n var utils = {\n isArray: Array.isArray || function (vArg) {\n return Object.prototype.toString.call(vArg) === '[object Array]';\n }\n };\n return MicroPlugin;\n});","// Mobile Search Functionality\n\ndocument.addEventListener('turbolinks:load', (event) => {\n const mobileSearchActivationBtn = document.getElementById('mobileSearchBtn');\n const mobileSearchBackBtn = document.getElementById('mobileSearchReturnBtn');\n\n if (mobileSearchActivationBtn && mobileSearchBackBtn) {\n const nav = document.querySelector('nav.navbar');\n mobileSearchActivationBtn.addEventListener('click', () => {\n nav.classList.add('mobile-search-active');\n });\n\n mobileSearchBackBtn.addEventListener('click', () => {\n nav.classList.remove('mobile-search-active');\n });\n }\n});\n","(function () {\n const Turbolinks = require('turbolinks');\n let scrollPosition;\n\n document.addEventListener('turbolinks:load', () => {\n if (scrollPosition) {\n window.scrollTo(...scrollPosition);\n scrollPosition = null;\n }\n }, false);\n\n window.reloadTurbolinks = function () {\n scrollPosition = [window.scrollX, window.scrollY];\n Turbolinks.visit(window.location, { action: 'replace' });\n };\n})();\n","var map = {\n\t\"./details-dialog-element.js\": 317\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 = 438;","// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n\nimport { createConsumer } from '@rails/actioncable';\n\nexport default createConsumer();\n","import Vue from 'vue';\n\nexport const EventBus = new Vue();\n","import * as qs from 'qs';\n\n/**\n * @description Construct a URL with query params\n * @example\n * constructURL('/about', { user_id: 1 }).toString();\n * // => '/about?user_id=1'\n *\n * constructURL(window.location.href, { user_ids: [1, 2] }).toString();\n * // => '/pricing?user_ids[]=1&user_ids[]=2' // Rails `params` friendly\n */\nexport function constructURL(string: string, params: { [key: string]: string | string[] | null }) {\n const { url, searchParams } = getURLDetails(string);\n const hash = { ...qs.parse(searchParams.toString()), ...params };\n const sorted = Object.keys(hash)\n .sort()\n .reduce((acc, key) => ({ ...acc, [key]: hash[key] }), {});\n\n url.search = qs.stringify(sorted, { arrayFormat: 'brackets', skipNulls: true });\n return url;\n}\n\n/**\n * @description Compare between two URLs\n */\nexport function isEqual(a: string, b: string) {\n const { url: urlA, searchParams: searchParamsA } = getURLDetails(a);\n const { url: urlB, searchParams: searchParamsB } = getURLDetails(b);\n\n if (urlA.origin !== urlB.origin || urlA.pathname !== urlB.pathname) return false;\n if (searchParamsA.toString() !== searchParamsB.toString()) return false;\n return true;\n}\n\n/**\n * @description Get normalized `url` and `searchParams` from a URL or a string\n */\nexport function getURLDetails(url: string | URL) {\n const baseURL = new URL(url, window.location.href);\n const searchParams = new URLSearchParams(baseURL.search);\n searchParams.sort();\n\n return { url: baseURL, searchParams };\n}\n","import { metaValue } from 'helpers/dom-helper';\nimport consumer from './consumer';\n\nexport default class CalendarEventChannel {\n constructor(element) {\n this.element = element; // Impulse calendar instance\n const { currentOrgId } = this.element;\n\n this.channel = consumer.subscriptions.create(\n {\n channel: 'CalendarEventChannel',\n organization_id: currentOrgId,\n },\n {\n received: this.received.bind(this),\n }\n );\n }\n\n received(payload) {\n if (payload.cid === this.cid) return; // Don't broadcast to the same client.\n\n switch (payload.action) {\n case 'create':\n this.element.eventCreateDelegate.addEvent(payload.event);\n break;\n case 'update':\n this.updateEvent(payload);\n break;\n case 'destroy':\n this.destroyEvent(payload);\n break;\n }\n }\n\n /**\n * @private\n */\n updateEvent({ event }) {\n const delegate = this.element.eventModifyDelegate;\n switch (event.metadata.update_type) {\n case '1': // Current\n delegate.updateCurrent(event);\n break;\n case '2': // This and all following\n delegate.updateThisAndFollowing(event);\n break;\n default: // All events\n delegate.updateAll(event);\n break;\n }\n }\n\n /**\n * @private\n */\n destroyEvent({ event, metadata }) {\n const delegate = this.element.eventDestroyDelegate;\n switch (metadata.removal_type) {\n case '1': // Current\n delegate.destroyCurrent(event.uid);\n break;\n case '2': // This and all following\n delegate.destroyThisAndFollowing(event.start_time, event.id);\n break;\n default:\n delegate.destroyAll(event.id);\n break;\n }\n }\n\n /**\n * The fullcalendar instance.\n */\n get calendar() {\n return this.element.calendar;\n }\n\n /**\n * The client id.\n * @returns {string|null}\n */\n get cid() {\n return metaValue('client-id');\n }\n\n /**\n * The current org id\n * @returns {string|null}\n */\n get orgid() {\n return metaValue('current-org-id');\n }\n}\n","/**\n * CalendarEventsChannel subscribes to the CalendarEventsChannel on the server to receive real-time event updates.\n * When an event is received, it checks if the event is already present in the calendar and adds it if it is new.\n */\nimport { metaValue } from 'helpers/dom-helper';\nimport consumer from './consumer';\n\nexport default class CalendarEventsChannel {\n /**\n * Initializes a new instance of CalendarEventsChannel.\n * Subscribes to the channel and binds the received method to handle incoming events.\n */\n constructor(element) {\n this.channel = consumer.subscriptions.create(\n {\n channel: 'CalendarEventsChannel',\n organization_id: this.orgid,\n },\n {\n received: this.received.bind(this),\n\n // Add new acknowledge method to send acknowledgments back to server\n acknowledge(messageId) {\n this.perform('acknowledge', { message_id: messageId });\n }\n }\n );\n }\n /**\n * Handles received events by checking if each event is already present in the calendar.\n * Adds new events to the calendar. Logs an error if the calendar is not defined.\n *\n * @param {Object} data - Contains the array of events.\n * @param {Array} [data.events] - List of event objects to process.\n * @param {String} [data.event] - The id of the event in question to be updated.\n * @param {String} [data.icons] - The icons HTML to update on the calendar.\n * @param {String} [data.message_id] - Unique ID for acknowledging receipt.\n */\n received({ events = null, event = null, icons = null, cid, message_id = null } = {}) {\n // First, acknowledge receipt if a message_id is present\n if (message_id) {\n this.channel.acknowledge(message_id);\n }\n\n $('#calendarMask').hide();\n if (cid !== this.cid) return; // Only broadcast to the same client.\n var dis_cal = this.calendar;\n this.calendar.batchRendering(function() {\n if (Array.isArray(events)) {\n for (const event of events) {\n const existingEvent = dis_cal.getEventById(event.id);\n if (existingEvent) {\n existingEvent.remove();\n }\n dis_cal.addEvent(event);\n }\n }\n });\n\n if (event && icons) {\n const iconsContainer = $(`div.fc-event[data-event-id=\"${event}\"]`).find('.fc-event-icons');\n if (iconsContainer.length) {\n iconsContainer.html(icons); // Insert icons into the child div\n } else {\n // DONT ERROR. They could have changed views which would cause this. just ignore it.\n }\n }\n }\n\n /**\n * Getter for the calendar object.\n *\n * @return {Object|null} The calendar object from the global window, or null if not defined.\n */\n get calendar() {\n return window.calendar;\n }\n\n /**\n * The client id.\n * @returns {string|null}\n */\n get cid() {\n return metaValue('client-id');\n }\n\n /**\n * The current org id\n * @returns {string|null}\n */\n get orgid() {\n return metaValue('current-org-id')\n }\n\n}\n","/**\n * CalendarResourcesChannel subscribes to the CalendarResourcesChannel on the server to receive real-time resource updates.\n * When a resource is received, it checks if the resource is already present in the calendar and adds it if it is new.\n */\nimport consumer from './consumer';\nimport {metaValue} from \"helpers/dom-helper\";\nexport default class CalendarResourcesChannel {\n /**\n * Initializes a new instance of CalendarResourcesChannel.\n * Subscribes to the channel and binds the received method to handle incoming resources.\n */\n constructor(element) {\n this.channel = consumer.subscriptions.create(\n {\n channel: 'CalendarResourcesChannel',\n organization_id: this.orgid,\n },\n {\n received: this.received.bind(this),\n }\n );\n }\n /**\n * Handles received resources by checking if each event is already present in the calendar.\n * Adds new resources to the calendar. Logs an error if the calendar is not defined.\n *\n * @param {Object} eventData - Contains the array of events.\n * @param {Array} eventData.events - List of event objects to process.\n */\n received(payload) {\n if (payload.cid !== this.cid) return; // Don't broadcast resources to other clients.\n if (window?.calendarSettings?.mainCalendar && window?.calendarSettings?.isAdmin) {\n for (const resource of payload.resources) {\n if (!this.calendar.getResourceById(resource.id)) {\n this.calendar.addResource(resource);\n }\n }\n }\n }\n /**\n * Getter for the calendar object.\n *\n * @return {Object|null} The calendar object from the global window, or null if not defined.\n */\n get calendar() {\n return window.calendar;\n }\n\n /**\n * The client id.\n * @returns {string|null}\n */\n get cid() {\n return metaValue('client-id');\n }\n\n /**\n * The current org id\n * @returns {string|null}\n */\n get orgid() {\n return metaValue('current-org-id')\n }\n}\n","export function camelToSnakeCase(str) {\n return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);\n}\n\nexport function replaceCamelKeyWithSnake(objects) {\n objects.forEach((object) => {\n Object.keys(object).forEach((key) => {\n const snake = camelToSnakeCase(key);\n if (key !== snake) {\n Object.defineProperty(object, snake, Object.getOwnPropertyDescriptor(object, key));\n delete object[key];\n }\n });\n });\n return objects;\n}\n\nexport function mungeAllowedParams(objects, allowed) {\n objects.forEach((object) => {\n Object.keys(object).forEach((key) => {\n if (!allowed.includes(key)) delete object[key];\n });\n });\n return objects;\n}\n\nexport const nextUntil = (elem, endId) => {\n // Setup siblings array\n const siblings = [];\n\n // Get the next sibling element\n elem = elem.nextElementSibling;\n\n // As long as a sibling exists\n while (elem) {\n // Break if we match the passed HTML element id\n if (elem.getAttribute('id') === endId) {\n break;\n }\n\n // Otherwise, push it to the siblings array\n siblings.push(elem);\n\n // Get the next sibling element\n elem = elem.nextElementSibling;\n }\n\n return siblings;\n};\n\nexport function clone(array) {\n return JSON.parse(JSON.stringify(array));\n}\n\nexport const closeOnEsc = (callback) => {\n const close = (e) => {\n if (e.keyCode === 27) {\n callback();\n }\n };\n window.addEventListener('keydown', close);\n // return () => window.removeEventListener('keydown', close);\n};\n\nexport function truncateString(str, num) {\n if (str.length > num) {\n return `${str.slice(0, num)}...`;\n }\n return str;\n}\n\n/**\n * @param {number} num\n * @link https://stackoverflow.com/questions/13627308/add-st-nd-rd-and-th-ordinal-suffix-to-a-number\n * @returns {string}\n */\nexport function ordinal(num) {\n return ['st', 'nd', 'rd'][((((num + 90) % 100) - 10) % 10) - 1] || 'th';\n}\n\nexport function brandColors() {\n return {\n ambikiBlue: '#2948a0',\n ambikiSalmon: '#f18e69',\n ambikiPink: '#ef3dc0',\n ambikiTurquoise: '#3cceb7',\n ambikiYellow: '#f1b241',\n };\n}\n","export const c = Object.freeze({\n IDLE: 'idle',\n CREATING_SESSION: 'creating-session',\n SYNCING_PATIENTS: 'syncing-patients',\n READY: 'ready',\n ERROR: 'error',\n});\n\nexport const LOCAL_STORAGE_KEY = 'auto-join';\n","/* eslint-disable class-methods-use-this */\nimport { Controller } from '@hotwired/stimulus';\nimport { metaValue } from 'helpers/dom-helper';\n\nexport default class extends Controller {\n /**\n * @description Find out if the page is still in preview mode. This happens when a user transitions from one page\n * to another via turbolinks\n * @returns {boolean}\n */\n get isTurbolinksPreview() {\n return document.documentElement.hasAttribute('data-turbolinks-preview');\n }\n\n /**\n * @description Get current user's tzinfo\n */\n get tzinfo() {\n return metaValue('current-user-tzinfo') || Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /**\n * @description Get current_user's current_org id\n * @returns {string}\n */\n get currentOrgId() {\n return metaValue('current-org-id') || '';\n }\n}\n","import { observe } from 'helpers/dom-helper';\n\n/**\n * Initializes the bootstrap tooltip component when element is connected to the DOM and disposes it when element is\n * removed from the DOM.\n */\nobserve('[data-toggle=\"tooltip\"]', {\n connected(element) {\n // Added boundary window to prevent flickering when a tooltip\n // is within a responsive table (Kevin 10/2022)\n // https://stackoverflow.com/a/62076857\n if ($.isFunction($('[data-toggle=\"tooltip\"]').tooltip)) {\n $(element).tooltip({ boundary: 'window' });\n }\n },\n disconnected(element) {\n if ($.isFunction($('[data-toggle=\"tooltip\"]').tooltip)) {\n $(element).tooltip('dispose');\n }\n },\n});\n","var map = {\n\t\"./FiraSans-Bold.ttf\": 860,\n\t\"./FiraSans-Medium.ttf\": 861,\n\t\"./FiraSans-Regular.ttf\": 862,\n\t\"./FiraSans-SemiBold.ttf\": 863,\n\t\"./KumbhSans-Bold.ttf\": 864,\n\t\"./KumbhSans-Light.ttf\": 865,\n\t\"./KumbhSans-Regular.ttf\": 866,\n\t\"./NotoEmoji.ttf\": 867,\n\t\"./NotoSerif-Regular.ttf\": 868,\n\t\"./Quicksand-Bold.ttf\": 869,\n\t\"./Quicksand-Light.ttf\": 870,\n\t\"./Quicksand-Medium.ttf\": 871,\n\t\"./Quicksand-Regular.ttf\": 872,\n\t\"./Quicksand-SemiBold.ttf\": 873,\n\t\"./Roboto-Black.ttf\": 874,\n\t\"./Roboto-BlackItalic.ttf\": 875,\n\t\"./Roboto-Bold.ttf\": 876,\n\t\"./Roboto-BoldItalic.ttf\": 877,\n\t\"./Roboto-Italic.ttf\": 878,\n\t\"./Roboto-Light.ttf\": 879,\n\t\"./Roboto-LightItalic.ttf\": 880,\n\t\"./Roboto-Medium.ttf\": 881,\n\t\"./Roboto-MediumItalic.ttf\": 882,\n\t\"./Roboto-Regular.ttf\": 883,\n\t\"./Roboto-Thin.ttf\": 884,\n\t\"./Roboto-ThinItalic.ttf\": 885,\n\t\"./SeptemberMornings.ttf\": 886\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 = 859;","module.exports = __webpack_public_path__ + \"media/fonts/FiraSans-Bold-3919333f2e366bb4341e09929ea31d60.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/FiraSans-Medium-9e604b4c5b46337e1a283d9062b25c63.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/FiraSans-Regular-1c0bf0728b51cb9f2ddc01b897da06d3.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/FiraSans-SemiBold-b6ffb4927db20d43cb135e2c4d1679f8.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/KumbhSans-Bold-48869b3d0d3794995f60990fc2edaff9.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/KumbhSans-Light-2c0aa226c795f0235c96bebb45a262c5.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/KumbhSans-Regular-7473a8f760dd1e1195674a849e94aa45.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/NotoEmoji-0065ce9f4db9c1e5b7f1fc9df70c1fb7.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/NotoSerif-Regular-ebe1e45b05b879a9ea1f019d27a4a1a3.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Quicksand-Bold-76f20c55b4aa564ea883173598963b95.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Quicksand-Light-d08d0358c31ea6202f2af102ddfc1c6d.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Quicksand-Medium-74eb5c183e5f25c68c2e951c434da7d9.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Quicksand-Regular-cffc279022b0d87c571dff78071828f9.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Quicksand-SemiBold-d4f6bc51411626477b056f8d63edbd2f.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Black-1224b64c95f897e542d9bfdd3861b0ed.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-BlackItalic-279b831d1cc21955a97a4b73e07d204e.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Bold-4f39c5796e60c9d8e7327a00e9a4442e.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-BoldItalic-ad2445ca4e46908fbf7bb4e0fff71139.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Italic-2a1b89d7506c26fb931b47bbc5d8c926.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Light-0cea39826bd36bbfe33076c544e3a1af.ttf\";","/**\n * Checks if `value` is a valid hex code.\n * @example\n *\n * isHexCode('#000')\n * // => true\n *\n * isHexCode('#000000')\n * // => true\n *\n * isHexCode('#zzz')\n * // => false\n *\n * isHexCode('#YYY')\n * // => false\n */\nexport default function isHexCode(value: string): boolean {\n return /^#[0-9a-f]{3}(?:[0-9a-f]{3})?$/i.test(value);\n}\n","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-LightItalic-f3afeb2d078386350b6657727c8de98e.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Medium-13a29228654d5c5ec9c482a267efa4af.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-MediumItalic-17d0cac04a3f124945e14d55323a71d5.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Regular-03523cf578d69fa923226ff457b92d90.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Thin-c38fab23fc1c36894f10dd8014479b53.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-ThinItalic-082b9e840d3a498e8a3c8119f3a7132a.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/SeptemberMornings-4024cb0ddd4efab6cba150ef7d8045dc.ttf\";","// 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","var map = {\n\t\"./calendar_event_channel.js\": 665,\n\t\"./calendar_events_channel.js\": 666,\n\t\"./calendar_resources_channel.js\": 668,\n\t\"./notification_channel.js\": 422,\n\t\"./reactions_channel.js\": 226,\n\t\"./room_channel.js\": 365,\n\t\"./room_chat_channel.js\": 227,\n\t\"./room_session_channel.js\": 366,\n\t\"./room_visitor_channel.js\": 171,\n\t\"./visual_schedule_channel.js\": 202\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 = 888;","class RemoveFields {\n // This executes when the function is instantiated.\n constructor(options = {}) {\n this.iterateLinks();\n this.options = options;\n }\n\n iterateLinks = () => {\n // There is another way to stop delete based off the class added.\n // It is useful for having multiple of the same kind of add field in the same form.\n // Please see the STOP DELETE OPTION 2: START section.\n const firstDelete = $('.remove_fields');\n if (firstDelete.length) {\n if (firstDelete[0].getAttribute('data-no-last-delete')) {\n firstDelete[0].setAttribute('disabled', true);\n firstDelete.addClass('disabled');\n }\n }\n // Use event delegation to ensure any fields added after the page loads are captured.\n $(document).on('click', '.remove_fields', (e) => {\n this.handleClick(e.target, e);\n });\n };\n\n handleClick = (link, e) => {\n // Stop the function from executing if a link or event were not passed into the function.\n if (!link || !e) return;\n // Prevent the browser from following the URL.\n e.preventDefault();\n // Find the parent wrapper for the set of nested fields.\n const fieldParent = link.closest('.nested-fields');\n // default to no-data-target-found as undefined target could be passed somewhere in the dom with a missing variable\n const target = link.getAttribute('data-target') || 'no-data-target-found';\n const dataElement = document.querySelector(`[data-fields='${target}']`);\n\n // Diagnosis codes validation: start\n const selectComponents = fieldParent.querySelectorAll('[alert-id]');\n\n if (selectComponents) {\n const alertIds = [];\n selectComponents.forEach((alert) => {\n alertIds.push(alert.getAttribute('alert-id'));\n });\n\n const deleteClicked = new CustomEvent('deleteClicked', {\n detail: {\n alertIds,\n },\n });\n\n document.dispatchEvent(deleteClicked);\n }\n // Diagnosis codes validation: end\n\n // STOP DELETE OPTION 2: START\n if (dataElement && link.classList.contains('no_last_delete')) {\n const removeButtons = dataElement.querySelectorAll('.nested-fields');\n const visibleElements = Array.from(removeButtons).filter(\n (element) => element.style.display !== 'none' && getComputedStyle(element).display !== 'none'\n );\n\n const removeLinks = dataElement.querySelectorAll('.remove_fields.no_last_delete');\n\n if (removeLinks.length > 0) {\n removeLinks[0].textContent = '';\n }\n\n if (visibleElements.length <= 1) return;\n }\n // STOP DELETE OPTION 2: END\n\n // Remove required attribute from fields otherwise that will cause\n // the following error \"An invalid form control with name='' is not focusable\"\n // when the user tries to click the form submission button.\n // https://stackoverflow.com/questions/22148080/an-invalid-form-control-with-name-is-not-focusable\n const requiredElements = fieldParent.querySelectorAll('[required]');\n for (let i = 0; i < requiredElements.length; i += 1) {\n const element = requiredElements[i];\n element.required = false;\n }\n // toggle button for has-one-relationship\n if (dataElement && dataElement.querySelectorAll('.add_fields.has-one-relationship')[0]) {\n dataElement.querySelectorAll('.add_fields.has-one-relationship')[0].classList.toggle('d-none');\n }\n // If there is a parent wrapper, find the hidden delete field.\n const deleteField = fieldParent ? fieldParent.querySelector('input[type=\"hidden\"]') : null;\n // If there is a delete field, update the value to `1` and hide the corresponding nested fields.\n if (deleteField) {\n deleteField.value = 1;\n fieldParent.style.display = 'none';\n const nestedFields = Array.from(document.querySelectorAll('.nested-fields')).filter(\n (f) => f.style.display !== 'none'\n );\n if (!nestedFields.length) $('.nested-field-save').hide();\n } else if (fieldParent.dataset.destroy) {\n fieldParent.remove();\n }\n };\n}\n\n// Wait for turbolinks to load, otherwise `document.querySelectorAll()` won't work\nwindow.addEventListener('turbolinks:load', () => new RemoveFields());\n","var map = {\n\t\"./command-palette-element.js\": 313,\n\t\"./command-palette/command-palette-group-element.js\": 314,\n\t\"./command-palette/command-palette-header-element.js\": 315,\n\t\"./command-palette/command-palette-item-element.js\": 316,\n\t\"./command-palette/command-palette-stack-element.js\": 325\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 = 914;","// Config and trix before-initialize listeners set up specifically for Goal Editor\nimport { goalsTrixInitialize } from '../goals-editor';\n\nconst GoalEditorSetup = (trix) => {\n // Create callbacks\n document.addEventListener('trix-initialize', goalsTrixInitialize);\n\n trix.config.textAttributes['gc-who'] = {\n tagName: 'gc-who',\n };\n trix.config.textAttributes['gc-skill'] = {\n tagName: 'gc-skill',\n };\n trix.config.textAttributes['gc-context'] = {\n tagName: 'gc-context',\n };\n trix.config.textAttributes['gc-measurable'] = {\n tagName: 'gc-measurable',\n };\n trix.config.textAttributes['gc-reason'] = {\n tagName: 'gc-reason',\n };\n trix.config.textAttributes['gc-timeframe'] = {\n tagName: 'gc-timeframe',\n };\n};\n\nexport default GoalEditorSetup;\n","import { GoalEditorSetup } from './trix-editor-configs';\n\nconst trix = require('trix');\n\nwindow.addEventListener('trix-before-initialize', (event) => {\n const goalEditor = document.getElementById('goal-editor');\n if (goalEditor) {\n GoalEditorSetup(trix, event);\n }\n});\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\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});","// eslint-disable-next-line import/prefer-default-export\nexport function brandedId() {\n return `ambiki-${Math.random().toString().slice(2, 6)}`;\n}\n"],"sourceRoot":""}